Ë
    T^(h’3 ã                  óä  — d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	m
Z
 ddlZddlZddlmZ ddlmZmZmZ dd	lmZmZmZmZmZ dd
lmZmZ ddlmZm Z m!Z!m"Z"m#Z# ddl$m%Z%  e"jL                  e'«      Z(dZ)dZ*dZ+dZ,e G d„ de«      «       Z-d„ Z.d„ Z/	 dG	 	 	 	 	 	 	 	 	 dHd„Z0dIdJd„Z1 G d„ dejd                  jf                  «      Z4 G d„ dejd                  jj                  «      Z6 G d„ dejd                  jf                  «      Z7 G d„ dejd                  jf                  «      Z8 G d „ d!ejd                  jf                  «      Z9 G d"„ d#ejd                  jf                  «      Z: G d$„ d%ejd                  jf                  «      Z; G d&„ d'ejd                  jf                  «      Z< G d(„ d)e<«      Z= G d*„ d+ejd                  jf                  «      Z> G d,„ d-ejd                  jf                  «      Z? G d.„ d/ejd                  jf                  «      Z@ G d0„ d1ejd                  jf                  «      ZA G d2„ d3ejd                  jf                  «      ZB G d4„ d5ejd                  jf                  «      ZC G d6„ d7ejd                  jf                  «      ZDe G d8„ d9ejd                  jf                  «      «       ZE G d:„ d;e«      ZFd<ZGd=ZH e d>eG«       G d?„ d@eF«      «       ZI e dAeG«       G dB„ dCeF«      «       ZJ G dD„ dEeF«      ZKg dF¢ZLy)KzTensorFlow Wav2Vec2 model.é    )ÚannotationsN)Ú	dataclass)ÚAnyÚOptionalÚTupleÚUnioné   )Úget_tf_activation)ÚTFBaseModelOutputÚTFCausalLMOutputÚTFSequenceClassifierOutput)ÚTFPreTrainedModelÚget_initializerÚkerasÚkeras_serializableÚunpack_inputs)Ú
shape_listÚstable_softmax)ÚModelOutputÚadd_start_docstringsÚ%add_start_docstrings_to_model_forwardÚloggingÚreplace_return_docstringsé   )ÚWav2Vec2Configé   zfacebook/wav2vec2-base-960hr   g    „×—Ác                  óJ   — e Zd ZU dZdZded<   dZded<   dZded<   dZded<   y)	ÚTFWav2Vec2BaseModelOutputa1  
    Output type of [`TFWav2Vec2BaseModelOutput`], with potential hidden states and attentions.

    Args:
        last_hidden_state (`tf.Tensor` of shape `(batch_size, sequence_length, hidden_size)`):
            Sequence of hidden-states at the output of the last layer of the model.
        extract_features (`tf.Tensor` of shape `(batch_size, sequence_length, conv_dim[-1])`):
            Sequence of extracted feature vectors of the last convolutional layer of the model.
        hidden_states (`tuple(tf.Tensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
            Tuple of `tf.Tensor` (one for the output of the embeddings + one for the output of each layer) of shape
            `(batch_size, sequence_length, hidden_size)`.

            Hidden-states of the model at the output of each layer plus the initial embedding outputs.
        attentions (`tuple(tf.Tensor)`, *optional*, returned when `output_attentions=True` is passed or when `config.output_attentions=True`):
            Tuple of `tf.Tensor` (one for each layer) of shape `(batch_size, num_heads, sequence_length,
            sequence_length)`.

            Attentions weights after the attention softmax, used to compute the weighted average in the self-attention
            heads.
    NzOptional[tf.Tensor]Úlast_hidden_stateÚextract_featureszTuple[tf.Tensor] | NoneÚhidden_statesÚ
attentions)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r    r!   r"   © ó    úo/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/wav2vec2/modeling_tf_wav2vec2.pyr   r   :   s7   … ñð* .2ÐÐ*Ó1Ø,0ÐÐ)Ó0Ø-1€MÐ*Ó1Ø*.€JÐ'Ô.r)   r   c                óâ   — t         j                  j                  t         j                  j	                  t        | «      dd«      «       }t         j                  j                  | |z   |«      \  }}|S )zÂ
    Categorical sampling without replacement is currently not implemented. The gumbel-max trick will do for now - see
    https://github.com/tensorflow/tensorflow/issues/9260 for more info
    r   r   )ÚtfÚmathÚlogÚrandomÚuniformr   ÚnnÚtop_k)ÚdistributionÚnum_samplesÚzÚ_Úindicess        r*   Ú_sample_without_replacementr8   W   sS   € ô
 
�‰�‰”R—Y‘Y×&Ñ&¤z°,Ó'?ÀÀAÓFÓ	GÐG€AÜ—‘—‘˜\¨AÑ-¨{Ó;�J€A€wØ€Nr)   c           
     ó   — t        |«      }t        j                  t        j                  t        j                  t        j
                  |d   «      d¬«      |«      ddg«      }t        j                  t        j                  |t        j                  |ddg«      gd«      «      }t        j                  |t        j                  | dg«      |«      S )zT
    Scatter function as in PyTorch with indices in format (batch_dim, indixes)
    r   éÿÿÿÿ©Úaxisr   )	r   r,   ÚreshapeÚbroadcast_toÚexpand_dimsÚrangeÚ	transposeÚconcatÚ
scatter_nd)ÚvaluesÚbatch_indicesÚoutput_shapeÚindices_shapeÚbroad_casted_batch_dimsÚpair_indicess         r*   Ú _scatter_values_on_batch_indicesrJ   a   s¡   € ô ˜}Ó-€Mä Ÿj™jÜ
�‰œŸ™¤r§x¡x°¸aÑ0@Ó'AÈÔKÈ]Ó[Ð^_ÐacÐ]dóÐô —<‘<¤§	¡	Ð+BÄBÇJÁJÈ}Ð_`ÐbdÐ^eÓDfÐ*gÐijÓ kÓl€Lä�=‰=˜¤r§z¡z°&¸2¸$Ó'?ÀÓNÐNr)   c           	     óx  — | \  }}|dk  rt        d«      ‚t        j                  j                  ||d|› d|› d�¬«       |t        j                  |t        j
                  «      z  |z  t        j                  j                  d«      z   }t        j                  ||«      }t        j                  |t        j                  «      }t        j                  j                  ||z  |«      }t        j                  |«      }t        j                  ||ft        j                  ¬«      }t        j                  |||dz
  z
  f«      }t        ||«      }	t        j                   |	d	«      }	t        j"                  |	dd|f«      }	t        j$                  |	|||z  f«      }	t        j&                  |«      t        j(                  t        j(                  d
d
…f   }
t        j"                  |
||df«      }
t        j$                  |
|||z  f«      }
|	|
z   }	t+        t        j,                  |	«      |	t        j.                  |«      «      }|S )aš  
    Computes random mask spans for a given shape

    Args:
        shape: the shape for which to compute masks.
            should be of size 2 where first element is batch size and 2nd is timesteps
        attention_mask: optional padding mask of the same size as shape, which will prevent masking padded elements
        mask_prob:
            probability for each token to be chosen as start of the span to be masked. this will be multiplied by
            number of timesteps divided by length of mask span to mask approximately this percentage of all elements.
            however due to overlaps, the actual number will be smaller (unless no_overlap is True)
        mask_length: size of the mask
        min_masks: minimum number of masked spans

    Adapted from [fairseq's
    data_utils.py](https://github.com/pytorch/fairseq/blob/e0788f7007a8473a76db573985031f3c94201e79/fairseq/data/data_utils.py#L376).
    r   z&`mask_length` has to be bigger than 0.zO`mask_length` has to be smaller than `sequence_length`, but got `mask_length`: z and `sequence_length`: ú`©Úmessage©r   ©Údtyper:   N)Ú
ValueErrorr,   Ú	debuggingÚassert_lessÚcastÚfloat32r/   r0   ÚmaximumÚint32r-   ÚminimumÚsqueezeÚzerosÚonesr8   r?   Útiler=   r@   ÚnewaxisrJ   Ú	ones_likeÚshape)r`   Ú	mask_probÚmask_lengthÚ	min_masksÚ
batch_sizeÚsequence_lengthÚnum_masked_spansÚspec_aug_maskÚuniform_distÚspec_aug_mask_idxsÚoffsetss              r*   Ú_compute_mask_indicesrk   p   s  € ð. #(Ñ€J�à�Q‚ÜÐAÓBÐBä‡L�L×ÑØØà]Ð^iÐ]jð k#Ø#2Ð"3°1ð6ð	 ô ð !¤2§7¡7¨?¼B¿J¹JÓ#GÑGÈ+ÑUÔXZ×XaÑXa×XiÑXiÐjnÓXoÑoÐÜ—z‘zÐ"2°IÓ>ÐÜ—w‘wÐ/´·±Ó:Ðô —w‘w—‘ ¸+Ñ'EÐGWÓXÐÜ—z‘zÐ"2Ó3Ðô —H‘H˜j¨/Ð:Ä"Ç(Á(ÔK€Mô —7‘7˜J¨¸;È¹?Ñ(KÐLÓM€Lô 5°\ÐCSÓTÐô Ÿ™Ð(:¸BÓ?ÐÜŸ™Ð!3°a¸¸KÐ5HÓIÐÜŸ™Ð$6¸ÐEUÐXcÑEcÐ8dÓeÐä�h‰h�{Ó#¤B§J¡J´·
±
ºAÐ$=Ñ>€GÜ�g‰g�g 
Ð,<¸aÐ@ÓA€GÜ�j‰j˜ :Ð/?À+Ñ/MÐ"NÓO€Gà+¨gÑ5Ðô 5Ü
�‰Ð'Ó(Ð*<¼b¿h¹hÀ}Ó>Uó€Mð Ðr)   c                óø   — t        | «      d   }|�|n|}t        j                  d«      }t        j                  | |j                  ¬«      } t        j
                  | dd…dddd…f   dd|df«      }||z
  t        z  S )z_
    Expands attention_mask from `[bsz, seq_len]` to `[bsz, 1, tgt_seq_len, src_seq_len]`.
    r   Ng      ð?rP   )r   r,   ÚconstantrU   rQ   r]   ÚLARGE_NEGATIVE)ÚmaskÚtgt_lenÚsrc_lenÚone_cstÚexpanded_masks        r*   Ú_expand_maskrt   »   sx   € ô ˜Ó˜qÑ!€GØ Ð,‰g°'€GÜ�k‰k˜#Ó€GÜ�7‰7�4˜wŸ}™}Ô-€DÜ—G‘G˜D¢ D¨$²Ð!1Ñ2°Q¸¸7ÀAÐ4FÓG€Mà�mÑ#¤~Ñ5Ð5r)   c                  óÈ   ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zˆ fd„Zd„ Zˆ fd„Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚTFWav2Vec2GroupNormzp
    From tensorflow-addons https://www.tensorflow.org/addons/api_docs/python/tfa/layers/GroupNormalization
    c                óH  •— t        ‰| �  di |¤Ž d| _        || _        || _        || _        || _        || _        t        j                  j                  |«      | _        t        j                  j                  |«      | _        t        j                  j                  |«      | _        t        j                  j                  |	«      | _        t        j                   j                  |
«      | _        t        j                   j                  |«      | _        | j'                  «        y )NTr(   )ÚsuperÚ__init__Úsupports_maskingÚgroupsr<   ÚepsilonÚcenterÚscaler   ÚinitializersÚgetÚbeta_initializerÚgamma_initializerÚregularizersÚbeta_regularizerÚgamma_regularizerÚconstraintsÚbeta_constraintÚgamma_constraintÚ_check_axis)Úselfr{   r<   r|   r}   r~   r�   r‚   r„   r…   r‡   rˆ   ÚkwargsÚ	__class__s                €r*   ry   zTFWav2Vec2GroupNorm.__init__Í   sç   ø€ ô 	‰ÑÑ"˜6Ò"Ø $ˆÔØˆŒØˆŒ	ØˆŒØˆŒØˆŒ
Ü %× 2Ñ 2× 6Ñ 6Ð7GÓ HˆÔÜ!&×!3Ñ!3×!7Ñ!7Ð8IÓ!JˆÔÜ %× 2Ñ 2× 6Ñ 6Ð7GÓ HˆÔÜ!&×!3Ñ!3×!7Ñ!7Ð8IÓ!JˆÔÜ$×0Ñ0×4Ñ4°_ÓEˆÔÜ %× 1Ñ 1× 5Ñ 5Ð6FÓ GˆÔØ×ÑÕr)   c                óþ   •— | j                  |«       | j                  |«       | j                  |«       | j                  |«       | j	                  |«       | j                  |«       d| _        t        ‰| �!  |«       y )NT)	Ú_check_if_input_shape_is_noneÚ'_set_number_of_groups_for_instance_normÚ_check_size_of_dimensionsÚ_create_input_specÚ_add_gamma_weightÚ_add_beta_weightÚbuiltrx   Úbuild©rŠ   Úinput_shaperŒ   s     €r*   r•   zTFWav2Vec2GroupNorm.buildë   sj   ø€ Ø×*Ñ*¨;Ô7Ø×4Ñ4°[ÔAØ×&Ñ& {Ô3Ø×Ñ Ô,à×Ñ˜{Ô+Ø×Ñ˜kÔ*ØˆŒ
Ü‰‰�kÕ"r)   c                ó4  — t         j                  j                  |«      }t        j                  |«      }| j                  |||«      \  }}| j                  ||«      }|| j                     | j                  z  dk(  }|st        j                  ||«      }|S |}|S ©Nr   )
r   ÚbackendÚ	int_shaper,   r`   Ú_reshape_into_groupsÚ_apply_normalizationr<   r{   r=   )	rŠ   Úinputsr—   Útensor_input_shapeÚreshaped_inputsÚgroup_shapeÚnormalized_inputsÚis_instance_normÚoutputss	            r*   ÚcallzTFWav2Vec2GroupNorm.callö   s—   € Ü—m‘m×-Ñ-¨fÓ5ˆÜŸX™X fÓ-Ðà'+×'@Ñ'@ÀÈÐVhÓ'iÑ$ˆ˜à ×5Ñ5°oÀ{ÓSÐà'¨¯	©	Ñ2°d·k±kÑAÀaÑGÐÙÜ—j‘jÐ!2Ð4FÓGˆGð ˆð (ˆGàˆr)   c                ó€  •— | j                   | j                  | j                  | j                  | j                  t
        j                  j                  | j                  «      t
        j                  j                  | j                  «      t
        j                  j                  | j                  «      t
        j                  j                  | j                  «      t
        j                  j                  | j                  «      t
        j                  j                  | j                  «      dœ}t         ‰| �E  «       }i |¥|¥S )N)r{   r<   r|   r}   r~   r�   r‚   r„   r…   r‡   rˆ   )r{   r<   r|   r}   r~   r   r   Ú	serializer�   r‚   rƒ   r„   r…   r†   r‡   rˆ   rx   Ú
get_config)rŠ   ÚconfigÚbase_configrŒ   s      €r*   r¨   zTFWav2Vec2GroupNorm.get_config  sè   ø€ à—k‘kØ—I‘IØ—|‘|Ø—k‘kØ—Z‘ZÜ %× 2Ñ 2× <Ñ <¸T×=RÑ=RÓ SÜ!&×!3Ñ!3×!=Ñ!=¸d×>TÑ>TÓ!UÜ %× 2Ñ 2× <Ñ <¸T×=RÑ=RÓ SÜ!&×!3Ñ!3×!=Ñ!=¸d×>TÑ>TÓ!UÜ$×0Ñ0×:Ñ:¸4×;OÑ;OÓPÜ %× 1Ñ 1× ;Ñ ;¸D×<QÑ<QÓ Rñ
ˆô ‘gÑ(Ó*ˆØ(�+Ð( Ð(Ð(r)   c                ó   — |S ©Nr(   ©rŠ   r—   s     r*   Úcompute_output_shapez(TFWav2Vec2GroupNorm.compute_output_shape  s   € ØÐr)   c                óš  — t        t        |«      «      D �cg c]  }||   ‘Œ	 }}|| j                     | j                  z  dk(  }|s~|| j                     | j                  z  || j                  <   |j	                  | j                  | j                  «       t        j                  |«      }t        j                  ||«      }||fS ||fS c c}w r™   )r@   Úlenr<   r{   Úinsertr,   Ústackr=   )rŠ   rž   r—   rŸ   Úir¡   r£   r    s           r*   rœ   z(TFWav2Vec2GroupNorm._reshape_into_groups  s·   € Ü6;¼CÀÓ<LÓ6MÖN°Ð)¨!Ó,ÐNˆÐNØ'¨¯	©	Ñ2°d·k±kÑAÀaÑGÐÙØ%0°·±Ñ%;¸t¿{¹{Ñ%JˆK˜Ÿ	™	Ñ"Ø×Ñ˜tŸy™y¨$¯+©+Ô6ÜŸ(™( ;Ó/ˆKÜ Ÿj™j¨°Ó=ˆOØ" KÐ/Ð/à˜;Ð&Ð&ùò Os   —Cc                ó6  — t         j                  j                  |«      }t        t	        dt        |«      «      «      }|| j                     | j                  z  dk(  }|s!| j                  dk(  rdn| j                  dz
  }n | j                  dk(  rdn| j                  dz
  }|j                  |«       t        j                  j                  ||d¬«      \  }}| j                  |«      \  }	}
t        j                  j                  ||||	|
| j                  ¬«      }|S )Nr   r:   éþÿÿÿT)Úkeepdims)ÚmeanÚvariancer~   ÚoffsetÚvariance_epsilon)r   rš   r›   Úlistr@   r°   r<   r{   Úpopr,   r1   ÚmomentsÚ_get_reshaped_weightsÚbatch_normalizationr|   )rŠ   r    r—   r¡   Úgroup_reduction_axesr£   r<   r·   r¸   ÚgammaÚbetar¢   s               r*   r�   z(TFWav2Vec2GroupNorm._apply_normalization&  s÷   € Ü—m‘m×-Ñ-¨oÓ>ˆÜ#¤E¨!¬S°Ó-=Ó$>Ó?ÐØ'¨¯	©	Ñ2°d·k±kÑAÀaÑGÐÙØŸ™ bš‘2¨d¯i©i¸!©m‰DàŸ™ bš‘2¨d¯i©i¸!©mˆDØ× Ñ  Ô&äŸ™Ÿ™ Ð8LÐW[˜Ó\‰ˆˆhà×0Ñ0°Ó=‰ˆˆtÜŸE™E×5Ñ5ØØØØØØ!Ÿ\™\ð 6ó 
Ðð !Ð r)   c                óä   — | j                  |«      }d }d }| j                  r t        j                  | j                  |«      }| j
                  r t        j                  | j                  |«      }||fS r¬   )Ú_create_broadcast_shaper~   r,   r=   rÁ   r}   rÂ   )rŠ   r—   Úbroadcast_shaperÁ   rÂ   s        r*   r¾   z)TFWav2Vec2GroupNorm._get_reshaped_weights=  s\   € Ø×6Ñ6°{ÓCˆØˆØˆØ�:Š:Ü—J‘J˜tŸz™z¨?Ó;ˆEà�;Š;Ü—:‘:˜dŸi™i¨Ó9ˆDØ�dˆ{Ðr)   c                óŒ   — || j                      }|€3t        dt        | j                   «      z   dz   t        |«      z   dz   «      ‚y )NzAxis z\ of input tensor should have a defined dimension but the layer received an input with shape ú.)r<   rR   Ústr©rŠ   r—   Údims      r*   rŽ   z1TFWav2Vec2GroupNorm._check_if_input_shape_is_noneH  s\   € Ø˜$Ÿ)™)Ñ$ˆØˆ;ÜØÜ�d—i‘i“.ñ!àpñqô �kÓ"ñ#ð ñ	óð ð r)   c                óP   — || j                      }| j                  dk(  r|| _        y y ©Nr:   )r<   r{   rÉ   s      r*   r�   z;TFWav2Vec2GroupNorm._set_number_of_groups_for_instance_normS  s(   € Ø˜$Ÿ)™)Ñ$ˆà�;‰;˜"ÒØˆD�Kð r)   c                ó0  — || j                      }|| j                  k  r3t        dt        | j                  «      z   dz   t        |«      z   dz   «      ‚|| j                  z  dk7  r3t        dt        | j                  «      z   dz   t        |«      z   dz   «      ‚y )NzNumber of groups (z.) cannot be more than the number of channels (ú).r   z0) must be a multiple of the number of channels ()r<   r{   rR   rÈ   rÉ   s      r*   r�   z-TFWav2Vec2GroupNorm._check_size_of_dimensionsY  s¸   € Ø˜$Ÿ)™)Ñ$ˆØ�—‘ÒÜØ$Ü�d—k‘kÓ"ñ#àBñCô �c“(ñð ñ	óð ð �—‘Ñ Ò!ÜØ$Ü�d—k‘kÓ"ñ#àDñEô �c“(ñð ñ	óð ð "r)   c                ó8   — | j                   dk(  rt        d«      ‚y )Nr   zdYou are trying to normalize your batch axis. Do you want to use tf.layer.batch_normalization instead)r<   rR   ©rŠ   s    r*   r‰   zTFWav2Vec2GroupNorm._check_axism  s"   € Ø�9‰9˜Š>ÜØvóð ð r)   c                ó˜   — || j                      }t        j                  j                  t	        |«      | j                   |i¬«      | _        y )N)ÚndimÚaxes)r<   r   ÚlayersÚ	InputSpecr°   Ú
input_specrÉ   s      r*   r‘   z&TFWav2Vec2GroupNorm._create_input_specs  s:   € Ø˜$Ÿ)™)Ñ$ˆÜŸ,™,×0Ñ0´c¸+Ó6FÈdÏiÉiÐY\ÐM]Ð0Ó^ˆ�r)   c                óÂ   — || j                      }|f}| j                  r:| j                  |d| j                  | j                  | j
                  ¬«      | _        y d | _        y )NrÁ   ©r`   ÚnameÚinitializerÚregularizerÚ
constraint)r<   r~   Ú
add_weightr‚   r…   rˆ   rÁ   ©rŠ   r—   rÊ   r`   s       r*   r’   z%TFWav2Vec2GroupNorm._add_gamma_weightw  s]   € Ø˜$Ÿ)™)Ñ$ˆØ�ˆà�:Š:ØŸ™ØØØ ×2Ñ2Ø ×2Ñ2Ø×0Ñ0ð )ó ˆD�Jð ˆD�Jr)   c                óÂ   — || j                      }|f}| j                  r:| j                  |d| j                  | j                  | j
                  ¬«      | _        y d | _        y )NrÂ   rØ   )r<   r}   rÝ   r�   r„   r‡   rÂ   rÞ   s       r*   r“   z$TFWav2Vec2GroupNorm._add_beta_weight†  s]   € Ø˜$Ÿ)™)Ñ$ˆØ�ˆà�;Š;ØŸ™ØØØ ×1Ñ1Ø ×1Ñ1Ø×/Ñ/ð (ó ˆD�Ið ˆD�Ir)   c                ó:  — dgt        |«      z  }|| j                     | j                  z  dk(  }|sQ|| j                     | j                  z  || j                  <   |j                  | j                  | j                  «       |S | j                  || j                  <   |S r™   )r°   r<   r{   r±   )rŠ   r—   rÅ   r£   s       r*   rÄ   z+TFWav2Vec2GroupNorm._create_broadcast_shape•  s�   € Ø˜#¤ KÓ 0Ñ0ˆØ'¨¯	©	Ñ2°d·k±kÑAÀaÑGÐÙØ)4°T·Y±YÑ)?À4Ç;Á;Ñ)NˆO˜DŸI™IÑ&Ø×"Ñ" 4§9¡9¨d¯k©kÔ:ð Ðð *.¯©ˆO˜DŸI™IÑ&ØÐr)   )é    r:   gü©ñÒMbP?TTr[   r\   NNNN)r{   Úintr<   râ   r|   Úfloatr}   Úboolr~   rä   r�   úkeras.initializers.Initializerr‚   rå   r„   úkeras.regularizers.Regularizerr…   ræ   r‡   úkeras.constraints.Constraintrˆ   rç   )r#   r$   r%   r&   ry   r•   r¥   r¨   r®   rœ   r�   r¾   rŽ   r�   r�   r‰   r‘   r’   r“   rÄ   Ú__classcell__©rŒ   s   @r*   rv   rv   È   sè   ø„ ñð ØØØØØ;BØ<BØ;?Ø<@Ø8<Ø9=ðàðð ðð ð	ð
 ðð ðð 9ðð :ðð 9ðð :ðð 6ðð 7õô<	#òô )ò"ò
'ò!ò.	ò	òòò(ò_òòör)   rv   c                  óB   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ fd„Zˆ fd„Zˆ xZ	S )ÚTFWav2Vec2WeightNormConv1DzeAdapted from https://www.tensorflow.org/probability/api_docs/python/tfp/layers/weight_norm/WeightNormc           
     ó†   •— t        ‰| �  d|||ddddœ|¤Ž || _        d| _        t	        j
                  ddg«      | _        y )	NÚvalidTÚ	he_normal)ÚfiltersÚkernel_sizer{   ÚpaddingÚuse_biasÚbias_initializerr   r   r   r(   )rx   ry   Úexplicit_paddingÚfilter_axisr,   rm   Úkernel_norm_axes)rŠ   rï   rð   r{   rô   r‹   rŒ   s         €r*   ry   z#TFWav2Vec2WeightNormConv1D.__init__£  sX   ø€ Ü‰Ñð 	
ØØ#ØØØØ(ñ	
ð ò	
ð !1ˆÔØˆÔÜ "§¡¨Q°¨FÓ 3ˆÕr)   c                ó$  — t        j                  t        j                  t        j                  | j                  «      | j
                  ¬«      «      }| j                  j                  |dd…t         j                  t         j                  f   «       y)z"Set the norm of the weight vector.r;   N)	r,   ÚsqrtÚ
reduce_sumÚsquareÚweight_vrö   Úweight_gÚassignr^   )rŠ   Úkernel_norms     r*   Ú
_init_normz%TFWav2Vec2WeightNormConv1D._init_norm±  sT   € ä—g‘gœbŸm™m¬B¯I©I°d·m±mÓ,DÈ4×K`ÑK`ÔaÓbˆØ�‰×Ñ˜[ª¬B¯J©J¼¿
¹
Ð)BÑCÕDr)   c                óâ   — t         j                  j                  | j                  | j                  ¬«      t        j
                  | j                  «      z  }t        j
                  |«      | _        y)zGenerate normalized weights.r;   N)r,   r1   Úl2_normalizerû   rö   rA   rü   Úkernel)rŠ   r  s     r*   Ú_normalize_kernelz,TFWav2Vec2WeightNormConv1D._normalize_kernel¶  sM   € ä—‘×#Ñ# D§M¡M¸×8MÑ8MÐ#ÓNÔQS×Q]ÑQ]Ð^b×^kÑ^kÓQlÑlˆÜ—l‘l 6Ó*ˆ�r)   c                óö  •— | j                   sìt        ‰| �	  |«       t        j                  t        j
                  | j                  «      dd¬«      | _        | j                  | _        | j                  dt        | j                  j                  | j                     «      ddfd| j                  j                  d¬«      | _        | j                  «        | j                  d| j                  fd	d¬
«      | _        y y )Nrû   T)rÙ   Ú	trainablerü   r   r\   )rÙ   r`   rÚ   rQ   r  Úbiasr[   )rÙ   r`   rÚ   r  )r”   rx   r•   r,   ÚVariablerA   r  rû   rÝ   râ   r`   rõ   rQ   rü   rÿ   rï   r  r–   s     €r*   r•   z TFWav2Vec2WeightNormConv1D.build»  sÃ   ø€ Ø�zŠzÜ‰G‰M˜+Ô&äŸ+™+¤b§l¡l°4·;±;Ó&?ÀjÐ\`ÔaˆDŒKØ ŸK™KˆDŒMà ŸO™OØÜ˜4Ÿ=™=×.Ñ.¨t×/?Ñ/?Ñ@ÓAÀ1ÀaÐHØ"Ø—m‘m×)Ñ)Øð ,ó ˆDŒMð �O‰OÔØŸ™¨V¸D¿L¹L¸?ÐX_Ðko˜ÓpˆD�Ið r)   c                ó¤   •— | j                  «        t        j                  |d| j                  | j                  fdf«      }t        ‰| �  |«      }|S )N)r   r   )r  r,   Úpadrô   rx   r¥   )rŠ   rž   Úpadded_inputsÚoutputrŒ   s       €r*   r¥   zTFWav2Vec2WeightNormConv1D.callÌ  sM   ø€ ð 	×ÑÔ äŸ™˜v¨°×1FÑ1FÈ×H]ÑH]Ð0^Ð`fÐ'gÓhˆÜ‘‘˜mÓ,ˆàˆr)   )
r#   r$   r%   r&   ry   rÿ   r  r•   r¥   rè   ré   s   @r*   rë   rë      s&   ø„ Ùoô4òEò
+ô
q÷"	ð 	r)   rë   c                  ó2   ‡ — e Zd Zddˆ fd„Zdd„Zdd„Zˆ xZS )ÚTFWav2Vec2NoLayerNormConvLayerc                ód  •— t        ‰| �  di |¤Ž |dkD  r|j                  |   nd| _        |j                  |   | _        t
        j                  j                  | j                  |j                  |   |j                  |   |j                  d¬«      | _        t        |j                  «      | _        y )Nr   r   Úconv©rï   rð   Ústridesrò   rÙ   r(   )rx   ry   Úconv_dimÚin_conv_dimÚout_conv_dimr   rÔ   ÚConv1DÚconv_kernelÚconv_strideÚ	conv_biasr  r
   Úfeat_extract_activationÚ
activation©rŠ   r©   Úlayer_idr‹   rŒ   s       €r*   ry   z'TFWav2Vec2NoLayerNormConvLayer.__init__Ù  s�   ø€ Ü‰ÑÑ"˜6Ò"Ø8@À1º˜6Ÿ?™?¨8Ò4È!ˆÔØ"ŸO™O¨HÑ5ˆÔä—L‘L×'Ñ'Ø×%Ñ%Ø×*Ñ*¨8Ñ4Ø×&Ñ& xÑ0Ø×%Ñ%Øð (ó 
ˆŒ	ô ,¨F×,JÑ,JÓKˆ�r)   c                óJ   — | j                  |«      }| j                  |«      }|S r¬   )r  r  ©rŠ   r!   s     r*   r¥   z#TFWav2Vec2NoLayerNormConvLayer.callç  s$   € ØŸ	™	 -Ó0ˆØŸ™¨Ó6ˆØÐr)   c                ó  — | j                   ry d| _         t        | dd «      �[t        j                  | j                  j
                  «      5  | j                  j                  d d | j                  g«       d d d «       y y # 1 sw Y   y xY w©NTr  )r”   Úgetattrr,   Ú
name_scoper  rÙ   r•   r  r­   s     r*   r•   z$TFWav2Vec2NoLayerNormConvLayer.buildì  sw   € Ø�:Š:ØØˆŒ
Ü�4˜ Ó&Ð2Ü—‘˜tŸy™yŸ~™~Ó.ñ @Ø—	‘	—‘  t¨T×-=Ñ-=Ð >Ô?÷@ð @ð 3÷@ð @ús   Á)A>Á>B©r   ©r©   r   r  râ   r‹   r   ÚreturnÚNone©r!   ú	tf.Tensorr%  r(  r¬   ©r#   r$   r%   ry   r¥   r•   rè   ré   s   @r*   r  r  Ø  s   ø„ öLó÷
@r)   r  c                  ó2   ‡ — e Zd Zddˆ fd„Zdd„Zdd„Zˆ xZS )ÚTFWav2Vec2LayerNormConvLayerc                óÄ  •— t        ‰| �  di |¤Ž |dkD  r|j                  |   nd| _        |j                  |   | _        t
        j                  j                  | j                  |j                  |   |j                  |   |j                  d¬«      | _        t
        j                  j                  d|j                  ¬«      | _        t        |j                   «      | _        y )Nr   r   r  r  Ú
layer_norm)rÙ   r|   r(   )rx   ry   r  r  r  r   rÔ   r  r  r  r  r  ÚLayerNormalizationÚlayer_norm_epsr-  r
   r  r  r  s       €r*   ry   z%TFWav2Vec2LayerNormConvLayer.__init__ö  s¿   ø€ Ü‰ÑÑ"˜6Ò"Ø8@À1º˜6Ÿ?™?¨8Ò4È!ˆÔØ"ŸO™O¨HÑ5ˆÔä—L‘L×'Ñ'Ø×%Ñ%Ø×*Ñ*¨8Ñ4Ø×&Ñ& xÑ0Ø×%Ñ%Øð (ó 
ˆŒ	ô  Ÿ,™,×9Ñ9¸|ÐU[×UjÑUjÐ9ÓkˆŒÜ+¨F×,JÑ,JÓKˆ�r)   c                ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S r¬   ©r  r-  r  r  s     r*   r¥   z!TFWav2Vec2LayerNormConvLayer.call  ó2   € ØŸ	™	 -Ó0ˆØŸ™¨Ó6ˆØŸ™¨Ó6ˆØÐr)   c                óú  — | j                   ry d| _         t        | dd «      �Zt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  g«       d d d «       t        | dd «      �[t        j                  | j                  j
                  «      5  | j                  j                  d d | j                  g«       d d d «       y y # 1 sw Y   ŒrxY w# 1 sw Y   y xY w©NTr  r-  ©
r”   r!  r,   r"  r  rÙ   r•   r  r-  r  r­   s     r*   r•   z"TFWav2Vec2LayerNormConvLayer.build  óÔ   € Ø�:Š:ØØˆŒ
Ü�4˜ Ó&Ð2Ü—‘˜tŸy™yŸ~™~Ó.ñ @Ø—	‘	—‘  t¨T×-=Ñ-=Ð >Ô?÷@ä�4˜ tÓ,Ð8Ü—‘˜tŸ™×3Ñ3Ó4ñ GØ—‘×%Ñ% t¨T°4×3DÑ3DÐ&EÔF÷Gð Gð 9÷@ð @ú÷Gð Gúó   Á)C%Â2)C1Ã%C.Ã1C:r#  r$  r'  r¬   r)  ré   s   @r*   r+  r+  õ  s   ø„ öLó÷	Gr)   r+  c                  ó2   ‡ — e Zd Zddˆ fd„Zdd„Zdd„Zˆ xZS )ÚTFWav2Vec2GroupNormConvLayerc                ó²  •— t        ‰| �  di |¤Ž |dkD  r|j                  |   nd| _        |j                  |   | _        t
        j                  j                  | j                  |j                  |   |j                  |   |j                  d¬«      | _        t        |j                  «      | _        t        | j                  |j                   d¬«      | _        y )Nr   r   r  r  r-  )r{   r|   rÙ   r(   )rx   ry   r  r  r  r   rÔ   r  r  r  r  r  r
   r  r  rv   r/  r-  r  s       €r*   ry   z%TFWav2Vec2GroupNormConvLayer.__init__  s¼   ø€ Ü‰ÑÑ"˜6Ò"Ø8@À1º˜6Ÿ?™?¨8Ò4È!ˆÔØ"ŸO™O¨HÑ5ˆÔä—L‘L×'Ñ'Ø×%Ñ%Ø×*Ñ*¨8Ñ4Ø×&Ñ& xÑ0Ø×%Ñ%Øð (ó 
ˆŒ	ô ,¨F×,JÑ,JÓKˆŒÜ-Ø×$Ñ$¨f×.CÑ.CÈ,ô
ˆ�r)   c                ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S r¬   r1  r  s     r*   r¥   z!TFWav2Vec2GroupNormConvLayer.call)  r2  r)   c                óú  — | j                   ry d| _         t        | dd «      �Zt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  g«       d d d «       t        | dd «      �[t        j                  | j                  j
                  «      5  | j                  j                  d d | j                  g«       d d d «       y y # 1 sw Y   ŒrxY w# 1 sw Y   y xY wr4  r5  r­   s     r*   r•   z"TFWav2Vec2GroupNormConvLayer.build/  r6  r7  r#  r$  r'  r¬   r)  ré   s   @r*   r9  r9    s   ø„ ö
ó"÷	Gr)   r9  c                  ó0   ‡ — e Zd Zdˆ fd„Zdd„Zdd„Zˆ xZS )Ú!TFWav2Vec2PositionalConvEmbeddingc                ó  •— t        ‰| �  di |¤Ž t        |j                  |j                  |j
                  |j                  dz  d¬«      | _        t        |j                  «      | _        t        |j                  «      | _        || _        y )Nr   r  )rï   rð   r{   rô   rÙ   r(   )rx   ry   rë   Úhidden_sizeÚnum_conv_pos_embeddingsÚnum_conv_pos_embedding_groupsr  ÚTFWav2Vec2SamePadLayerrñ   r
   r  r  r©   ©rŠ   r©   r‹   rŒ   s      €r*   ry   z*TFWav2Vec2PositionalConvEmbedding.__init__<  sx   ø€ Ü‰ÑÑ"˜6Ò"Ü.Ø×&Ñ&Ø×6Ñ6Ø×7Ñ7Ø#×;Ñ;¸qÑ@Øô
ˆŒ	ô .¨f×.LÑ.LÓMˆŒÜ+¨F×,JÑ,JÓKˆŒØˆ�r)   c                ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S r¬   )r  rñ   r  r  s     r*   r¥   z&TFWav2Vec2PositionalConvEmbedding.callI  s2   € ØŸ	™	 -Ó0ˆØŸ™ ]Ó3ˆØŸ™¨Ó6ˆØÐr)   c                ó(  — | j                   ry d| _         t        | dd «      �et        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       y y # 1 sw Y   y xY wr   )	r”   r!  r,   r"  r  rÙ   r•   r©   r@  r­   s     r*   r•   z'TFWav2Vec2PositionalConvEmbedding.buildO  s{   € Ø�:Š:ØØˆŒ
Ü�4˜ Ó&Ð2Ü—‘˜tŸy™yŸ~™~Ó.ñ GØ—	‘	—‘  t¨T¯[©[×-DÑ-DÐ EÔF÷Gð Gð 3÷Gð Gús   Á3BÂB©r©   r   r‹   r   r%  r&  r'  r¬   r)  ré   s   @r*   r>  r>  ;  s   ø„ õó÷Gr)   r>  c                  ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )rC  c                óR   •— t        ‰| �  di |¤Ž |dz  dk(  rd| _        y d| _        y )Nr   r   r   r(   )rx   ry   Únum_pad_remove)rŠ   rA  r‹   rŒ   s      €r*   ry   zTFWav2Vec2SamePadLayer.__init__Y  s.   ø€ Ü‰ÑÑ"˜6Ò"Ø#:¸QÑ#>À!Ò#C˜aˆÕÈˆÕr)   c                óV   — | j                   dkD  r|d d …d | j                    …d d …f   }|S )Nr   )rJ  r  s     r*   r¥   zTFWav2Vec2SamePadLayer.call]  s6   € Ø×Ñ Ò"Ø)ª!Ð-C°×0CÑ0CÐ/CÐ-CÂQÐ*FÑGˆMØÐr)   )r#   r$   r%   ry   r¥   rè   ré   s   @r*   rC  rC  X  s   ø„ ôKör)   rC  c                  ó.   ‡ — e Zd Zdˆ fd„Zd„ Zdd„Zˆ xZS )ÚTFWav2Vec2FeatureEncoderc                óÂ  •— t        ‰| �  d	i |¤Ž |j                  dk(  rVt        |ddd› �¬«      gt	        |j
                  dz
  «      D �cg c]  }t        ||dz   d|dz   › �¬«      ‘Œ c}z   }|| _	        y |j                  dk(  r9t	        |j
                  «      D �cg c]  }t        ||d|› �¬«      ‘Œ }}|| _	        y t        d|j                  › d�«      ‚c c}w c c}w )
NÚgroupr   zconv_layers.)r  rÙ   r   Úlayerz`config.feat_extract_norm` is z), but has to be one of ['group', 'layer']r(   )
rx   ry   Úfeat_extract_normr9  r@   Únum_feat_extract_layersr  r+  rR   Úconv_layers)rŠ   r©   r‹   r³   rS  rŒ   s        €r*   ry   z!TFWav2Vec2FeatureEncoder.__init__d  s  ø€ Ü‰ÑÑ"˜6Ò"à×#Ñ# wÒ.Ü7¸ÈÐS_Ð`aÐ_bÐQcÔdÐeä˜v×=Ñ=ÀÑAÓBöiàô /¨vÀÀAÁÈlÐ[\Ð_`Ñ[`ÐZaÐLbÖcòiñ ˆKð 'ˆÕð ×%Ñ%¨Ò0ô ˜v×=Ñ=Ó>öàô -¨V¸aÈÐUVÐTWÐFXÖYðˆKð ð 'ˆÕô Ø0°×1IÑ1IÐ0JÐJsÐtóð ùòiùò
s   ÁCÂCc                ód   — t        j                  |d«      }| j                  D ]
  } ||«      }Œ |S rÌ   )r,   r?   rS  )rŠ   Úinput_valuesr!   Ú
conv_layers       r*   r¥   zTFWav2Vec2FeatureEncoder.callw  s7   € ÜŸ™ |°RÓ8ˆØ×*Ñ*ò 	6ˆJÙ& }Ó5‰Mð	6àÐr)   c                óô   — | j                   ry d| _         t        | dd «      �K| j                  D ];  }t        j                  |j
                  «      5  |j                  d «       d d d «       Œ= y y # 1 sw Y   ŒIxY w)NTrS  )r”   r!  rS  r,   r"  rÙ   r•   )rŠ   r—   rV  s      r*   r•   zTFWav2Vec2FeatureEncoder.build}  st   € Ø�:Š:ØØˆŒ
Ü�4˜¨Ó-Ð9Ø"×.Ñ.ò +�
Ü—]‘] :§?¡?Ó3ñ +Ø×$Ñ$ TÔ*÷+ð +ñ+ð :÷+ð +ús   ÁA.Á.A7	rG  r¬   r)  ré   s   @r*   rM  rM  c  s   ø„ õ'ò&÷+r)   rM  c                  ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚTFWav2Vec2FeatureExtractorc                óÒ   •— t        ‰| �  |fi |¤Ž t        j                  d| j                  j
                  › d| j                  j                  d   j
                  › d�t        «       y )NzThe class `zD` has been depreciated and will be removed in Transformers v5. Use `r   z
` instead.)rx   ry   ÚwarningsÚwarnrŒ   r#   Ú	__bases__ÚFutureWarningrD  s      €r*   ry   z#TFWav2Vec2FeatureExtractor.__init__ˆ  s`   ø€ Ü‰Ñ˜Ñ* 6Ò*Ü�‰Ø˜$Ÿ.™.×1Ñ1Ð2ð 3à—N‘N×,Ñ,¨QÑ/×8Ñ8Ð9¸ðEô õ		
r)   )r#   r$   r%   ry   rè   ré   s   @r*   rY  rY  ‡  s   ø„ ÷
ð 
r)   rY  c                  ó2   ‡ — e Zd Zdˆ fd„Zddd„Zdd„Zˆ xZS )ÚTFWav2Vec2FeatureProjectionc                óz  •— t        ‰| �  di |¤Ž t        j                  j	                  |j
                  d¬«      | _        t        j                  j                  |j                  t        |j                  «      dd¬«      | _        t        j                  j                  |j                  ¬«      | _        || _        y )Nr-  ©r|   rÙ   r[   Ú
projection©ÚunitsÚkernel_initializerró   rÙ   )Úrater(   )rx   ry   r   rÔ   r.  r/  r-  ÚDenser@  r   Úinitializer_rangerc  ÚDropoutÚfeat_proj_dropoutÚdropoutr©   rD  s      €r*   ry   z$TFWav2Vec2FeatureProjection.__init__“  s•   ø€ Ü‰ÑÑ"˜6Ò"äŸ,™,×9Ñ9À&×BWÑBWÐ^jÐ9ÓkˆŒÜŸ,™,×,Ñ,Ø×$Ñ$Ü.¨v×/GÑ/GÓHØ$Øð	 -ó 
ˆŒô —|‘|×+Ñ+°×1IÑ1IÐ+ÓJˆŒØˆ�r)   c                ót   — | j                  |«      }| j                  |«      }| j                  ||¬«      }||fS ©N©Útraining)r-  rc  rl  )rŠ   r!   rp  Únorm_hidden_statess       r*   r¥   z TFWav2Vec2FeatureProjection.call   s>   € Ø!Ÿ_™_¨]Ó;ÐØŸ™Ð(:Ó;ˆØŸ™ ]¸X˜ÓFˆØÐ0Ð0Ð0r)   c                ó.  — | j                   ry d| _         t        | dd «      �gt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  d   g«       d d d «       t        | dd «      �ht        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  d   g«       d d d «       y y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)NTr-  r:   rc  )
r”   r!  r,   r"  r-  rÙ   r•   r©   r  rc  r­   s     r*   r•   z!TFWav2Vec2FeatureProjection.build¦  sê   € Ø�:Š:ØØˆŒ
Ü�4˜ tÓ,Ð8Ü—‘˜tŸ™×3Ñ3Ó4ñ NØ—‘×%Ñ% t¨T°4·;±;×3GÑ3GÈÑ3KÐ&LÔM÷Nä�4˜ tÓ,Ð8Ü—‘˜tŸ™×3Ñ3Ó4ñ NØ—‘×%Ñ% t¨T°4·;±;×3GÑ3GÈÑ3KÐ&LÔM÷Nð Nð 9÷Nð Nú÷Nð Nús   Á6C?Â?6DÃ?DÄD©r©   r   ©F©r!   r(  rp  rä   r%  r(  r¬   r)  ré   s   @r*   r`  r`  ’  s   ø„ õô1÷	Nr)   r`  c                  ó|   ‡ — e Zd ZdZ	 	 	 d	 	 	 	 	 	 	 	 	 dˆ fd„Zdd„Z	 	 	 	 	 d		 	 	 	 	 	 	 	 	 	 	 	 	 d
d„Zdd„Zˆ xZS )ÚTFWav2Vec2Attentionz6Multi-headed attention from "Attention Is All You Needc                óz  •— t        ‰| �  d
i |¤Ž || _        || _        t        j
                  j                  |«      | _        ||z  | _        | j                  |z  | j                  k7  rt        d| j                  › d|› d�«      ‚| j                  dz  | _
        || _        t        j
                  j                  ||d¬«      | _        t        j
                  j                  ||d¬«      | _        t        j
                  j                  ||d¬«      | _        t        j
                  j                  ||d	¬«      | _        y )Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: rÎ   g      à¿Úk_proj)rò   rÙ   Úq_projÚv_projÚout_projr(   )rx   ry   Ú	embed_dimÚ	num_headsr   rÔ   rj  rl  Úhead_dimrR   ÚscalingÚ
is_decoderrh  ry  rz  r{  r|  )rŠ   r}  r~  rl  r�  r  r‹   rŒ   s          €r*   ry   zTFWav2Vec2Attention.__init__¶  s  ø€ ô 	‰ÑÑ"˜6Ò"Ø"ˆŒà"ˆŒÜ—|‘|×+Ñ+¨GÓ4ˆŒØ! YÑ.ˆŒØ�M‰M˜IÑ%¨$¯.©.Ò8ÜØMÈdÏnÉnÐM]Ø$ Y K¨rð3óð ð —}‘} dÑ*ˆŒØ$ˆŒä—l‘l×(Ñ(¨¸TÈÐ(ÓQˆŒÜ—l‘l×(Ñ(¨¸TÈÐ(ÓQˆŒÜ—l‘l×(Ñ(¨¸TÈÐ(ÓQˆŒÜŸ™×*Ñ*¨9¸tÈ*Ð*ÓUˆ�r)   c           	     ó†   — t        j                  t        j                  |||| j                  | j                  f«      d«      S )N©r   r   r   r	   )r,   rA   r=   r~  r  )rŠ   ÚtensorÚseq_lenÚbszs       r*   Ú_shapezTFWav2Vec2Attention._shapeÒ  s0   € Ü�|‰|œBŸJ™J v°°W¸d¿n¹nÈdÏmÉmÐ/\Ó]Ð_kÓlÐlr)   c           
     óÌ	  — |du}t        |«      \  }}	}
| j                  |«      | j                  z  }|r|�|d   }|d   }�n
|rE| j                  | j	                  |«      d|«      }| j                  | j                  |«      d|«      }nÃ|�}| j                  | j	                  |«      d|«      }| j                  | j                  |«      d|«      }t        j                  |d   |gd¬«      }t        j                  |d   |gd¬«      }nD| j                  | j	                  |«      d|«      }| j                  | j                  |«      d|«      }| j                  r||f}|| j                  z  d| j                  f}t        j                  | j                  ||	|«      |«      }t        j                  ||«      }t        j                  ||«      }t        |«      d   }t        j                  ||d¬«      }t        j                  j                  t        |«      || j                  z  |	|gd	|| j                  z  |	|f› d
t        |«      › �¬«       |�°t        j                  j                  t        |«      |d|	|gd|d|	|f› d
t        |«      › �¬«       t        j                  ||j                   ¬«      }t        j                  ||| j                  |	|f«      |z   }t        j                  ||| j                  z  |	|f«      }t#        |d¬«      }|�°t        j                  j                  t        |«      | j                  gd| j                  › d
t        |«      › �¬«       t        j                  |d«      t        j                  ||| j                  |	|f«      z  }t        j                  ||| j                  z  |	|f«      }| j%                  ||¬«      }t        j                  ||«      }t        j                  j                  t        |«      || j                  z  |	| j                  gd|| j                  |	| j                  f› d
t        |«      › �¬«       t        j&                  t        j                  ||| j                  |	| j                  f«      d«      }t        j                  |||	|
f«      }| j)                  |«      }t        j                  ||| j                  |	|f«      }|||fS )z#Input shape: Batch x Time x ChannelNr   r   r:   r   r;   T)Útranspose_bz$Attention weights should be of size z	, but is rM   z!Attention mask should be of size rP   z/Head mask for a single layer should be of size )r   r:   r   r   ro  z `attn_output` should be of size rƒ  )r   rz  r€  r‡  ry  r{  r,   rB   r�  r~  r  r=   ÚmatmulrS   Úassert_equalrU   rQ   r   rl  rA   r|  )rŠ   r!   Úkey_value_statesÚpast_key_valueÚattention_maskÚlayer_head_maskrp  Úis_cross_attentionr†  rp   r}  Úquery_statesÚ
key_statesÚvalue_statesÚ
proj_shaperq   Úattn_weightsÚ
attn_probsÚattn_outputs                      r*   r¥   zTFWav2Vec2Attention.callÕ  sž  € ð .°TÐ9ÐÜ",¨]Ó";ÑˆˆW�ið —{‘{ =Ó1°D·L±LÑ@ˆá .Ð"<à'¨Ñ*ˆJØ)¨!Ñ,ŠLÙàŸ™ T§[¡[Ð1AÓ%BÀBÈÓLˆJØŸ;™; t§{¡{Ð3CÓ'DÀbÈ#ÓN‰LØÐ'àŸ™ T§[¡[°Ó%?ÀÀSÓIˆJØŸ;™; t§{¡{°=Ó'AÀ2ÀsÓKˆLÜŸ™ N°1Ñ$5°zÐ#BÈÔKˆJÜŸ9™9 n°QÑ&7¸Ð%FÈQÔO‰Lð Ÿ™ T§[¡[°Ó%?ÀÀSÓIˆJØŸ;™; t§{¡{°=Ó'AÀ2ÀsÓKˆLà�?Š?ð )¨,Ð7ˆNà˜DŸN™NÑ*¨B°·±Ð>ˆ
Ü—z‘z $§+¡+¨l¸GÀSÓ"IÈ:ÓVˆÜ—Z‘Z 
¨JÓ7ˆ
Ü—z‘z ,°
Ó;ˆä˜ZÓ(¨Ñ+ˆÜ—y‘y ¨zÀtÔLˆä
�‰×!Ñ!Ü�|Ó$Ø�4—>‘>Ñ! 7¨GÐ4à6¸¸d¿n¹nÑ8LÈgÐW^Ð7_Ð6`ð aÜ˜|Ó,Ð-ð/ð	 	"ô 	
ð Ð%Ü�L‰L×%Ñ%Ü˜>Ó*Ø�a˜ 'Ð*à7¸¸aÀÈ'Ð8RÐ7Sð TÜ" >Ó2Ð3ð5ð	 &ô ô  ŸW™W ^¸<×;MÑ;MÔNˆNÜŸ:™: l°S¸$¿.¹.È'ÐSZÐ4[Ó\Ð_mÑmˆLÜŸ:™: l°S¸4¿>¹>Ñ5IÈ7ÐT[Ð4\Ó]ˆLä% l¸Ô<ˆàÐ&Ü�L‰L×%Ñ%Ü˜?Ó+Ø—‘Ð àEÀtÇ~Á~ÐEWð XÜ" ?Ó3Ð4ð6ð	 &ô ô Ÿ:™: o°}ÓEÌÏ
É
Ø˜s D§N¡N°G¸WÐEóIñ ˆLô Ÿ:™: l°S¸4¿>¹>Ñ5IÈ7ÐT[Ð4\Ó]ˆLà—\‘\ ,¸�\ÓBˆ
Ü—i‘i 
¨LÓ9ˆä
�‰×!Ñ!Ü�{Ó#Ø�4—>‘>Ñ! 7¨D¯M©MÐ:à2°C¸¿¹ÈÐRV×R_ÑR_Ð3`Ð2að bÜ˜{Ó+Ð,ð.ð	 	"ô 	
ô —l‘lÜ�J‰J�{ S¨$¯.©.¸'À4Ç=Á=Ð$QÓRÐT`ó
ˆô —j‘j ¨s°G¸YÐ.GÓHˆà—m‘m KÓ0ˆÜ"$§*¡*¨\¸CÀÇÁÐQXÐZaÐ;bÓ"cˆà˜L¨.Ð8Ð8r)   c                óÈ  — | j                   ry d| _         t        | dd «      �Zt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  g«       d d d «       t        | dd «      �Zt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  g«       d d d «       t        | dd «      �Zt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  g«       d d d «       t        | dd «      �[t        j                  | j                  j
                  «      5  | j                  j                  d d | j                  g«       d d d «       y y # 1 sw Y   �ŒAxY w# 1 sw Y   ŒæxY w# 1 sw Y   Œ‹xY w# 1 sw Y   y xY w)NTry  rz  r{  r|  )r”   r!  r,   r"  ry  rÙ   r•   r}  rz  r{  r|  r­   s     r*   r•   zTFWav2Vec2Attention.buildK  sŠ  € Ø�:Š:ØØˆŒ
Ü�4˜ 4Ó(Ð4Ü—‘˜tŸ{™{×/Ñ/Ó0ñ @Ø—‘×!Ñ! 4¨¨t¯~©~Ð">Ô?÷@ä�4˜ 4Ó(Ð4Ü—‘˜tŸ{™{×/Ñ/Ó0ñ @Ø—‘×!Ñ! 4¨¨t¯~©~Ð">Ô?÷@ä�4˜ 4Ó(Ð4Ü—‘˜tŸ{™{×/Ñ/Ó0ñ @Ø—‘×!Ñ! 4¨¨t¯~©~Ð">Ô?÷@ä�4˜ TÓ*Ð6Ü—‘˜tŸ}™}×1Ñ1Ó2ñ BØ—‘×#Ñ# T¨4°·±Ð$@ÔA÷Bð Bð 7÷@ñ @ú÷@ð @ú÷@ð @ú÷Bð Bús0   Á)F3Â2)G Ä)GÆ )GÆ3F=Ç G	ÇGÇG!)ç        FT)
r}  râ   r~  râ   rl  rã   r�  rä   r  rä   )r„  r(  r…  râ   r†  râ   )NNNNF)r!   r(  rŒ  útf.Tensor | Noner�  zTuple[Tuple[tf.Tensor]] | NonerŽ  rš  r�  rš  rp  úOptional[bool]r%  z"Tuple[tf.Tensor, tf.Tensor | None]r¬   )	r#   r$   r%   r&   ry   r‡  r¥   r•   rè   ré   s   @r*   rw  rw  ³  s»   ø„ Ù@ð Ø ØðVàðVð ðVð ð	Vð
 ðVð õVó8mð .2Ø9=Ø+/Ø,0Ø#(ðt9à ðt9ð +ðt9ð 7ð	t9ð
 )ðt9ð *ðt9ð !ðt9ð 
,ót9÷lBr)   rw  c                  ó2   ‡ — e Zd Zdˆ fd„Zddd„Zdd„Zˆ xZS )ÚTFWav2Vec2FeedForwardc                ó2  •— t        ‰| �  di |¤Ž t        j                  j	                  |j
                  «      | _        t        j                  j                  |j                  t        |j                  «      dd¬«      | _        t        |j                  «      | _        t        j                  j                  |j                  t        |j                  «      dd¬«      | _        t        j                  j	                  |j"                  «      | _        || _        y )Nr[   Úintermediate_denserd  Úoutput_denser(   )rx   ry   r   rÔ   rj  Úactivation_dropoutÚintermediate_dropoutrh  Úintermediate_sizer   ri  rŸ  r
   Ú
hidden_actÚintermediate_act_fnr@  r   Úhidden_dropoutÚoutput_dropoutr©   rD  s      €r*   ry   zTFWav2Vec2FeedForward.__init__^  sÝ   ø€ Ü‰ÑÑ"˜6Ò"ä$)§L¡L×$8Ñ$8¸×9RÑ9RÓ$SˆÔ!ä"'§,¡,×"4Ñ"4Ø×*Ñ*Ü.¨v×/GÑ/GÓHØ$Ø%ð	 #5ó #
ˆÔô $5°V×5FÑ5FÓ#GˆÔ ä!ŸL™L×.Ñ.Ø×$Ñ$Ü.¨v×/GÑ/GÓHØ$Øð	 /ó 
ˆÔô $Ÿl™l×2Ñ2°6×3HÑ3HÓIˆÔØˆ�r)   c                ó¸   — | j                  |«      }| j                  |«      }| j                  ||¬«      }| j                  |«      }| j	                  ||¬«      }|S rn  )rŸ  r¥  r¢  r   r§  )rŠ   r!   rp  s      r*   r¥   zTFWav2Vec2FeedForward.callt  sb   € Ø×/Ñ/°Ó>ˆØ×0Ñ0°Ó?ˆØ×1Ñ1°-È(Ð1ÓSˆà×)Ñ)¨-Ó8ˆØ×+Ñ+¨MÀHÐ+ÓMˆØÐr)   c                ó"  — | j                   ry d| _         t        | dd «      �dt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       t        | dd «      �et        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       y y # 1 sw Y   Œ|xY w# 1 sw Y   y xY w)NTrŸ  r   )r”   r!  r,   r"  rŸ  rÙ   r•   r©   r@  r   r£  r­   s     r*   r•   zTFWav2Vec2FeedForward.build}  sé   € Ø�:Š:ØØˆŒ
Ü�4Ð-¨tÓ4Ð@Ü—‘˜t×6Ñ6×;Ñ;Ó<ñ UØ×'Ñ'×-Ñ-¨t°T¸4¿;¹;×;RÑ;RÐ.SÔT÷Uä�4˜¨Ó.Ð:Ü—‘˜t×0Ñ0×5Ñ5Ó6ñ UØ×!Ñ!×'Ñ'¨¨t°T·[±[×5RÑ5RÐ(SÔT÷Uð Uð ;÷Uð Uú÷Uð Uús   Á3C9Â<3DÃ9DÄDrs  rt  ru  r¬   r)  ré   s   @r*   r�  r�  ]  s   ø„ õô,÷	Ur)   r�  c                  óJ   ‡ — e Zd Zdˆ fd„Z	 	 	 d	 	 	 	 	 	 	 	 	 dd„Zdd„Zˆ xZS )ÚTFWav2Vec2EncoderLayerc                óØ  •— t        ‰| �  d	i |¤Ž t        |j                  |j                  |j
                  dd¬«      | _        t        j                  j                  |j                  «      | _        t        j                  j                  |j                  d¬«      | _        t        |d¬«      | _        t        j                  j                  |j                  d¬«      | _        || _        y ©
NFÚ	attention)r}  r~  rl  r�  rÙ   r-  rb  Úfeed_forward©rÙ   Úfinal_layer_normr(   ©rx   ry   rw  r@  Únum_attention_headsÚattention_dropoutr®  r   rÔ   rj  r¦  rl  r.  r/  r-  r�  r¯  r±  r©   rD  s      €r*   ry   zTFWav2Vec2EncoderLayer.__init__Š  ó¹   ø€ Ü‰ÑÑ"˜6Ò"Ü,Ø×(Ñ(Ø×0Ñ0Ø×,Ñ,ØØô
ˆŒô —|‘|×+Ñ+¨F×,AÑ,AÓBˆŒÜŸ,™,×9Ñ9À&×BWÑBWÐ^jÐ9ÓkˆŒÜ1°&¸~ÔNˆÔÜ %§¡× ?Ñ ?È×H]ÑH]ÐdvÐ ?Ó wˆÔØˆ�r)   c                óì   — |}| j                  |||¬«      \  }}}| j                  ||¬«      }||z   }| j                  |«      }|| j                  |«      z   }| j	                  |«      }|f}|r||fz  }|S ©N)rŽ  rp  ro  )r®  rl  r-  r¯  r±  ©	rŠ   r!   rŽ  Úoutput_attentionsrp  Úattn_residualr•  r6   r¤   s	            r*   r¥   zTFWav2Vec2EncoderLayer.call™  s—   € ð &ˆØ)-¯©Ø¨.À8ð *8ó *
Ñ&ˆ�| Qð Ÿ™ ]¸X˜ÓFˆØ%¨Ñ5ˆàŸ™¨Ó6ˆØ%¨×(9Ñ(9¸-Ó(HÑHˆØ×-Ñ-¨mÓ<ˆà Ð"ˆáØ˜�Ñ&ˆGàˆr)   c                ó¼  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �dt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �et        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       y y # 1 sw Y   �ŒHxY w# 1 sw Y   ŒãxY w# 1 sw Y   Œ•xY w# 1 sw Y   y xY w©NTr®  r-  r¯  r±  ©r”   r!  r,   r"  r®  rÙ   r•   r-  r©   r@  r¯  r±  r­   s     r*   r•   zTFWav2Vec2EncoderLayer.build²  ó�  € Ø�:Š:ØØˆŒ
Ü�4˜ dÓ+Ð7Ü—‘˜tŸ~™~×2Ñ2Ó3ñ +Ø—‘×$Ñ$ TÔ*÷+ä�4˜ tÓ,Ð8Ü—‘˜tŸ™×3Ñ3Ó4ñ MØ—‘×%Ñ% t¨T°4·;±;×3JÑ3JÐ&KÔL÷Mä�4˜¨Ó.Ð:Ü—‘˜t×0Ñ0×5Ñ5Ó6ñ .Ø×!Ñ!×'Ñ'¨Ô-÷.ä�4Ð+¨TÓ2Ð>Ü—‘˜t×4Ñ4×9Ñ9Ó:ñ SØ×%Ñ%×+Ñ+¨T°4¸¿¹×9PÑ9PÐ,QÔR÷Sð Sð ?÷+ñ +ú÷Mð Mú÷.ð .ú÷Sð Súó0   ÁF-Â%3F:ÄGÅ03GÆ-F7Æ:GÇGÇGrs  ©NFF©
r!   r(  rŽ  rš  r¹  r›  rp  rä   r%  zTuple[tf.Tensor]r¬   r)  ré   s   @r*   r«  r«  ‰  sN   ø„ õð$ ,0Ø,1Øðà ðð )ðð *ð	ð
 ðð 
ó÷2Sr)   r«  c                  óJ   ‡ — e Zd Zdˆ fd„Z	 	 	 d	 	 	 	 	 	 	 	 	 dd„Zdd„Zˆ xZS )Ú%TFWav2Vec2EncoderLayerStableLayerNormc                óØ  •— t        ‰| �  d	i |¤Ž t        |j                  |j                  |j
                  dd¬«      | _        t        j                  j                  |j                  «      | _        t        j                  j                  |j                  d¬«      | _        t        |d¬«      | _        t        j                  j                  |j                  d¬«      | _        || _        y r­  r²  rD  s      €r*   ry   z.TFWav2Vec2EncoderLayerStableLayerNorm.__init__Å  rµ  r)   c                óè   — |}| j                  |«      }| j                  |||¬«      \  }}}| j                  ||¬«      }||z   }|| j                  | j	                  |«      «      z   }|f}|r||fz  }|S r·  )r-  r®  rl  r¯  r±  r¸  s	            r*   r¥   z*TFWav2Vec2EncoderLayerStableLayerNorm.callÔ  s“   € ð &ˆØŸ™¨Ó6ˆØ)-¯©Ø¨.À8ð *8ó *
Ñ&ˆ�| Qð Ÿ™ ]¸X˜ÓFˆØ%¨Ñ5ˆØ%¨×(9Ñ(9¸$×:OÑ:OÐP]Ó:^Ó(_Ñ_ˆà Ð"ˆáØ˜�Ñ&ˆGàˆr)   c                ó¼  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �dt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �et        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       y y # 1 sw Y   �ŒHxY w# 1 sw Y   ŒãxY w# 1 sw Y   Œ•xY w# 1 sw Y   y xY wr¼  r½  r­   s     r*   r•   z+TFWav2Vec2EncoderLayerStableLayerNorm.buildë  r¾  r¿  rs  rÀ  rÁ  r¬   r)  ré   s   @r*   rÃ  rÃ  Ä  sN   ø„ õð$ ,0Ø,1Øðà ðð )ðð *ð	ð
 ðð 
ó÷.Sr)   rÃ  c                  óV   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zˆ xZS )ÚTFWav2Vec2Encoderc                óˆ  •— t        ‰| �  di |¤Ž || _        t        |d¬«      | _        t
        j                  j                  |j                  d¬«      | _	        t
        j                  j                  |j                  «      | _        t        |j                  «      D �cg c]  }t        |d|› �¬«      ‘Œ c}| _        y c c}w ©NÚpos_conv_embedr°  r-  rb  zlayers.r(   )rx   ry   r©   r>  rË  r   rÔ   r.  r/  r-  rj  r¦  rl  r@   Únum_hidden_layersr«  rP  ©rŠ   r©   r‹   r³   rŒ   s       €r*   ry   zTFWav2Vec2Encoder.__init__þ  s—   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒÜ?ÀÐM]Ô^ˆÔÜŸ,™,×9Ñ9À&×BWÑBWÐ^jÐ9ÓkˆŒÜ—|‘|×+Ñ+¨F×,AÑ,AÓBˆŒÜRWÐX^×XpÑXpÓRqÖrÈQÔ,¨V¸GÀAÀ3¸-ÖHÒrˆ�
ùÒró   ÂB?c                ó6  — |rdnd }|rdnd }|�%|t        j                  |d«      z  }t        |«      }nd }| j                  |«      }	||	z   }| j	                  |«      }| j                  ||¬«      }t        | j                  «      D ]f  \  }
}|r||fz   }t        j                  j                  dd«      }|r|| j                  j                  k  rŒJ |||||¬«      }|d   }|sŒ^||d   fz   }Œh |r||fz   }|st        d„ |||fD «       «      S t        |||¬«      S )	Nr(   r:   ro  r   r   ©r!   rŽ  r¹  rp  c              3  ó&   K  — | ]	  }|€Œ|–— Œ y ­wr¬   r(   ©Ú.0Úvs     r*   ú	<genexpr>z)TFWav2Vec2Encoder.call.<locals>.<genexpr>6  ó   è ø€ Òm˜qÐ_`Ñ_lœÑmùó   ‚Š©r   r!   r"   )r,   r?   rt   rË  r-  rl  Ú	enumeraterP  Únpr/   r0   r©   Ú	layerdropÚtupler   ©rŠ   r!   rŽ  r¹  Úoutput_hidden_statesÚreturn_dictrp  Úall_hidden_statesÚall_self_attentionsÚposition_embeddingsr³   Úlayer_moduleÚdropout_probabilityÚlayer_outputss                 r*   r¥   zTFWav2Vec2Encoder.call  s\  € ñ #7™B¸DÐÙ$5™b¸4ÐàÐ%Ø)¬B¯N©N¸>È2Ó,NÑNˆMÜ)¨.Ó9‰Nà!ˆNà"×1Ñ1°-Ó@ÐØ%Ð(;Ñ;ˆØŸ™¨Ó6ˆØŸ™ ]¸X˜ÓFˆä(¨¯©Ó4ò 	P‰OˆAˆ|Ù#Ø$5¸Ð8HÑ$HÐ!ô #%§)¡)×"3Ñ"3°A°qÓ"9ÐÙÐ0°4·;±;×3HÑ3HÒHØá(Ø+Ø-Ø"3Ø!ô	ˆMð *¨!Ñ,ˆMâ Ø&9¸]È1Ñ=MÐ<OÑ&OÑ#ð%	Pñ*  Ø 1°]Ð4DÑ DÐáÜÑm ]Ð4EÐGZÐ$[ÔmÓmÐmÜ Ø+Ø+Ø*ô
ð 	
r)   c                óº  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �dt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       t        | dd «      �K| j                  D ];  }t        j                  |j
                  «      5  |j                  d «       d d d «       Œ= y y # 1 sw Y   ŒÓxY w# 1 sw Y   ŒnxY w# 1 sw Y   ŒaxY w©NTrË  r-  rP  ©r”   r!  r,   r"  rË  rÙ   r•   r-  r©   r@  rP  ©rŠ   r—   rP  s      r*   r•   zTFWav2Vec2Encoder.build=  ó"  € Ø�:Š:ØØˆŒ
Ü�4Ð)¨4Ó0Ð<Ü—‘˜t×2Ñ2×7Ñ7Ó8ñ 0Ø×#Ñ#×)Ñ)¨$Ô/÷0ä�4˜ tÓ,Ð8Ü—‘˜tŸ™×3Ñ3Ó4ñ MØ—‘×%Ñ% t¨T°4·;±;×3JÑ3JÐ&KÔL÷Mä�4˜ $Ó'Ð3ØŸ™ò &�Ü—]‘] 5§:¡:Ó.ñ &Ø—K‘K Ô%÷&ð &ñ&ð 4÷0ð 0ú÷Mð Mú÷&ð &úó$   ÁD9Â%3EÄEÄ9EÅEÅE	rs  ©NFFTF©r!   r(  rŽ  rš  r¹  r›  rÞ  r›  rß  r›  rp  r›  r%  ú*Union[TFBaseModelOutput, Tuple[tf.Tensor]]r¬   r)  ré   s   @r*   rÈ  rÈ  ý  si   ø„ õsð ,0Ø,1Ø/4Ø&*Ø#(ð5
à ð5
ð )ð5
ð *ð	5
ð
 -ð5
ð $ð5
ð !ð5
ð 
4ó5
÷n&r)   rÈ  c                  óV   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zˆ xZS )Ú TFWav2Vec2EncoderStableLayerNormc                óˆ  •— t        ‰| �  di |¤Ž || _        t        |d¬«      | _        t
        j                  j                  |j                  d¬«      | _	        t
        j                  j                  |j                  «      | _        t        |j                  «      D �cg c]  }t        |d|› �¬«      ‘Œ c}| _        y c c}w rÊ  )rx   ry   r©   r>  rË  r   rÔ   r.  r/  r-  rj  r¦  rl  r@   rÌ  rÃ  rP  rÍ  s       €r*   ry   z)TFWav2Vec2EncoderStableLayerNorm.__init__N  sž   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒÜ?ÀÐM]Ô^ˆÔÜŸ,™,×9Ñ9À&×BWÑBWÐ^jÐ9ÓkˆŒÜ—|‘|×+Ñ+¨F×,AÑ,AÓBˆŒäW\Ð]c×]uÑ]uÓWvö
ØRSÔ1°&ÀÈÈ¸}ÖMò
ˆ�
ùò 
rÎ  c                ó6  — |rdnd }|rdnd }|�%|t        j                  |d«      z  }t        |«      }nd }| j                  |«      }	||	z   }| j	                  ||¬«      }t        | j                  «      D ]f  \  }
}|r||fz   }t        j                  j                  dd«      }|r|| j                  j                  k  rŒJ |||||¬«      }|d   }|sŒ^||d   fz   }Œh | j                  |«      }|r||fz   }|st        d„ |||fD «       «      S t        |||¬«      S )	Nr(   r:   ro  r   r   rÐ  c              3  ó&   K  — | ]	  }|€Œ|–— Œ y ­wr¬   r(   rÒ  s     r*   rÕ  z8TFWav2Vec2EncoderStableLayerNorm.call.<locals>.<genexpr>ˆ  rÖ  r×  rØ  )r,   r?   rt   rË  rl  rÙ  rP  rÚ  r/   r0   r©   rÛ  r-  rÜ  r   rÝ  s                 r*   r¥   z%TFWav2Vec2EncoderStableLayerNorm.callX  s\  € ñ #7™B¸DÐÙ$5™b¸4ÐàÐ%Ø)¬B¯N©N¸>È2Ó,NÑNˆMÜ)¨.Ó9‰Nà!ˆNà"×1Ñ1°-Ó@ÐØ%Ð(;Ñ;ˆØŸ™ ]¸X˜ÓFˆä(¨¯©Ó4ò 	P‰OˆAˆ|Ù#Ø$5¸Ð8HÑ$HÐ!ô #%§)¡)×"3Ñ"3°A°qÓ"9ÐÙÐ0°4·;±;×3HÑ3HÒHØá(Ø+Ø-Ø"3Ø!ô	ˆMð *¨!Ñ,ˆMâ Ø&9¸]È1Ñ=MÐ<OÑ&OÑ#ð%	Pð( Ÿ™¨Ó6ˆáØ 1°]Ð4DÑ DÐáÜÑm ]Ð4EÐGZÐ$[ÔmÓmÐmÜ Ø+Ø+Ø*ô
ð 	
r)   c                óº  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �dt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       t        | dd «      �K| j                  D ];  }t        j                  |j
                  «      5  |j                  d «       d d d «       Œ= y y # 1 sw Y   ŒÓxY w# 1 sw Y   ŒnxY w# 1 sw Y   ŒaxY wrç  rè  ré  s      r*   r•   z&TFWav2Vec2EncoderStableLayerNorm.build�  rê  rë  rs  rì  rí  r¬   r)  ré   s   @r*   rð  rð  M  sh   ø„ õ
ð ,0Ø,1Ø/4Ø&*Ø#(ð5
à ð5
ð )ð5
ð *ð	5
ð
 -ð5
ð $ð5
ð !ð5
ð 
4ó5
÷n&r)   rð  c                  óŽ   ‡ — e Zd ZeZdˆ fd„Zdd„Zdd„Zdd	d„Ze		 	 	 	 	 	 	 	 	 d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Z
ˆ xZS )ÚTFWav2Vec2MainLayerc                óÜ   •— t        ‰| �  di |¤Ž || _        t        |d¬«      | _        t        |d¬«      | _        |j                  rt        |d¬«      | _	        y t        |d¬«      | _	        y )NÚfeature_extractorr°  Úfeature_projectionÚencoderr(   )rx   ry   r©   rM  rø  r`  rù  Údo_stable_layer_normrð  rú  rÈ  rD  s      €r*   ry   zTFWav2Vec2MainLayer.__init__£  s_   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒÜ!9¸&ÐGZÔ![ˆÔÜ"=¸fÐK_Ô"`ˆÔà×&Ò&Ü;¸FÈÔSˆD�Lä,¨V¸)ÔDˆD�Lr)   c                óT  — | j                   ry d| _         | j                  j                  dkD  s| j                  j                  dkD  r/| j	                  | j                  j
                  fddd¬«      | _        t        | dd «      �Mt        j                  | j                  j                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Mt        j                  | j                  j                  «      5  | j                  j                  d «       d d d «       t        | dd «      �Nt        j                  | j                  j                  «      5  | j                  j                  d «       d d d «       y y # 1 sw Y   Œ¿xY w# 1 sw Y   ŒqxY w# 1 sw Y   y xY w)	NTr™  r0   Úmasked_spec_embed©r`   rÚ   r  rÙ   rø  rù  rú  )r”   r©   Úmask_time_probÚmask_feature_probrÝ   r@  rý  r!  r,   r"  rø  rÙ   r•   rù  rú  r­   s     r*   r•   zTFWav2Vec2MainLayer.build®  s^  € Ø�:Š:ØØˆŒ
Ø�;‰;×%Ñ%¨Ò+¨t¯{©{×/LÑ/LÈsÒ/RØ%)§_¡_Ø—{‘{×.Ñ.Ð0¸iÐSWÐ^qð &5ó &ˆDÔ"ô �4Ð,¨dÓ3Ð?Ü—‘˜t×5Ñ5×:Ñ:Ó;ñ 3Ø×&Ñ&×,Ñ,¨TÔ2÷3ä�4Ð-¨tÓ4Ð@Ü—‘˜t×6Ñ6×;Ñ;Ó<ñ 4Ø×'Ñ'×-Ñ-¨dÔ3÷4ä�4˜ DÓ)Ð5Ü—‘˜tŸ|™|×0Ñ0Ó1ñ )Ø—‘×"Ñ" 4Ô(÷)ð )ð 6÷3ð 3ú÷4ð 4ú÷)ð )ús$   Â,FÄFÅ FÆFÆFÆF'c                ó˜   — d„ }t        | j                  j                  | j                  j                  «      D ]  \  }} ||||«      }Œ |S )úH
        Computes the output length of the convolutional layers
        c                ó   — | |z
  |z  dz   S r™   r(   ©Úinput_lengthrð   Ústrides      r*   Ú_conv_out_lengthzNTFWav2Vec2MainLayer._get_feat_extract_output_lengths.<locals>._conv_out_lengthÅ  s   € ð ! ;Ñ.°6Ñ9¸AÑ=Ð=r)   )Úzipr©   r  r  )rŠ   Úinput_lengthsr  rð   r  s        r*   Ú _get_feat_extract_output_lengthsz4TFWav2Vec2MainLayer._get_feat_extract_output_lengthsÀ  sP   € ò
	>ô
 $' t§{¡{×'>Ñ'>ÀÇÁ×@WÑ@WÓ#Xò 	QÑˆK˜Ù,¨]¸KÈÓP‰Mð	Qð Ðr)   c                óü  — t        |«      \  }}}t        | j                  dd«      s|S |�€t        j                  t        j
                  |dd…dd…t        j                  f   t        j                  «      | j                  t        j                  t        j                  dd…f   |«      }nÑ| j                  j                  dkD  r¸t        ||f| j                  j                  | j                  j                  d¬«      }t        j                  t        j
                  |dd…dd…t        j                  f   t        j                  «      | j                  t        j                  t        j                  dd…f   |«      }| j                  j                  dkD  rgt        ||f| j                  j                  | j                  j                  ¬«      }t        j                  |dd…t        j                  dd…f   |d«      }|S )zš
        Masks extracted features along time axis and/or along feature axis according to
        [SpecAugment](https://arxiv.org/abs/1904.08779).
        Úapply_spec_augmentTNr   r   )ra   rb   rc   )ra   rb   )r   r!  r©   r,   ÚwhererU   r^   rä   rý  rÿ  rk   Úmask_time_lengthr   Úmask_feature_length)rŠ   r!   Úmask_time_indicesrd   re   r@  Úmask_feature_indicess          r*   Ú_mask_hidden_statesz'TFWav2Vec2MainLayer._mask_hidden_statesÏ  s‰  € ô
 4>¸mÓ3LÑ0ˆ
�O [ô �t—{‘{Ð$8¸$Ô?Ø Ð àÐ(äŸH™HÜ—‘Ð)ª!ªQ´·
±
Ð*:Ñ;¼R¿W¹WÓEØ×&Ñ&¤r§z¡z´2·:±:ºqÐ'@ÑAØó‰Mð �[‰[×'Ñ'¨!Ò+ä 5Ø˜_Ð-ØŸ+™+×4Ñ4Ø ŸK™K×8Ñ8Øô	!Ðô ŸH™HÜ—‘Ð)ª!ªQ´·
±
Ð*:Ñ;¼R¿W¹WÓEØ×&Ñ&¤r§z¡z´2·:±:ºqÐ'@ÑAØóˆMð �;‰;×(Ñ(¨1Ò,Ü#8Ø˜[Ð)ØŸ+™+×7Ñ7Ø ŸK™K×;Ñ;ô$Ð ô
 ŸH™HÐ%9º!¼R¿Z¹ZÊÐ:JÑ%KÈ]Ð\]Ó^ˆMàÐr)   c                ó&  — | j                  t        j                  |t        j                  «      |
¬«      }|�S| j	                  t        j
                  |d«      «      }t        j                  |t        |«      d   |j                  ¬«      }| j                  ||
¬«      \  }}|j                  dd «      }|
r| j                  ||¬«      }| j                  |||||	|
¬«      }|d   }|	s
||f|dd  z   S t        |||j                  |j                  ¬	«      S )
Nro  r:   r   )ÚmaxlenrQ   r  )r  ©rŽ  r¹  rÞ  rß  rp  r   )r   r    r!   r"   )rø  r,   rU   rV   r
  rù   Úsequence_maskr   rQ   rù  r€   r  rú  r   r!   r"   )rŠ   rU  rŽ  Útoken_type_idsÚposition_idsÚ	head_maskÚinputs_embedsr¹  rÞ  rß  rp  r‹   r    Úoutput_lengthsr!   r  Úencoder_outputss                    r*   r¥   zTFWav2Vec2MainLayer.callû  s3  € ð  ×1Ñ1´"·'±'¸,ÌÏ
É
Ó2SÐ^fÐ1ÓgÐð Ð%à!×BÑBÄ2Ç=Á=ÐQ_ÐacÓCdÓeˆNä×-Ñ-Ø¤zÐ2BÓ'CÀAÑ'FÐN^×NdÑNdôˆNð +/×*AÑ*AÐBRÐ]eÐ*AÓ*fÑ'ˆÐ'à"ŸJ™JÐ':¸DÓAÐÙØ ×4Ñ4°]ÐVgÐ4ÓhˆMàŸ,™,ØØ)Ø/Ø!5Ø#Øð 'ó 
ˆð (¨Ñ*ˆáØ!Ð#3Ð4°ÀqÀrÐ7JÑJÐJä(Ø+Ø-Ø)×7Ñ7Ø&×1Ñ1ô	
ð 	
r)   rs  r¬   )r	  r(  )r!   r(  r  rš  ©	NNNNNNNNF)rU  r(  rŽ  rš  r  rš  r  rš  r  rš  r  rš  r¹  r›  rÞ  r›  rß  r›  rp  rä   r‹   r   )r#   r$   r%   r   Úconfig_classry   r•   r
  r  r   r¥   rè   ré   s   @r*   rö  rö  Ÿ  s»   ø„ à!€Lõ	Eó)ó$ô*ðX ð ,0Ø+/Ø)-Ø&*Ø*.Ø,0Ø/3Ø&*Øð1
àð1
ð )ð1
ð )ð	1
ð
 'ð1
ð $ð1
ð (ð1
ð *ð1
ð -ð1
ð $ð1
ð ð1
ð ò1
ó ô1
r)   rö  c                  óh   ‡ — e Zd ZdZeZdZdZed„ «       Z	ed„ «       Z
ˆ fd„Zd	d„Z	 d		 	 	 d
d„Zˆ xZS )ÚTFWav2Vec2PreTrainedModelz†
    An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
    models.
    Úwav2vec2rU  c                óœ   — t        j                  dt         j                  d¬«      t        j                  dt         j                  d¬«      dœS )N)NNrU  r°  rŽ  ©rU  rŽ  )r,   Ú
TensorSpecrV   rÐ   s    r*   Úinput_signaturez)TFWav2Vec2PreTrainedModel.input_signature:  s7   € ô ŸM™M¨,¼¿
¹
ÈÔXÜ Ÿm™m¨L¼"¿*¹*ÐK[Ô\ñ
ð 	
r)   c                ó¬   — t         j                  j                  dt         j                  ¬«      t        j                  dt         j                  ¬«      dœS )N)r   iô  )r`   rQ   r#  )r,   r/   r0   rV   r\   rÐ   s    r*   Údummy_inputsz&TFWav2Vec2PreTrainedModel.dummy_inputsA  s;   € ô ŸI™I×-Ñ-°HÄBÇJÁJÐ-ÓOÜ Ÿg™g¨H¼B¿J¹JÔGñ
ð 	
r)   c                ó†   •— t        ‰| �  |g|¢­i |¤Ž t        j                  d| j                  j
                  › d�«       y )Nú
z� has backpropagation operations that are NOT supported on CPU. If you wish to train/fine-tune this model, you need a GPU or a TPU)rx   ry   ÚloggerÚwarningrŒ   r#   ©rŠ   r©   rž   r‹   rŒ   s       €r*   ry   z"TFWav2Vec2PreTrainedModel.__init__H  sD   ø€ Ü‰Ñ˜Ð3 &Ò3¨FÒ3Ü�‰Ø�—‘×(Ñ(Ð)ð *Eð Eõ	
r)   c                óT  — |€| j                   j                  n|}d„ }t        | j                   j                  | j                   j                  «      D ]  \  }} ||||«      }Œ |rBt        | j                   j                  «      D ]   } ||d| j                   j                  «      }Œ" |S )r  c                óN   — t         j                  j                  | |z
  |«      dz   S r™   )r,   r-   Úfloordivr  s      r*   r  zTTFWav2Vec2PreTrainedModel._get_feat_extract_output_lengths.<locals>._conv_out_lengthU  s#   € Ü—7‘7×#Ñ# L°;Ñ$>ÀÓGÈ!ÑKÐKr)   r   )r©   Úadd_adapterr  r  r  r@   Únum_adapter_layersÚadapter_stride)rŠ   r	  r0  r  rð   r  r6   s          r*   r
  z:TFWav2Vec2PreTrainedModel._get_feat_extract_output_lengthsO  s¤   € ð 2=Ð1D�d—k‘k×-Ò-È+ˆò	Lô $' t§{¡{×'>Ñ'>ÀÇÁ×@WÑ@WÓ#Xò 	QÑˆK˜Ù,¨]¸KÈÓP‰Mð	Qñ Ü˜4Ÿ;™;×9Ñ9Ó:ò _�Ù 0°ÀÀ4Ç;Á;×C]ÑC]Ó ^‘ð_àÐr)   c                óÜ  — t         j                  j                  |d¬«      d d …df   }| j                  ||¬«      }t        j                  |t         j
                  «      }t        j                  |«      d   }t        j                  ||f|j                  d¬«      }t        j                  |t        j                  t        j                  |«      |dz
  gd¬«      t        j                  |g|j                  ¬«      ¬	«      }t        j                  |dg¬«      }t        j                  |d¬«      }t        j                  |dg¬«      }t        j                  |t         j                  «      }|S )
Nr:   r;   )r0  r   rŽ  )rQ   rÙ   r   rP   )r7   Úupdates)r,   r-   Úcumsumr
  rU   rX   r`   r[   rQ   Útensor_scatter_nd_updater²   r@   r\   Úreverserä   )rŠ   Úfeature_vector_lengthrŽ  r0  Únon_padded_lengthsr  rd   s          r*   Ú"_get_feature_vector_attention_maskz<TFWav2Vec2PreTrainedModel._get_feature_vector_attention_mask`  s   € ô  ŸW™WŸ^™^¨NÀ˜^ÓDÂQÈÀUÑKÐØ×>Ñ>Ð?QÐ_jÐ>ÓkˆÜŸ™ ´·±Ó:ˆÜ—X‘X˜nÓ-¨aÑ0ˆ
äŸ™ØÐ.Ð/°~×7KÑ7KÐRbô
ˆô ×4Ñ4ØÜ—H‘HœbŸh™h zÓ2°NÀQÑ4FÐGÈaÔPÜ—G‘G˜Z˜L°×0DÑ0DÔEô
ˆô
 Ÿ™ N¸"¸Ô>ˆÜŸ™ >¸Ô;ˆÜŸ™ N¸"¸Ô>ˆÜŸ™ ´·±Ó9ˆØÐr)   r¬   )r8  râ   rŽ  r(  )r#   r$   r%   r&   r   r  Úbase_model_prefixÚmain_input_nameÚpropertyr%  r'  ry   r
  r:  rè   ré   s   @r*   r   r   0  sf   ø„ ñð
 "€LØ"ÐØ$€Oàñ
ó ð
ð ñ
ó ð
ô
óð$ RVðØ%(ðØ:C÷r)   r   aŠ	  

    This model inherits from [`TFPreTrainedModel`]. Check the superclass documentation for the generic methods the
    library implements for all its model (such as downloading or saving, resizing the input embeddings, pruning heads
    etc.)

    This model is also a [keras.Model](https://www.tensorflow.org/api_docs/python/tf/keras/Model) subclass. Use it
    as a regular TF 2.0 Keras Model and refer to the TF 2.0 documentation for all matter related to general usage and
    behavior.

    <Tip>

    TensorFlow models and layers in `transformers` accept two formats as input:

    - having all inputs as keyword arguments (like PyTorch models), or
    - having all inputs as a list, tuple or dict in the first positional argument.

    The reason the second format is supported is that Keras methods prefer this format when passing inputs to models
    and layers. Because of this support, when using methods like `model.fit()` things should "just work" for you - just
    pass your inputs and labels in any format that `model.fit()` supports! If, however, you want to use the second
    format outside of Keras methods like `fit()` and `predict()`, such as when creating your own layers or models with
    the Keras `Functional` API, there are three possibilities you can use to gather all the input Tensors in the first
    positional argument:

    - a single Tensor with `input_values` only and nothing else: `model(input_values)`
    - a list of varying length with one or several input Tensors IN THE ORDER given in the docstring:
    `model([input_values, attention_mask])` or `model([input_values, attention_mask, token_type_ids])`
    - a dictionary with one or several input Tensors associated to the input names given in the docstring:
    `model({"input_values": input_values, "token_type_ids": token_type_ids})`

    Note that when creating models and layers with
    [subclassing](https://keras.io/guides/making_new_layers_and_models_via_subclassing/) then you don't need to worry
    about any of this, as you can just pass inputs like you would to any other Python function!

    </Tip>

    Args:
        config ([`Wav2Vec2Config`]): Model configuration class with all the parameters of the model.
            Initializing with a config file does not load the weights associated with the model, only the
            configuration. Check out the [`~PreTrainedModel.from_pretrained`] method to load the model weights.
a	  
    Args:
        input_values (`np.ndarray`, `tf.Tensor`, `List[tf.Tensor]` `Dict[str, tf.Tensor]` or `Dict[str, np.ndarray]` and each example must have the shape `({0})`):
            Indices of input sequence tokens in the vocabulary.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.__call__`] and
            [`PreTrainedTokenizer.encode`] for details.

            [What are input IDs?](../glossary#input-ids)
        attention_mask (`np.ndarray` or `tf.Tensor` of shape `({0})`, *optional*):
            Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`:

            - 1 for tokens that are **not masked**,
            - 0 for tokens that are **masked**.

            [What are attention masks?](../glossary#attention-mask)
        token_type_ids (`np.ndarray` or `tf.Tensor` of shape `({0})`, *optional*):
            Segment token indices to indicate first and second portions of the inputs. Indices are selected in `[0,
            1]`:

            - 0 corresponds to a *sentence A* token,
            - 1 corresponds to a *sentence B* token.

            [What are token type IDs?](../glossary#token-type-ids)
        position_ids (`np.ndarray` or `tf.Tensor` of shape `({0})`, *optional*):
            Indices of positions of each input sequence tokens in the position embeddings. Selected in the range `[0,
            config.max_position_embeddings - 1]`.

            [What are position IDs?](../glossary#position-ids)
        head_mask (`np.ndarray` or `tf.Tensor` of shape `(num_heads,)` or `(num_layers, num_heads)`, *optional*):
            Mask to nullify selected heads of the self-attention modules. Mask values selected in `[0, 1]`:

            - 1 indicates the head is **not masked**,
            - 0 indicates the head is **masked**.

        inputs_embeds (`np.ndarray` or `tf.Tensor` of shape `({0}, hidden_size)`, *optional*):
            Optionally, instead of passing `input_values` you can choose to directly pass an embedded representation.
            This is useful if you want more control over how to convert `input_values` indices into associated vectors
            than the model's internal embedding lookup matrix.
        output_attentions (`bool`, *optional*):
            Whether or not to return the attentions tensors of all attention layers. See `attentions` under returned
            tensors for more detail. This argument can be used only in eager mode, in graph mode the value in the
            config will be used instead.
        output_hidden_states (`bool`, *optional*):
            Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors for
            more detail. This argument can be used only in eager mode, in graph mode the value in the config will be
            used instead.
        return_dict (`bool`, *optional*):
            Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple. This argument can be used in
            eager mode, in graph mode the value will always be set to True.
        training (`bool`, *optional*, defaults to `False``):
            Whether or not to use the model in training mode (some modules like dropout modules have different
            behaviors between training and evaluation).
zcThe bare TFWav2Vec2 Model transformer outputing raw hidden-states without any specific head on top.c                  ó¨   ‡ — e Zd Zdˆ fd„Z ee«       eee¬«      e		 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       «       «       Z
dd„Zˆ xZS )	ÚTFWav2Vec2Modelc                ó^   •— t        ‰| �  |g|¢­i |¤Ž || _        t        |d¬«      | _        y )Nr!  r°  )rx   ry   r©   rö  r!  r,  s       €r*   ry   zTFWav2Vec2Model.__init__ß  s/   ø€ Ü‰Ñ˜Ð3 &Ò3¨FÒ3ØˆŒÜ+¨F¸ÔDˆ�r)   ©Úoutput_typer  c                óØ   — |r|n| j                   j                  }|r|n| j                   j                  }|	r|	n| j                   j                  }	| j	                  |||||||||	|
¬«
      }|S )a\  

        Returns:

        Example:

        ```python
        >>> from transformers import AutoProcessor, TFWav2Vec2Model
        >>> from datasets import load_dataset
        >>> import soundfile as sf

        >>> processor = AutoProcessor.from_pretrained("facebook/wav2vec2-base-960h")
        >>> model = TFWav2Vec2Model.from_pretrained("facebook/wav2vec2-base-960h")


        >>> def map_to_array(batch):
        ...     speech, _ = sf.read(batch["file"])
        ...     batch["speech"] = speech
        ...     return batch


        >>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
        >>> ds = ds.map(map_to_array)

        >>> input_values = processor(ds["speech"][0], return_tensors="tf").input_values  # Batch size 1
        >>> hidden_states = model(input_values).last_hidden_state
        ```©
rU  rŽ  r  r  r  r  r¹  rÞ  rß  rp  )r©   rÞ  r¹  rß  r!  )rŠ   rU  rŽ  r  r  r  r  r¹  rÞ  rß  rp  r¤   s               r*   r¥   zTFWav2Vec2Model.callä  s~   € ñX 8LÑ3ÐQU×Q\ÑQ\×QqÑQqÐÙ1BÑ-ÈÏÉ×HeÑHeÐÙ%0‘k°d·k±k×6MÑ6Mˆà—-‘-Ø%Ø)Ø)Ø%ØØ'Ø/Ø!5Ø#Øð  ó 
ˆð ˆr)   c                óú   — | j                   ry d| _         t        | dd «      �Nt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       y y # 1 sw Y   y xY w)NTr!  )r”   r!  r,   r"  r!  rÙ   r•   r­   s     r*   r•   zTFWav2Vec2Model.build#  si   € Ø�:Š:ØØˆŒ
Ü�4˜ TÓ*Ð6Ü—‘˜tŸ}™}×1Ñ1Ó2ñ *Ø—‘×#Ñ# DÔ)÷*ð *ð 7÷*ð *ús   ÁA1Á1A:rs  r  )rU  r(  rŽ  rš  r  rš  r  rš  r  rš  r  rš  r¹  r›  rÞ  r›  rß  r›  rp  rä   r%  rî  r¬   )r#   r$   r%   ry   r   ÚWAV2VEC2_INPUTS_DOCSTRINGr   r   Ú_CONFIG_FOR_DOCr   r¥   r•   rè   ré   s   @r*   r?  r?  Ú  sÌ   ø„ õ
Eñ
 +Ð+DÓEÙÐ+<È?Ô[Øð ,0Ø+/Ø)-Ø&*Ø*.Ø,0Ø/3Ø&*Øð:àð:ð )ð:ð )ð	:ð
 'ð:ð $ð:ð (ð:ð *ð:ð -ð:ð $ð:ð ð:ð 
4ò:ó ó \ó Fð:÷x*r)   r?  zhTFWav2Vec2 Model with a `language modeling` head on top for Connectionist Temporal Classification (CTC).c                  óº   ‡ — e Zd Zdˆ fd„Zd„ Zd„ Ze ee«       e	e
e¬«      	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	d„«       «       «       Zd
d„Zˆ xZS )ÚTFWav2Vec2ForCTCc                ó‚  •— t        ‰| �  |g|¢­i |¤Ž t        |d¬«      | _        t        j
                  j                  |j                  «      | _        t        j
                  j                  |j                  d¬«      | _        t        |d«      r|j                  r|j                  | _        y |j                  | _        y )Nr!  r°  Úlm_headr0  )rx   ry   rö  r!  r   rÔ   rj  Úfinal_dropoutrl  rh  Ú
vocab_sizerK  Úhasattrr0  Úoutput_hidden_sizer@  r,  s       €r*   ry   zTFWav2Vec2ForCTC.__init__1  s˜   ø€ Ü‰Ñ˜Ð3 &Ò3¨FÒ3ä+¨F¸ÔDˆŒÜ—|‘|×+Ñ+¨F×,@Ñ,@ÓAˆŒÜ—|‘|×)Ñ)¨&×*;Ñ*;À)Ð)ÓLˆŒä)0°¸Ô)GÈF×L^ÒL^ˆF×%Ñ%ð 	ÕØdj×dvÑdvð 	Õr)   c                óX   — t        j                  dt        «       | j                  «        y©z©
        Calling this function will disable the gradient computation for the feature encoder so that its parameters will
        not be updated during training.
        zžThe method `freeze_feature_extractor` is deprecated and will be removed in Transformers v5. Please use the equivalent `freeze_feature_encoder` method instead.N©r[  r\  r^  Úfreeze_feature_encoderrÐ   s    r*   Úfreeze_feature_extractorz)TFWav2Vec2ForCTC.freeze_feature_extractor;  ó'   € ô
 	�‰ðQäô	
ð
 	×#Ñ#Õ%r)   c                ó:   — d| j                   j                  _        y©z¨
        Calling this function will disable the gradient computation for the feature encoder so that its parameter will
        not be updated during training.
        FN©r!  rø  r  rÐ   s    r*   rS  z'TFWav2Vec2ForCTC.freeze_feature_encoderG  ó   € ð
 5:ˆ�‰×'Ñ'Õ1r)   rA  c                ó2  — |�Nt        j                  |«      | j                  j                  k\  r"t	        d| j                  j                  › �«      ‚| j                  ||||||||	|
|¬«
      }|d   }| j                  ||¬«      }| j                  |«      }|��C|�|n$t        j                  |t         j                  ¬«      }| j
                  j                  t        j                  |d¬«      «      }t        j                  |dk\  t         j                  «      }t        j                  |d¬«      }t         j                  j                  ||||| j                  j                   d	¬
«      }| j                  j"                  dk(  rt        j                  |«      }| j                  j"                  dk(  rt        j$                  |«      }t        j&                  |d«      }nd}|
s|f|t(        d z   }|�|f|z   S |S t+        |||j,                  |j.                  ¬«      S )a¿  
        labels (`tf.Tensor` or `np.ndarray` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should be in `[-100, 0, ...,
            config.vocab_size]` (see `input_values` docstring) Tokens with indices set to `-100` are ignored (masked),
            the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`

        Returns:

        Example:

        ```python
        >>> import tensorflow as tf
        >>> from transformers import AutoProcessor, TFWav2Vec2ForCTC
        >>> from datasets import load_dataset
        >>> import soundfile as sf

        >>> processor = AutoProcessor.from_pretrained("facebook/wav2vec2-base-960h")
        >>> model = TFWav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")


        >>> def map_to_array(batch):
        ...     speech, _ = sf.read(batch["file"])
        ...     batch["speech"] = speech
        ...     return batch


        >>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
        >>> ds = ds.map(map_to_array)

        >>> input_values = processor(ds["speech"][0], return_tensors="tf").input_values  # Batch size 1
        >>> logits = model(input_values).logits
        >>> predicted_ids = tf.argmax(logits, axis=-1)

        >>> transcription = processor.decode(predicted_ids[0])

        >>> # compute loss
        >>> target_transcription = "A MAN SAID TO THE UNIVERSE SIR I EXIST"

        >>> # Pass transcription as `text` to encode labels
        >>> labels = processor(text=transcription, return_tensors="tf").input_ids

        >>> loss = model(input_values, labels=labels).loss
        ```Nz$Label values must be <= vocab_size: rD  r   ro  rP   r:   r;   F)ÚlogitsÚlabelsÚlogit_lengthÚlabel_lengthÚblank_indexÚlogits_time_majorÚsumr·   rO   ©Úlossr[  r!   r"   )r,   Ú
reduce_maxr©   rM  rR   r!  rl  rK  r_   rV   r
  rù   rU   rX   r1   Úctc_lossÚpad_token_idÚctc_loss_reductionÚreduce_meanr=   Ú_HIDDEN_STATES_START_POSITIONr   r!   r"   )rŠ   rU  rŽ  r  r  r  r  r¹  r\  rÞ  rß  rp  r¤   r!   r[  r	  Úlabels_maskÚtarget_lengthsrc  r  s                       r*   r¥   zTFWav2Vec2ForCTC.callN  sñ  € ðx Ð¤"§-¡-°Ó"7¸4¿;¹;×;QÑ;QÒ"QÜÐCÀDÇKÁK×DZÑDZÐC[Ð\Ó]Ð]à—-‘-Ø%Ø)Ø)Ø%ØØ'Ø/Ø!5Ø#Øð  ó 
ˆð   ™
ˆØŸ™ ]¸X˜ÓFˆà—‘˜mÓ,ˆàÑà"0Ð"<‘Ä"Ç,Á,È|Ôce×cmÑcmÔBnð ð !ŸM™M×JÑJÌ2Ï=É=ÐYgÐnpÔKqÓrˆMô Ÿ'™' &¨A¡+¬r¯x©xÓ8ˆKÜŸ]™]¨;¸RÔ@ˆNä—5‘5—>‘>ØØØ*Ø+Ø ŸK™K×4Ñ4Ø"'ð "ó ˆDð �{‰{×-Ñ-°Ò6Ü—}‘} TÓ*�Ø�{‰{×-Ñ-°Ò7Ü—~‘~ dÓ+�ä—:‘:˜d DÓ)‰DàˆDáØ�Y Ô)FÐ)GÐ!HÑHˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEäØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r)   c                óà  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �[t        j                  | j                  j
                  «      5  | j                  j                  d d | j                  g«       d d d «       y y # 1 sw Y   ŒrxY w# 1 sw Y   y xY w)NTr!  rK  )	r”   r!  r,   r"  r!  rÙ   r•   rK  rO  r­   s     r*   r•   zTFWav2Vec2ForCTC.buildÆ  sÇ   € Ø�:Š:ØØˆŒ
Ü�4˜ TÓ*Ð6Ü—‘˜tŸ}™}×1Ñ1Ó2ñ *Ø—‘×#Ñ# DÔ)÷*ä�4˜ DÓ)Ð5Ü—‘˜tŸ|™|×0Ñ0Ó1ñ JØ—‘×"Ñ" D¨$°×0GÑ0GÐ#HÔI÷Jð Jð 6÷*ð *ú÷Jð Jús   ÁCÂ%)C$ÃC!Ã$C-rs  )
NNNNNNNNNF)rU  r(  rŽ  rš  r  rš  r  rš  r  rš  r  rš  r¹  r›  r\  rš  rÞ  r›  rß  r›  rp  r›  r%  z)Union[TFCausalLMOutput, Tuple[tf.Tensor]]r¬   )r#   r$   r%   ry   rT  rS  r   r   rF  r   r   rG  r¥   r•   rè   ré   s   @r*   rI  rI  ,  sñ   ø„ õ

ò
&ò:ð Ù*Ð+DÓEÙÐ+;È/ÔZð ,0Ø+/Ø)-Ø&*Ø*.Ø,0Ø#'Ø/3Ø&*Ø#(ðs
àðs
ð )ðs
ð )ð	s
ð
 'ðs
ð $ðs
ð (ðs
ð *ðs
ð !ðs
ð -ðs
ð $ðs
ð !ðs
ð 
3òs
ó [ó Fó ðs
÷j	Jr)   rI  c                  óv   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Ze	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Zd	d„Z	ˆ xZ
S )
Ú#TFWav2Vec2ForSequenceClassificationc                ó  •— t         ‰| �  |«       t        |d¬«      | _        |j                  dz   | _        t        j                  | j                  «       «      5  |j                  r%| j                  | j
                  fddd¬«      | _        d d d «       || _        t        j                  j                  |j                   d¬	«      | _        t        j                  j                  |j$                  d d
¬«      | _        y # 1 sw Y   ŒrxY w)Nr!  r°  r   r\   TÚlayer_weightsrþ  Ú	projector)re  rÙ   Ú
classifier)re  r  rÙ   )rx   ry   rö  r!  rÌ  Ú
num_layersr,   r"  Ú_name_scopeÚuse_weighted_layer_sumrÝ   rp  r©   r   rÔ   rh  Úclassifier_proj_sizerq  Ú
num_labelsrr  )rŠ   r©   rŒ   s     €r*   ry   z,TFWav2Vec2ForSequenceClassification.__init__Ó  sÚ   ø€ Ü‰Ñ˜Ô Ü+¨F¸ÔDˆŒØ ×2Ñ2°QÑ6ˆŒÜ�]‰]˜4×+Ñ+Ó-Ó.ñ 	Ø×,Ò,Ø%)§_¡_ØŸ?™?Ð,¸&ÈDÐWfð &5ó &�Ô"÷	ð
 ˆŒÜŸ™×+Ñ+°&×2MÑ2MÐT_Ð+Ó`ˆŒÜŸ,™,×,Ñ,°6×3DÑ3DÐQUÐ\hÐ,Óiˆ�÷	ð 	ús   Á2C=Ã=Dc                óX   — t        j                  dt        «       | j                  «        yrQ  rR  rÐ   s    r*   rT  z<TFWav2Vec2ForSequenceClassification.freeze_feature_extractorà  rU  r)   c                ó:   — d| j                   j                  _        yrW  rX  rÐ   s    r*   rS  z:TFWav2Vec2ForSequenceClassification.freeze_feature_encoderì  rY  r)   c                óH   — | j                   j                  D ]	  }d|_        Œ y)zÒ
        Calling this function will disable the gradient computation for the base model so that its parameters will not
        be updated during training. Only the classification head will be updated.
        FN)r!  rÔ   r  )rŠ   rP  s     r*   Úfreeze_base_modelz5TFWav2Vec2ForSequenceClassification.freeze_base_modeló  s$   € ð
 —]‘]×)Ñ)ò 	$ˆEØ#ˆE�Oñ	$r)   c           	     ó
  — |�|n| j                   j                  }| j                   j                  rdn|}| j                  ||||||¬«      }| j                   j                  r||t           }	t        j                  |	d¬«      }	t
        j                  j                  | j                  d¬«      }
t        j                  |	t        j                  |
g d¢«      z  d¬«      }	n|d   }	| j                  |	«      }	|€t        j                  |	d¬«      }n¾| j                  t        |	«      d   |«      }t        j                   ||	j"                  «      }t        j$                  |	t        j&                  |d¬«      «      }	t        j(                  t        j                  |	d¬«      t        j&                  t        j                  |d¬«      d¬«      «      }| j+                  |«      }d }|�ht,        j.                  j1                  d¬«      } |t        j                  |dg«      t        j                  |d| j                   j2                  g«      «      }|s|f|t        d  z   }|�|f|z   S |S t5        |||j6                  |j8                  ¬	«      S )
NTr  r   r;   r:   )r:   r   r   r   )Úfrom_logitsrb  )r©   Úuse_return_dictru  r!  ri  r,   r²   r1   Úsoftmaxrp  rù   r=   rq  rh  r:  r   rU   rQ   Úmultiplyr?   Údividerr  r   ÚlossesÚSparseCategoricalCrossentropyrw  r   r!   r"   )rŠ   rU  rŽ  r¹  rÞ  rß  r\  rp  r¤   r!   Únorm_weightsÚpooled_outputÚpadding_maskÚpadding_mask_floatr[  rc  Úloss_fnr  s                     r*   r¥   z(TFWav2Vec2ForSequenceClassification.callû  s+  € ð &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆØ'+§{¡{×'IÒ'I™tÐOcÐà—-‘-ØØ)Ø/Ø!5Ø#Øð  ó 
ˆð �;‰;×-Ò-Ø#Ô$AÑBˆMÜŸH™H ]¸Ô;ˆMÜŸ5™5Ÿ=™=¨×);Ñ);À"˜=ÓEˆLÜŸM™M¨-¼"¿*¹*À\ÒS]Ó:^Ñ*^ÐefÔg‰Mà# A™JˆMàŸ™ }Ó5ˆØÐ!ÜŸN™N¨=¸qÔA‰Mà×BÑBÄ:ÈmÓC\Ð]^ÑC_ÐaoÓpˆLÜ!#§¡¨°}×7JÑ7JÓ!KÐÜŸK™K¨´r·~±~ÐFXÐ_aÔ7bÓcˆMÜŸI™IÜ—‘˜m°!Ô4´b·n±nÄRÇ]Á]ÐSeÐlmÔEnÐuvÔ6wóˆMð —‘ Ó/ˆØˆØÐÜ—l‘l×@Ñ@ÈTÐ@ÓRˆGÙœ2Ÿ:™: f¨r¨dÓ3´R·Z±ZÀÈÈTÏ[É[×McÑMcÐHdÓ5eÓfˆDÙØ�Y Ô)FÐ)GÐ!HÑHˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEä)ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r)   c                óî  — | j                   ry d| _         t        | dd «      �Mt        j                  | j                  j
                  «      5  | j                  j                  d «       d d d «       t        | dd «      �dt        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       t        | dd «      �et        j                  | j                  j
                  «      5  | j                  j                  d d | j                  j                  g«       d d d «       y y # 1 sw Y   ŒíxY w# 1 sw Y   ŒˆxY w# 1 sw Y   y xY w)NTr!  rq  rr  )r”   r!  r,   r"  r!  rÙ   r•   rq  r©   r@  rr  rv  r­   s     r*   r•   z)TFWav2Vec2ForSequenceClassification.build3  s,  € Ø�:Š:ØØˆŒ
Ü�4˜ TÓ*Ð6Ü—‘˜tŸ}™}×1Ñ1Ó2ñ *Ø—‘×#Ñ# DÔ)÷*ä�4˜ dÓ+Ð7Ü—‘˜tŸ~™~×2Ñ2Ó3ñ LØ—‘×$Ñ$ d¨D°$·+±+×2IÑ2IÐ%JÔK÷Lä�4˜ tÓ,Ð8Ü—‘˜tŸ™×3Ñ3Ó4ñ VØ—‘×%Ñ% t¨T°4·;±;×3SÑ3SÐ&TÔU÷Vð Vð 9÷*ð *ú÷Lð Lú÷Vð Vús$   ÁEÂ%3EÄ3E+ÅEÅE(Å+E4)NNNNNF)rU  r(  rŽ  rš  r¹  úbool | NonerÞ  rŠ  rß  rŠ  r\  rš  rp  rä   r%  z-TFSequenceClassifierOutput | Tuple[tf.Tensor]r¬   )r#   r$   r%   ry   rT  rS  r{  r   r¥   r•   rè   ré   s   @r*   rn  rn  Ò  s•   ø„ ôjò
&ò:ò$ð ð ,0Ø)-Ø,0Ø#'Ø#'Øð5
àð5
ð )ð5
ð 'ð	5
ð
 *ð5
ð !ð5
ð !ð5
ð ð5
ð 
7ò5
ó ð5
÷nVr)   rn  )rI  r?  r   rn  r#  )
r`   zTuple[int, int]ra   rã   rb   râ   rc   râ   r%  r(  r¬   )ro   r(  rp   zOptional[int])Mr&   Ú
__future__r   r[  Údataclassesr   Útypingr   r   r   r   ÚnumpyrÚ  Ú
tensorflowr,   Úactivations_tfr
   Úmodeling_tf_outputsr   r   r   Úmodeling_tf_utilsr   r   r   r   r   Útf_utilsr   r   Úutilsr   r   r   r   r   Úconfiguration_wav2vec2r   Ú
get_loggerr#   r*  ri  Ú_CHECKPOINT_FOR_DOCrG  rn   r   r8   rJ   rk   rt   rÔ   ÚLayerrv   r  rë   r  r+  r9  r>  rC  rM  rY  r`  rw  r�  r«  rÃ  rÈ  rð  rö  r   ÚWAV2VEC2_START_DOCSTRINGrF  r?  rI  rn  Ú__all__r(   r)   r*   ú<module>r›     s  ðñ !å "ã Ý !ß .Ó .ã Û å /ß bÑ b÷õ ÷ 3÷õ õ 3ð 
ˆ×	Ñ	˜HÓ	%€ð !"Ð à3Ð Ø"€ð €ð ô/ ó /ó ð/ò8òOð& ð	GØðGàðGð ðGð ð	Gð
 óGôV
6ôU˜%Ÿ,™,×,Ñ,ô Uôp5 §¡×!4Ñ!4ô 5ôp@ U§\¡\×%7Ñ%7ô @ô:G 5§<¡<×#5Ñ#5ô GôD!G 5§<¡<×#5Ñ#5ô !GôHG¨¯©×(:Ñ(:ô Gô:˜UŸ\™\×/Ñ/ô ô!+˜uŸ|™|×1Ñ1ô !+ôH
Ð!9ô 
ôN %§,¡,×"4Ñ"4ô NôBgB˜%Ÿ,™,×,Ñ,ô gBôT)U˜EŸL™L×.Ñ.ô )UôX8S˜UŸ\™\×/Ñ/ô 8Sôv6S¨E¯L©L×,>Ñ,>ô 6SôrM&˜Ÿ™×*Ñ*ô M&ô`O& u§|¡|×'9Ñ'9ô O&ðd ôM
˜%Ÿ,™,×,Ñ,ó M
ó ðM
ô`EÐ 1ô EðP(Ð ðT5Ð ñp ØiØóôK*Ð/ó K*ó	ðK*ñ\ ØrØóô_JÐ0ó _Jó	ð_JôDmVÐ*Cô mVò` v�r)   