§
    ‚ŠtjAf ã                   óÀ  — d Z ddlZddlZddlmZ ddlmZ ddlZddl	Z	ddl
mZ ddl	mZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z m!Z!m"Z"m#Z#m$Z$m%Z% ddl&m'Z'm(Z(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5 dZ6dZ7 e3j8        e9¦  «        Z:dZ; e/d¬¦  «        e G d„ de-¦  «        ¦   «         ¦   «         Z<	 	 djde=e>e>f         de?de>d e	j@        dz  d!e>d"ejA        fd#„ZBdkd$e=d%e>d&ejA        dz  fd'„ZC G d(„ d)e¦  «        ZD G d*„ d+e¦  «        ZE G d,„ d-e¦  «        ZF G d.„ d/ejG        ¦  «        ZH G d0„ d1ejG        ¦  «        ZI G d2„ d3ejG        ¦  «        ZJ G d4„ d5ejG        ¦  «        ZK	 	 dld7ejG        d8e	jL        d9e	jL        d:e	jL        d e	jL        dz  d;e?dz  d<e?d=e+e.         fd>„ZM G d?„ d@ejG        ¦  «        ZN G dA„ dBejG        ¦  «        ZO G dC„ dDe¦  «        ZP G dE„ dFe¦  «        ZQ G dG„ dHejG        ¦  «        ZR G dI„ dJejG        ¦  «        ZS G dK„ dLejG        ¦  «        ZT G dM„ dNejG        ¦  «        ZU G dO„ dPejG        ¦  «        ZV G dQ„ dRejG        ¦  «        ZWe/ G dS„ dTe(¦  «        ¦   «         ZXe/ G dU„ dVeX¦  «        ¦   «         ZY e/dW¬¦  «         G dX„ dYeX¦  «        ¦   «         ZZ e/dZ¬¦  «         G d[„ d\eX¦  «        ¦   «         Z[ e/d]¬¦  «         G d^„ d_eX¦  «        ¦   «         Z\e/ G d`„ daeX¦  «        ¦   «         Z] G db„ dcejG        ¦  «        Z^ G dd„ deejG        ¦  «        Z_ e/df¬¦  «         G dg„ dheX¦  «        ¦   «         Z`g di¢ZadS )mzPyTorch Wav2Vec2 model.é    N)ÚCallable)Ú	dataclass)Ú	load_file)Únn)ÚCrossEntropyLossé   )Úinitialization)ÚACT2FN)Úis_deepspeed_zero3_enabled)Úis_fsdp_managed_module)Úcreate_bidirectional_mask)ÚFlashAttentionKwargs)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚCausalLMOutputÚSequenceClassifierOutputÚTokenClassifierOutputÚWav2Vec2BaseModelOutputÚXVectorOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModelÚ*get_torch_context_manager_or_global_device)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚcached_fileÚcheck_torch_load_is_safeÚis_peft_availableÚloggingé   )ÚWav2Vec2Configzadapter.{}.binzadapter.{}.safetensorsé   za
    Output type of [`Wav2Vec2ForPreTraining`], with potential hidden states and attentions.
    )Úcustom_introc                   ó  — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dZ	ej        dz  ed<   dZ
ej        dz  ed<   dZeej                 dz  ed<   dZeej                 dz  ed<   dZej        dz  ed	<   dZej        dz  ed
<   dS )ÚWav2Vec2ForPreTrainingOutputa¿  
    loss (*optional*, returned when `sample_negative_indices` are passed, `torch.FloatTensor` of shape `(1,)`):
        Total loss as the sum of the contrastive loss (L_m) and the diversity loss (L_d) as stated in the [official
        paper](https://huggingface.co/papers/2006.11477).
    projected_states (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.proj_codevector_dim)`):
        Hidden-states of the model projected to *config.proj_codevector_dim* that can be used to predict the masked
        projected quantized states.
    projected_quantized_states (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.proj_codevector_dim)`):
        Quantized extracted feature vectors projected to *config.proj_codevector_dim* representing the positive
        target vectors for contrastive loss.
    codevector_perplexity (`torch.FloatTensor` of shape `(1,)`):
        The perplexity of the codevector distribution, used to measure the diversity of the codebook.
    contrastive_loss (*optional*, returned when `sample_negative_indices` are passed, `torch.FloatTensor` of shape `(1,)`):
        The contrastive loss (L_m) as stated in the [official paper](https://huggingface.co/papers/2006.11477).
    diversity_loss (*optional*, returned when `sample_negative_indices` are passed, `torch.FloatTensor` of shape `(1,)`):
        The diversity loss (L_d) as stated in the [official paper](https://huggingface.co/papers/2006.11477).
    NÚlossÚprojected_statesÚprojected_quantized_statesÚcodevector_perplexityÚhidden_statesÚ
attentionsÚcontrastive_lossÚdiversity_loss)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   ÚtorchÚFloatTensorÚ__annotations__r(   r)   r*   r+   Útupler,   r-   r.   © ó    úl/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/wav2vec2/modeling_wav2vec2.pyr&   r&   B   sì   € € € € € € ðð ð$ &*€Dˆ%Ô
˜dÑ
"Ð)Ð)Ñ)Ø15Ð�eÔ'¨$Ñ.Ð5Ð5Ñ5Ø;?Ð Ô 1°DÑ 8Ð?Ð?Ñ?Ø6:Ð˜5Ô,¨tÑ3Ð:Ð:Ñ:Ø59€M�5˜Ô*Ô+¨dÑ2Ð9Ð9Ñ9Ø26€J��eÔ'Ô(¨4Ñ/Ð6Ð6Ñ6Ø15Ð�eÔ'¨$Ñ.Ð5Ð5Ñ5Ø/3€N�EÔ%¨Ñ,Ð3Ð3Ñ3Ð3Ð3r8   r&   ÚshapeÚ	mask_probÚmask_lengthÚattention_maskÚ	min_masksÚreturnc                 ó@  ‡‡‡‡‡— | \  }Š‰dk     rt          d¦  «        ‚‰‰k    rt          d‰› d‰› d�¦  «        ‚t          j                             d¦  «                             ¦   «         Šˆˆˆˆˆfd„}|�9|                     ¦   «                              d¦  «                             ¦   «         nˆfd	„t          |¦  «        D ¦   «         }t          j	        |‰ft          ¬
¦  «        }g }	 |‰¦  «        }
|
dk    r|S |D ]·} ||¦  «        }t          j                             t          j        |‰dz
  z
  ¦  «        |d¬¦  «        }t          |¦  «        dk    r‰dz
  }n|d         }t          j        |t          j        |
|z
  t          j        ¬
¦  «        |z  g¦  «        }|	                     |¦  «         Œ¸t          j        |	¦  «        }	t          j        |	dd…dd…df         ||
‰f¦  «        }	|	                     ||
‰z  ¦  «        }	t          j        ‰¦  «        dddd…f         }t          j        |||
‰f¦  «                             ||
‰z  ¦  «        }|	|z   }	|	                     ¦   «         ‰dz
  k    r‰dz
  |	|	‰dz
  k    <   t          j        ||	dd¦  «         |S )an  
    Computes random mask spans for a given shape. Used to implement [SpecAugment: A Simple Data Augmentation Method for
    ASR](https://huggingface.co/papers/1904.08779). Note that this method is not optimized to run on TPU and should be run on
    CPU as part of the preprocessing during training.

    Args:
        shape: The shape for which to compute masks. This should be of a tuple of size 2 where
               the first element is the batch size and the second element is the length of the axis to span.
        mask_prob:  The percentage of the whole axis (between 0 and 1) which will be masked. The number of
                    independently generated mask spans of length `mask_length` is computed by
                    `mask_prob*shape[1]/mask_length`. Note that due to overlaps, `mask_prob` is an upper bound and the
                    actual percentage will be smaller.
        mask_length: size of the mask
        min_masks: minimum number of masked spans
        attention_mask: A (right-padded) attention mask which independently shortens the feature axis of
                        each batch dimension.
    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`: ú`c                 ó¸   •— t          ‰| z  ‰z  ‰z   ¦  «        }t          |‰¦  «        }|‰z  ‰k    r‰‰z  }| ‰dz
  z
  |k     rt          | ‰dz
  z
  d¦  «        }|S )z;Given input length, compute how many spans should be maskedr!   r   )ÚintÚmax)Úinput_lengthÚnum_masked_spanÚepsilonr<   r;   r>   Úsequence_lengths     €€€€€r9   Úcompute_num_masked_spanz6_compute_mask_indices.<locals>.compute_num_masked_span‹   s~   ø€ å˜i¨,Ñ6¸ÑDÀwÑNÑOÔOˆÝ˜o¨yÑ9Ô9ˆð ˜[Ñ(¨?Ò:Ð:Ø-°Ñ<ˆOð ˜;¨™?Ñ+¨oÒ=Ð=Ý! ,°+À±/Ñ"BÀAÑFÔFˆOàÐr8   Néÿÿÿÿc                 ó   •— g | ]}‰‘ŒS r7   r7   )Ú.0Ú_rH   s     €r9   ú
<listcomp>z)_compute_mask_indices.<locals>.<listcomp>ž   s   ø€ Ð9Ð9Ð9 !ˆoÐ9Ð9Ð9r8   ©Údtyper   F)Úreplace)Ú
ValueErrorÚnpÚrandomÚrandÚitemÚdetachÚsumÚtolistÚrangeÚzerosÚboolÚchoiceÚarangeÚlenÚconcatenateÚonesÚint32ÚappendÚarrayÚbroadcast_toÚreshaperD   Úput_along_axis)r:   r;   r<   r=   r>   Ú
batch_sizerI   Úinput_lengthsÚspec_aug_maskÚspec_aug_mask_idxsÚmax_num_masked_spanrE   rF   Úspec_aug_mask_idxÚdummy_mask_idxÚoffsetsrG   rH   s    `` `           @@r9   Ú_compute_mask_indicesrp   e   sP  øøøøø€ ð0 #(Ñ€J�à�Q‚€ÝÐAÑBÔBÐBà�_Ò$Ð$Ýð:Ð^ið :ð :Ø'6ð:ð :ð :ñ
ô 
ð 	
õ Œi�nŠn˜QÑÔ×$Ò$Ñ&Ô&€Gðð ð ð ð ð ð ð ð ð$ Ð%ð 	×ÒÑÔ×#Ò# BÑ'Ô'×.Ò.Ñ0Ô0Ð0à9Ð9Ð9Ð9¥u¨ZÑ'8Ô'8Ð9Ñ9Ô9ð õ ”H˜j¨/Ð:Å$ÐGÑGÔG€MØÐà1Ð1°/ÑBÔBÐà˜aÒÐØÐà%ð 5ð 5ˆà1Ð1°,Ñ?Ô?ˆõ œI×,Ò,ÝŒI�l k°A¡oÑ6Ñ7Ô7¸ÐRWð -ñ 
ô 
Ðõ Ð Ñ!Ô! QÒ&Ð&ð -¨qÑ0ˆNˆNà.¨qÔ1ˆNåœNØ¥¤Ð(;¸oÑ(MÕUWÔU]Ð ^Ñ ^Ô ^ÐaoÑ oÐpñ
ô 
Ðð 	×!Ò!Ð"3Ñ4Ô4Ð4Ð4åœÐ"4Ñ5Ô5Ðõ œØ˜1˜1˜1˜a˜a˜a ˜:Ô&¨Ð5HÈ+Ð(Vñô Ðð ,×3Ò3°JÐ@SÐVaÑ@aÑbÔbÐõ Œi˜Ñ$Ô$ T¨4°°° ]Ô3€GÝŒo˜g¨
Ð4GÈÐ'UÑVÔV×^Ò^ØÐ'¨+Ñ5ñô €Gð ,¨gÑ5Ðð ×ÒÑÔ /°AÑ"5Ò5Ð5ØGVÐYZÑGZÐÐ-°À!Ñ0CÒCÑDõ Ô�mÐ%7¸¸BÑ?Ô?Ð?àÐr8   Úfeatures_shapeÚnum_negativesÚmask_time_indicesc                 ó¢  — | \  }}t          j        |¦  «        }t          j        |||ft           j        ¬¦  «        }|�|                     t
          ¦  «        nt          j        | t
          ¬¦  «        }t          |¦  «        D ]Ë}||                              ¦   «         dz
  }|||                  }	t          j	        t          j        |dz   ¦  «        dd…df         |dz   |f¦  «        }
t           j
                             d||dz   |f¬¦  «        }|||
k    xx         dz  cc<   |	|         ||         ||         <   ||xx         ||z  z  cc<   ŒÌ|S )z>
    Sample `num_negatives` vectors from feature vectors.
    )r:   rP   NrO   r!   r   )Úsize)rS   r^   r[   rb   Úastyper\   ra   rZ   rX   re   rT   Úrandint)rq   rr   rs   rh   rH   Úsequence_length_rangeÚsampled_negative_indicesÚ	batch_idxÚhighÚmapped_masked_indicesÚfeature_indicesÚsampled_indicess               r9   Ú_sample_negative_indicesr   Ü   s†  € ð #1Ñ€J�õ œI oÑ6Ô6Ðõ  "œx¨z¸?ÈMÐ.ZÕbdÔbjÐkÑkÔkÐð +<Ð*GÐ× Ò ¥Ñ&Ô&Ð&ÍRÌWÐUcÕkoÐMpÑMpÔMpð õ ˜:Ñ&Ô&ð Kð Kˆ	Ø  Ô+×/Ò/Ñ1Ô1°AÑ5ˆØ 5Ð6GÈ	Ô6RÔ SÐåœ/­"¬)°D¸1±HÑ*=Ô*=¸a¸a¸aÀ¸gÔ*FÈÐPQÉÐS`ÐHaÑbÔbˆÝœ)×+Ò+¨A¨t¸4À!¹8À]Ð:SÐ+ÑTÔTˆà˜¨?Ò:Ð;Ð;Ô;¸qÑ@Ð;Ð;Ñ;ð MbÐbqÔLrÐ  Ô+Ð,=¸iÔ,HÑIð 	! Ð+Ð+Ô+¨y¸?Ñ/JÑJÐ+Ð+Ñ+Ð+à#Ð#r8   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚWav2Vec2NoLayerNormConvLayerr   c                 óZ  •— t          ¦   «                              ¦   «          |dk    r|j        |dz
           nd| _        |j        |         | _        t          j        | j        | j        |j        |         |j        |         |j	        ¬¦  «        | _
        t          |j                 | _        d S )Nr   r!   ©Úkernel_sizeÚstrideÚbias)ÚsuperÚ__init__Úconv_dimÚin_conv_dimÚout_conv_dimr   ÚConv1dÚconv_kernelÚconv_strideÚ	conv_biasÚconvr
   Úfeat_extract_activationÚ
activation©ÚselfÚconfigÚlayer_idÚ	__class__s      €r9   rˆ   z%Wav2Vec2NoLayerNormConvLayer.__init__ÿ   s�   ø€ Ý‰Œ×ÒÑÔÐØ<DÀqºL¸L˜6œ?¨8°a©<Ô8Ð8ÈaˆÔØ"œO¨HÔ5ˆÔå”IØÔØÔØÔ*¨8Ô4ØÔ% hÔ/ØÔ!ð
ñ 
ô 
ˆŒ	õ ! Ô!?Ô@ˆŒˆˆr8   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S ©N)r�   r’   ©r”   r+   s     r9   Úforwardz$Wav2Vec2NoLayerNormConvLayer.forward  s*   € ØŸ	š	 -Ñ0Ô0ˆØŸš¨Ñ6Ô6ˆØÐr8   ©r   ©r/   r0   r1   rˆ   r›   Ú__classcell__©r—   s   @r9   r�   r�   þ   sR   ø€ € € € € ðAð Að Að Að Að Aðð ð ð ð ð ð r8   r�   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚWav2Vec2LayerNormConvLayerr   c                 óš  •— t          ¦   «                              ¦   «          |dk    r|j        |dz
           nd| _        |j        |         | _        t          j        | j        | j        |j        |         |j        |         |j	        ¬¦  «        | _
        t          j        | j        d¬¦  «        | _        t          |j                 | _        d S )Nr   r!   rƒ   T)Úelementwise_affine)r‡   rˆ   r‰   rŠ   r‹   r   rŒ   r�   rŽ   r�   r�   Ú	LayerNormÚ
layer_normr
   r‘   r’   r“   s      €r9   rˆ   z#Wav2Vec2LayerNormConvLayer.__init__  s¶   ø€ Ý‰Œ×ÒÑÔÐØ<DÀqºL¸L˜6œ?¨8°a©<Ô8Ð8ÈaˆÔØ"œO¨HÔ5ˆÔå”IØÔØÔØÔ*¨8Ô4ØÔ% hÔ/ØÔ!ð
ñ 
ô 
ˆŒ	õ œ, tÔ'8ÈTÐRÑRÔRˆŒÝ  Ô!?Ô@ˆŒˆˆr8   c                 óÜ   — |                       |¦  «        }|                     dd¦  «        }|                      |¦  «        }|                     dd¦  «        }|                      |¦  «        }|S )NéþÿÿÿrJ   )r�   Ú	transposer¥   r’   rš   s     r9   r›   z"Wav2Vec2LayerNormConvLayer.forward#  se   € ØŸ	š	 -Ñ0Ô0ˆà%×/Ò/°°BÑ7Ô7ˆØŸš¨Ñ6Ô6ˆØ%×/Ò/°°BÑ7Ô7ˆàŸš¨Ñ6Ô6ˆØÐr8   rœ   r�   rŸ   s   @r9   r¡   r¡     sR   ø€ € € € € ðAð Að Að Að Að Aðð ð ð ð ð ð r8   r¡   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚWav2Vec2GroupNormConvLayerr   c                 ó¦  •— t          ¦   «                              ¦   «          |dk    r|j        |dz
           nd| _        |j        |         | _        t          j        | j        | j        |j        |         |j        |         |j	        ¬¦  «        | _
        t          |j                 | _        t          j        | j        | j        d¬¦  «        | _        d S )Nr   r!   rƒ   T)Ú
num_groupsÚnum_channelsÚaffine)r‡   rˆ   r‰   rŠ   r‹   r   rŒ   r�   rŽ   r�   r�   r
   r‘   r’   Ú	GroupNormr¥   r“   s      €r9   rˆ   z#Wav2Vec2GroupNormConvLayer.__init__/  s½   ø€ Ý‰Œ×ÒÑÔÐØ<DÀqºL¸L˜6œ?¨8°a©<Ô8Ð8ÈaˆÔØ"œO¨HÔ5ˆÔå”IØÔØÔØÔ*¨8Ô4ØÔ% hÔ/ØÔ!ð
ñ 
ô 
ˆŒ	õ ! Ô!?Ô@ˆŒåœ,°$Ô2CÐRVÔRcÐlpÐqÑqÔqˆŒˆˆr8   c                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S r™   )r�   r¥   r’   rš   s     r9   r›   z"Wav2Vec2GroupNormConvLayer.forward?  s;   € ØŸ	š	 -Ñ0Ô0ˆØŸš¨Ñ6Ô6ˆØŸš¨Ñ6Ô6ˆØÐr8   rœ   r�   rŸ   s   @r9   rª   rª   .  sR   ø€ € € € € ðrð rð rð rð rð rð ð ð ð ð ð ð r8   rª   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚWav2Vec2PositionalConvEmbeddingc                 óÊ  •— t          ¦   «                              ¦   «          t          j        |j        |j        |j        |j        dz  |j        ¬¦  «        | _        t          j        j	        }t          t          j        j        d¦  «        rt          j        j        j	        }t          ¦   «         rëdd l}|j                             | j        j        d¬¦  «        5   || j        dd¬¦  «        | _        d d d ¦  «         n# 1 swxY w Y   t          | j        d¦  «        r-| j        j        j        j        }| j        j        j        j        }n| j        j        }| j        j        }|j                             | |¦  «         |j                             | |¦  «         n || j        dd¬¦  «        | _        t-          |j        ¦  «        | _        t0          |j                 | _        d S )	Nr#   )r„   ÚpaddingÚgroupsÚweight_normr   )Úmodifier_rankÚweight)ÚnameÚdimÚparametrizations)r‡   rˆ   r   rŒ   Úhidden_sizeÚnum_conv_pos_embeddingsÚnum_conv_pos_embedding_groupsr�   Úutilsr¶   Úhasattrr»   r   Ú	deepspeedÚzeroÚGatheredParametersr¸   Ú	original0Ú	original1Úweight_gÚweight_vÚregister_external_parameterÚWav2Vec2SamePadLayerr´   r
   r‘   r’   )r”   r•   r¶   rÁ   rÆ   rÇ   r—   s         €r9   rˆ   z(Wav2Vec2PositionalConvEmbedding.__init__G  sþ  ø€ Ý‰Œ×ÒÑÔÐÝ”IØÔØÔØÔ6ØÔ2°aÑ7ØÔ7ð
ñ 
ô 
ˆŒ	õ ”hÔ*ˆÝ•2”8Ô,¨mÑ<Ô<ð 	@Ýœ(Ô3Ô?ˆKå%Ñ'Ô'ð 	EØÐÐÐà”×2Ò2°4´9Ô3CÐSTÐ2ÑUÔUð Ið IØ'˜K¨¬	¸ÀaÐHÑHÔH�”	ðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Iå�t”yÐ"4Ñ5Ô5ð .Øœ9Ô5Ô<ÔF�Øœ9Ô5Ô<ÔF��àœ9Ô-�Øœ9Ô-�ØŒN×6Ò6°t¸XÑFÔFÐFØŒN×6Ò6°t¸XÑFÔFÐFÐFà#˜ D¤I°HÀ!ÐDÑDÔDˆDŒIå+¨FÔ,JÑKÔKˆŒÝ  Ô!?Ô@ˆŒˆˆs   ÃC?Ã?DÄDc                 óÜ   — |                      dd¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      dd¦  «        }|S ©Nr!   r#   )r¨   r�   r´   r’   rš   s     r9   r›   z'Wav2Vec2PositionalConvEmbedding.forwardh  se   € Ø%×/Ò/°°1Ñ5Ô5ˆàŸ	š	 -Ñ0Ô0ˆØŸš ]Ñ3Ô3ˆØŸš¨Ñ6Ô6ˆà%×/Ò/°°1Ñ5Ô5ˆØÐr8   r�   rŸ   s   @r9   r²   r²   F  sM   ø€ € € € € ðAð Að Að Að AðBð ð ð ð ð ð r8   r²   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )rÉ   c                 ól   •— t          ¦   «                              ¦   «          |dz  dk    rdnd| _        d S )Nr#   r   r!   )r‡   rˆ   Únum_pad_remove)r”   r½   r—   s     €r9   rˆ   zWav2Vec2SamePadLayer.__init__t  s:   ø€ Ý‰Œ×ÒÑÔÐØ#:¸QÑ#>À!Ò#CÐ#C˜a˜aÈˆÔÐÐr8   c                 óJ   — | j         dk    r|d d …d d …d | j          …f         }|S ©Nr   )rÎ   rš   s     r9   r›   zWav2Vec2SamePadLayer.forwardx  s;   € ØÔ Ò"Ð"Ø)¨!¨!¨!¨Q¨Q¨QÐ0F°4Ô3FÐ2FÐ0FÐ*FÔGˆMØÐr8   r�   rŸ   s   @r9   rÉ   rÉ   s  sL   ø€ € € € € ðKð Kð Kð Kð Kðð ð ð ð ð ð r8   rÉ   c                   ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )ÚWav2Vec2FeatureEncoderz.Construct the features from raw audio waveformc                 ó¤  •‡— t          ¦   «                              ¦   «          ‰j        dk    r7t          ‰d¬¦  «        gˆfd„t	          ‰j        dz
  ¦  «        D ¦   «         z   }nD‰j        dk    r!ˆfd„t	          ‰j        ¦  «        D ¦   «         }nt          d‰j        › d	�¦  «        ‚t          j        |¦  «        | _	        d
| _
        d| _        d S )NÚgroupr   ©r–   c                 ó8   •— g | ]}t          ‰|d z   ¬¦  «        ‘ŒS )r!   rÕ   )r�   ©rL   Úir•   s     €r9   rN   z3Wav2Vec2FeatureEncoder.__init__.<locals>.<listcomp>…  s>   ø€ ð Nð Nð NØIJÕ,¨V¸aÀ!¹eÐDÑDÔDðNð Nð Nr8   r!   Úlayerc                 ó2   •— g | ]}t          ‰|¬ ¦  «        ‘ŒS )rÕ   )r¡   r×   s     €r9   rN   z3Wav2Vec2FeatureEncoder.__init__.<locals>.<listcomp>‰  s4   ø€ ð ð ð ØCDÕ*¨6¸AÐ>Ñ>Ô>ðð ð r8   z`config.feat_extract_norm` is z), but has to be one of ['group', 'layer']FT)r‡   rˆ   Úfeat_extract_normrª   rZ   Únum_feat_extract_layersrR   r   Ú
ModuleListÚconv_layersÚgradient_checkpointingÚ_requires_grad)r”   r•   rÞ   r—   s    ` €r9   rˆ   zWav2Vec2FeatureEncoder.__init__�  s  øø€ Ý‰Œ×ÒÑÔÐàÔ# wÒ.Ð.Ý5°fÀqÐIÑIÔIÐJð Nð Nð Nð NÝNSÐTZÔTrÐuvÑTvÑNwÔNwðNñ Nô Nñ ˆKˆKð Ô%¨Ò0Ð0ðð ð ð ÝHMÈfÔNlÑHmÔHmðñ ô ˆKˆKõ Øt°Ô1IÐtÐtÐtñô ð õ œ=¨Ñ5Ô5ˆÔØ&+ˆÔ#Ø"ˆÔÐÐr8   c                 óP   — |                       ¦   «         D ]	}d|_        Œ
d| _        d S ©NF)Ú
parametersÚrequires_gradrà   ©r”   Úparams     r9   Ú_freeze_parametersz)Wav2Vec2FeatureEncoder._freeze_parameters”  s4   € Ø—_’_Ñ&Ô&ð 	(ð 	(ˆEØ"'ˆEÔÐØ#ˆÔÐÐr8   c                 ór   — |d d …d f         }| j         r| j        rd|_        | j        D ]} ||¦  «        }Œ|S )NT)rà   Útrainingrä   rÞ   )r”   Úinput_valuesr+   Ú
conv_layers       r9   r›   zWav2Vec2FeatureEncoder.forward™  s[   € Ø$ Q Q Q¨ WÔ-ˆð Ôð 	/ 4¤=ð 	/Ø*.ˆMÔ'àÔ*ð 	6ð 	6ˆJØ&˜J }Ñ5Ô5ˆMˆMàÐr8   )r/   r0   r1   r2   rˆ   rç   r›   rž   rŸ   s   @r9   rÒ   rÒ   ~  s\   ø€ € € € € Ø8Ð8ð#ð #ð #ð #ð #ð&$ð $ð $ð

ð 
ð 
ð 
ð 
ð 
ð 
r8   rÒ   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚWav2Vec2FeatureProjectionc                 ó.  •— t          ¦   «                              ¦   «          t          j        |j        d         |j        ¬¦  «        | _        t          j        |j        d         |j        ¦  «        | _	        t          j
        |j        ¦  «        | _        d S )NrJ   ©Úeps)r‡   rˆ   r   r¤   r‰   Úlayer_norm_epsr¥   ÚLinearr¼   Ú
projectionÚDropoutÚfeat_proj_dropoutÚdropout©r”   r•   r—   s     €r9   rˆ   z"Wav2Vec2FeatureProjection.__init__§  sn   ø€ Ý‰Œ×ÒÑÔÐÝœ, v¤°rÔ':ÀÔ@UÐVÑVÔVˆŒÝœ) F¤O°BÔ$7¸Ô9KÑLÔLˆŒÝ”z &Ô":Ñ;Ô;ˆŒˆˆr8   c                 óˆ   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }||fS r™   )r¥   ró   rö   )r”   r+   Únorm_hidden_statess      r9   r›   z!Wav2Vec2FeatureProjection.forward­  sC   € à!Ÿ_š_¨]Ñ;Ô;ÐØŸšÐ(:Ñ;Ô;ˆØŸš ]Ñ3Ô3ˆØÐ0Ð0Ð0r8   r�   rŸ   s   @r9   rí   rí   ¦  sG   ø€ € € € € ð<ð <ð <ð <ð <ð1ð 1ð 1ð 1ð 1ð 1ð 1r8   rí   ç        ÚmoduleÚqueryÚkeyÚvalueÚscalingrö   Úkwargsc                 ó®  — |€|                      d¦  «        dz  }t          j        ||                     dd¦  «        ¦  «        |z  }|�||z   }t          j                             |d¬¦  «        }t          j                             ||| j        ¬¦  «        }t          j        ||¦  «        }	|	                     dd¦  «         	                    ¦   «         }	|	|fS )NrJ   ç      à¿r#   r   ©rº   )Úpré   r!   )
ru   r3   Úmatmulr¨   r   Ú
functionalÚsoftmaxrö   ré   Ú
contiguous)
rû   rü   rý   rþ   r=   rÿ   rö   r   Úattn_weightsÚattn_outputs
             r9   Úeager_attention_forwardr  ¶  sÈ   € ð €Ø—*’*˜R‘.”. DÑ(ˆõ ”<  s§}¢}°Q¸Ñ':Ô':Ñ;Ô;¸gÑE€LàÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2Ð(Ñ>Ô>€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€Lå”,˜|¨UÑ3Ô3€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€Kà˜Ð$Ð$r8   c                   óþ   ‡ — e Zd ZdZ	 	 	 	 	 ddededed	ed
edededz  fˆ fd„Z	 	 	 dde	j
        de	j
        dz  de	j
        dz  dedz  dee         dee	j
        e	j
        dz  ee	j
                 dz  f         fd„Zˆ xZS )ÚWav2Vec2Attentionz=Multi-headed attention from 'Attention Is All You Need' paperrú   FTNÚ	embed_dimÚ	num_headsrö   Ú
is_decoderr†   Ú	is_causalr•   c                 ó
  •— t          ¦   «                              ¦   «          || _        || _        || _        ||z  | _        || _        | j        |z  | j        k    rt          d| j        › d|› d�¦  «        ‚| j        dz  | _        || _	        || _
        t          j        |||¬¦  «        | _        t          j        |||¬¦  «        | _        t          j        |||¬¦  «        | _        t          j        |||¬¦  «        | _        d S )Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).r  )r†   )r‡   rˆ   r  r  rö   Úhead_dimr•   rR   rÿ   r  r  r   rò   Úk_projÚv_projÚq_projÚout_proj)	r”   r  r  rö   r  r†   r  r•   r—   s	           €r9   rˆ   zWav2Vec2Attention.__init__Õ  s  ø€ õ 	‰Œ×ÒÑÔÐØ"ˆŒØ"ˆŒØˆŒØ! YÑ.ˆŒØˆŒàŒM˜IÑ%¨$¬.Ò8Ð8Ýð3ÈdÌnð 3ð 3Ø%.ð3ð 3ð 3ñô ð ð ”} dÑ*ˆŒØ$ˆŒØ"ˆŒå”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝ”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝ”i 	¨9¸4Ð@Ñ@Ô@ˆŒÝœ	 )¨Y¸TÐBÑBÔBˆŒˆˆr8   r+   Úkey_value_statesr=   Úoutput_attentionsr   r?   c                 óú  — |du}|j         dd…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }	|r|n|}
g |
j         dd…         ¢d‘| j        ‘R }|                      |
¦  «                             |¦  «                             dd¦  «        }|                      |
¦  «                             |¦  «                             dd¦  «        }t          j        | j	        j
        t          ¦  «        } || |	|||f| j        sdn| j        | j        |dœ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        }||dfS )z#Input shape: Batch x Time x ChannelNrJ   r!   r#   rú   )rö   rÿ   r  )r:   r  r  Úviewr¨   r  r  r   Úget_interfacer•   Ú_attn_implementationr  ré   rö   rÿ   rf   r  r  )r”   r+   r  r=   r  r   Úis_cross_attentionÚinput_shapeÚhidden_shapeÚquery_statesÚcurrent_statesÚkv_shapeÚ
key_statesÚvalue_statesÚattention_interfacer
  r	  s                    r9   r›   zWav2Vec2Attention.forwardô  s½  € ð .°TÐ9Ðð $Ô)¨#¨2¨#Ô.ˆà8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆð —{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆà-?ÐRÐ)Ð)À]ˆØB�^Ô)¨#¨2¨#Ô.ÐB°ÐB°D´MÐBÐBˆØ—[’[ Ñ0Ô0×5Ò5°hÑ?Ô?×IÒIÈ!ÈQÑOÔOˆ
Ø—{’{ >Ñ2Ô2×7Ò7¸ÑAÔA×KÒKÈAÈqÑQÔQˆå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð
%
ð  $œ}Ð>�C�C°$´,Ø”LØ/ð
%
ð 
%
ð ð
%
ð 
%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—m’m KÑ0Ô0ˆà˜L¨$Ð.Ð.r8   )rú   FTFN)NNF)r/   r0   r1   r2   rC   Úfloatr\   r"   rˆ   r3   ÚTensorr   r   r6   r›   rž   rŸ   s   @r9   r  r  Ò  sJ  ø€ € € € € ØGÐGð Ø ØØØ(,ðCð CàðCð ðCð ð	Cð
 ðCð ðCð ðCð  Ñ%ðCð Cð Cð Cð Cð CðD 15Ø.2Ø).ð0/ð 0/à”|ð0/ð  œ,¨Ñ-ð0/ð œ tÑ+ð	0/ð
   $™;ð0/ð Ð-Ô.ð0/ð 
ˆuŒ|˜Uœ\¨DÑ0°%¸¼Ô2EÈÑ2LÐLÔ	Mð0/ð 0/ð 0/ð 0/ð 0/ð 0/ð 0/ð 0/r8   r  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚWav2Vec2FeedForwardc                 óÌ  •— t          ¦   «                              ¦   «          t          j        |j        ¦  «        | _        t          j        |j        |j        ¦  «        | _	        t          |j        t          ¦  «        rt          |j                 | _        n|j        | _        t          j        |j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        d S r™   )r‡   rˆ   r   rô   Úactivation_dropoutÚintermediate_dropoutrò   r¼   Úintermediate_sizeÚintermediate_denseÚ
isinstanceÚ
hidden_actÚstrr
   Úintermediate_act_fnÚoutput_denseÚhidden_dropoutÚoutput_dropoutr÷   s     €r9   rˆ   zWav2Vec2FeedForward.__init__(  s°   ø€ Ý‰Œ×ÒÑÔÐÝ$&¤J¨vÔ/HÑ$IÔ$IˆÔ!å"$¤)¨FÔ,>ÀÔ@XÑ"YÔ"YˆÔÝ�fÔ'­Ñ-Ô-ð 	9Ý'-¨fÔ.?Ô'@ˆDÔ$Ð$à'-Ô'8ˆDÔ$åœI fÔ&>ÀÔ@RÑSÔSˆÔÝ œj¨Ô)>Ñ?Ô?ˆÔÐÐr8   c                 óØ   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|S r™   )r/  r3  r-  r4  r6  rš   s     r9   r›   zWav2Vec2FeedForward.forward5  sg   € Ø×/Ò/°Ñ>Ô>ˆØ×0Ò0°Ñ?Ô?ˆØ×1Ò1°-Ñ@Ô@ˆà×)Ò)¨-Ñ8Ô8ˆØ×+Ò+¨MÑ:Ô:ˆØÐr8   r�   rŸ   s   @r9   r*  r*  '  sL   ø€ € € € € ð@ð @ð @ð @ð @ðð ð ð ð ð ð r8   r*  c                   ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )ÚWav2Vec2EncoderLayerc                 ó�  •— t          ¦   «                              ¦   «          t          |j        |j        |j        d|¬¦  «        | _        t          j        |j	        ¦  «        | _
        t          j        |j        |j        ¬¦  «        | _        t          |¦  «        | _        t          j        |j        |j        ¬¦  «        | _        d S )NF©r  r  rö   r  r•   rï   )r‡   rˆ   r  r¼   Únum_attention_headsÚattention_dropoutÚ	attentionr   rô   r5  rö   r¤   rñ   r¥   r*  Úfeed_forwardÚfinal_layer_normr÷   s     €r9   rˆ   zWav2Vec2EncoderLayer.__init__@  s¬   ø€ Ý‰Œ×ÒÑÔÐÝ*ØÔ(ØÔ0ØÔ,ØØð
ñ 
ô 
ˆŒõ ”z &Ô"7Ñ8Ô8ˆŒÝœ, vÔ'9¸vÔ?TÐUÑUÔUˆŒÝ/°Ñ7Ô7ˆÔÝ "¤¨VÔ-?ÀVÔEZÐ [Ñ [Ô [ˆÔÐÐr8   NFc                 ó  — |}|                       |||¬¦  «        \  }}}|                      |¦  «        }||z   }|                      |¦  «        }||                      |¦  «        z   }|                      |¦  «        }|f}|r||fz  }|S ©N©r=   r  )r>  rö   r¥   r?  r@  ©r”   r+   r=   r  Úattn_residualr	  rM   Úoutputss           r9   r›   zWav2Vec2EncoderLayer.forwardO  s¨   € Ø%ˆØ)-¯ªØ¨.ÐL]ð *8ñ *
ô *
Ñ&ˆ�| Qð Ÿš ]Ñ3Ô3ˆØ%¨Ñ5ˆàŸš¨Ñ6Ô6ˆØ%¨×(9Ò(9¸-Ñ(HÔ(HÑHˆØ×-Ò-¨mÑ<Ô<ˆà Ð"ˆàð 	'Ø˜�Ñ&ˆGàˆr8   râ   r�   rŸ   s   @r9   r9  r9  ?  sQ   ø€ € € € € ð\ð \ð \ð \ð \ðð ð ð ð ð ð ð r8   r9  c                   óR   ‡ — e Zd Zˆ fd„Z	 	 ddej        dej        dz  defd„Zˆ xZS )	Ú#Wav2Vec2EncoderLayerStableLayerNormc                 óì  •— t          ¦   «                              ¦   «          t          |j        |j        |j        d|¬¦  «        | _        t          j        |j	        ¦  «        | _
        t          j        |j        |j        ¬¦  «        | _        t          |¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t#          |dd ¦  «        �t%          |¦  «        | _        d S d | _        d S )NFr;  rï   Úadapter_attn_dim)r‡   rˆ   r  r¼   r<  r=  r>  r   rô   r5  rö   r¤   rñ   r¥   r*  r?  r@  ÚgetattrÚWav2Vec2AttnAdapterLayerÚadapter_layerr÷   s     €r9   rˆ   z,Wav2Vec2EncoderLayerStableLayerNorm.__init__d  sÝ   ø€ Ý‰Œ×ÒÑÔÐÝ*ØÔ(ØÔ0ØÔ,ØØð
ñ 
ô 
ˆŒõ ”z &Ô"7Ñ8Ô8ˆŒÝœ, vÔ'9¸vÔ?TÐUÑUÔUˆŒÝ/°Ñ7Ô7ˆÔÝ "¤¨VÔ-?ÀVÔEZÐ [Ñ [Ô [ˆÔå�6Ð-¨tÑ4Ô4Ð@Ý!9¸&Ñ!AÔ!AˆDÔÐÐà!%ˆDÔÐÐr8   NFr+   r=   r  c                 óJ  — |}|                       |¦  «        }|                      |||¬¦  «        \  }}}|                      |¦  «        }||z   }||                      |                      |¦  «        ¦  «        z   }| j        �||                      |¦  «        z   }|f}|r||fz  }|S rB  )r¥   r>  rö   r?  r@  rM  rD  s           r9   r›   z+Wav2Vec2EncoderLayerStableLayerNorm.forwardw  sÇ   € ð &ˆØŸš¨Ñ6Ô6ˆØ)-¯ªØ¨.ÐL]ð *8ñ *
ô *
Ñ&ˆ�| Qð Ÿš ]Ñ3Ô3ˆØ%¨Ñ5ˆØ%¨×(9Ò(9¸$×:OÒ:OÐP]Ñ:^Ô:^Ñ(_Ô(_Ñ_ˆàÔÐ)Ø)¨D×,>Ò,>¸}Ñ,MÔ,MÑMˆMà Ð"ˆàð 	'Ø˜�Ñ&ˆGàˆr8   râ   )	r/   r0   r1   rˆ   r3   r(  r\   r›   rž   rŸ   s   @r9   rH  rH  c  s~   ø€ € € € € ð&ð &ð &ð &ð &ð, /3Ø"'ð	ð à”|ðð œ tÑ+ðð  ð	ð ð ð ð ð ð ð r8   rH  c                   ó^   ‡ — e Zd Zˆ fd„Z	 	 	 	 ddej        dej        dz  deded	ef
d
„Zˆ xZ	S )ÚWav2Vec2Encoderc                 ó‚  •‡— t          ¦   «                              ¦   «          ‰| _        t          ‰¦  «        | _        t          j        ‰j        ‰j        ¬¦  «        | _	        t          j
        ‰j        ¦  «        | _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nrï   c                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r7   )r9  ©rL   rM   r•   s     €r9   rN   z,Wav2Vec2Encoder.__init__.<locals>.<listcomp>˜  s"   ø€ Ð$kÐ$kÐ$kÀaÕ%9¸&Ñ%AÔ%AÐ$kÐ$kÐ$kr8   F©r‡   rˆ   r•   r²   Úpos_conv_embedr   r¤   r¼   rñ   r¥   rô   r5  rö   rÝ   rZ   Únum_hidden_layersÚlayersrß   r÷   s    `€r9   rˆ   zWav2Vec2Encoder.__init__’  s¡   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ=¸fÑEÔEˆÔÝœ, vÔ'9¸vÔ?TÐUÑUÔUˆŒÝ”z &Ô"7Ñ8Ô8ˆŒÝ”mÐ$kÐ$kÐ$kÐ$kÍ5ÐQWÔQiÑKjÔKjÐ$kÑ$kÔ$kÑlÔlˆŒØ&+ˆÔ#Ð#Ð#r8   NFTr+   r=   r  Úoutput_hidden_statesÚreturn_dictc                 óö  — |rdnd }|rdnd }|�;|                      d¦  «                             dd|j        d         ¦  «        }d|| <   t          | j        ||¬¦  «        }|                      |¦  «        }	||	                     |j        ¦  «        z   }|                      |¦  «        }|  	                    |¦  «        }t          ¦   «         pt          | ¦  «        }
| j        D ]a}|r||fz   }t          j        g ¦  «        }| j        o|| j        j        k     }|r|
r ||||¬¦  «        }|d         }|rd}|r||d         fz   }Œb|r||fz   }|st#          d	„ |||fD ¦   «         ¦  «        S t%          |||¬
¦  «        S )Nr7   rJ   r!   r#   r   ©r•   Úinputs_embedsr=   rC  ©NNc              3   ó   K  — | ]}|®|V — Œ	d S r™   r7   ©rL   Úvs     r9   ú	<genexpr>z*Wav2Vec2Encoder.forward.<locals>.<genexpr>Ñ  ó(   è è € ÐmÐm˜qÐ_`Ð_l˜Ð_lÐ_lÐ_lÐ_lÐmÐmr8   ©Úlast_hidden_stater+   r,   )Ú	unsqueezeÚrepeatr:   r   r•   rU  ÚtoÚdevicer¥   rö   r   r   rW  r3   rU   ré   Ú	layerdropr6   r   ©r”   r+   r=   r  rX  rY  Úall_hidden_statesÚall_self_attentionsÚexpand_attention_maskÚposition_embeddingsÚsynced_gpusrÙ   Údropout_probabilityÚskip_the_layerÚlayer_outputss                  r9   r›   zWav2Vec2Encoder.forward›  s  € ð #7Ð@˜B˜B¸DÐØ$5Ð?˜b˜b¸4ÐàÐ%à$2×$<Ò$<¸RÑ$@Ô$@×$GÒ$GÈÈ1ÈmÔNaÐbcÔNdÑ$eÔ$eÐ!Ø45ˆMÐ0Ð0Ñ1å2Ø”;Ø'Ø)ð
ñ 
ô 
ˆð #×1Ò1°-Ñ@Ô@ÐØ%Ð(;×(>Ò(>¸}Ô?SÑ(TÔ(TÑTˆØŸš¨Ñ6Ô6ˆØŸš ]Ñ3Ô3ˆå0Ñ2Ô2ÐRÕ6LÈTÑ6RÔ6Rˆà”[ð 	Pð 	PˆEØ#ð IØ$5¸Ð8HÑ$HÐ!õ #(¤*¨R¡.¤.Ðà!œ]ÐZÐ/BÀTÄ[ÔEZÒ/ZˆNØ!ð 1 [ð 1à % Ø!°.ÐTeð!ñ !ô !�ð !.¨aÔ 0�àð -Ø ,�à ð PØ&9¸]È1Ô=MÐ<OÑ&OÐ#øàð 	EØ 1°]Ð4DÑ DÐàð 	nÝÐmÐm ]Ð4EÐGZÐ$[ÐmÑmÔmÑmÔmÐmÝØ+Ø+Ø*ð
ñ 
ô 
ð 	
r8   ©NFFT)
r/   r0   r1   rˆ   r3   Útensorr(  r\   r›   rž   rŸ   s   @r9   rP  rP  ‘  s˜   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð /3Ø"'Ø%*Ø ð;
ð ;
à”|ð;
ð œ tÑ+ð;
ð  ð	;
ð
 #ð;
ð ð;
ð ;
ð ;
ð ;
ð ;
ð ;
ð ;
ð ;
r8   rP  c                   ó.   ‡ — e Zd Zˆ fd„Z	 	 	 	 dd„Zˆ xZS )ÚWav2Vec2EncoderStableLayerNormc                 ó‚  •‡— t          ¦   «                              ¦   «          ‰| _        t          ‰¦  «        | _        t          j        ‰j        ‰j        ¬¦  «        | _	        t          j
        ‰j        ¦  «        | _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nrï   c                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r7   )rH  rS  s     €r9   rN   z;Wav2Vec2EncoderStableLayerNorm.__init__.<locals>.<listcomp>á  s"   ø€ ÐbÐbÐb¸QÕ0°Ñ8Ô8ÐbÐbÐbr8   FrT  r÷   s    `€r9   rˆ   z'Wav2Vec2EncoderStableLayerNorm.__init__Ú  s¦   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ=¸fÑEÔEˆÔÝœ, vÔ'9¸vÔ?TÐUÑUÔUˆŒÝ”z &Ô"7Ñ8Ô8ˆŒÝ”mØbÐbÐbÐbÅ%ÈÔH`ÑBaÔBaÐbÑbÔbñ
ô 
ˆŒð ',ˆÔ#Ð#Ð#r8   NFTc                 óÆ  — |rdnd }|rdnd }|�;|                      d¦  «                             dd|j        d         ¦  «        }d|| <   t          | j        ||¬¦  «        }|                      |¦  «        }	||	z   }|                      |¦  «        }t          ¦   «         pt          | ¦  «        }
| j	        D ]a}|r||fz   }t          j        g ¦  «        }| j        o|| j        j        k     }|r|
r ||||¬¦  «        }|d         }|rd}|r||d         fz   }Œb|                      |¦  «        }|r||fz   }|st          d	„ |||fD ¦   «         ¦  «        S t!          |||¬
¦  «        S )Nr7   rJ   r!   r#   r   r[  rC  r]  c              3   ó   K  — | ]}|®|V — Œ	d S r™   r7   r_  s     r9   ra  z9Wav2Vec2EncoderStableLayerNorm.forward.<locals>.<genexpr>  rb  r8   rc  )re  rf  r:   r   r•   rU  rö   r   r   rW  r3   rU   ré   ri  r¥   r6   r   rj  s                  r9   r›   z&Wav2Vec2EncoderStableLayerNorm.forwardå  sü  € ð #7Ð@˜B˜B¸DÐØ$5Ð?˜b˜b¸4ÐàÐ%à$2×$<Ò$<¸RÑ$@Ô$@×$GÒ$GÈÈ1ÈmÔNaÐbcÔNdÑ$eÔ$eÐ!Ø45ˆMÐ0Ð0Ñ1å2Ø”;Ø'Ø)ð
ñ 
ô 
ˆð #×1Ò1°-Ñ@Ô@ÐØ%Ð(;Ñ;ˆØŸš ]Ñ3Ô3ˆå0Ñ2Ô2ÐRÕ6LÈTÑ6RÔ6Rˆà”[ð 	Pð 	PˆEØ#ð IØ$5¸Ð8HÑ$HÐ!õ #(¤*¨R¡.¤.Ðà!œ]ÐZÐ/BÀTÄ[ÔEZÒ/ZˆNØ!ð 1 [ð 1ð !& Ø!°.ÐTeð!ñ !ô !�ð !.¨aÔ 0�àð -Ø ,�à ð PØ&9¸]È1Ô=MÐ<OÑ&OÐ#øàŸš¨Ñ6Ô6ˆàð 	EØ 1°]Ð4DÑ DÐàð 	nÝÐmÐm ]Ð4EÐGZÐ$[ÐmÑmÔmÑmÔmÐmÝØ+Ø+Ø*ð
ñ 
ô 
ð 	
r8   rs  r�   rŸ   s   @r9   rv  rv  Ù  sZ   ø€ € € € € ð	,ð 	,ð 	,ð 	,ð 	,ð ØØ"Øð=
ð =
ð =
ð =
ð =
ð =
ð =
ð =
r8   rv  c                   óB   ‡ — e Zd ZdZˆ fd„Zedd„¦   «         Zdd„Zˆ xZS )ÚWav2Vec2GumbelVectorQuantizerz±
    Vector quantization using gumbel softmax. See `[CATEGORICAL REPARAMETERIZATION WITH
    GUMBEL-SOFTMAX](https://huggingface.co/papers/1611.01144) for more information.
    c                 óÞ  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        |j        | j        z  dk    r t          d|j        › d| j        › d�¦  «        ‚t          j	        t          j        d| j        | j        z  |j        | j        z  ¦  «        ¦  «        | _        t          j        |j        d         | j        | j        z  ¦  «        | _        d| _        d S )Nr   z`config.codevector_dim z5 must be divisible by `config.num_codevector_groups` z for concatenationr!   rJ   r#   )r‡   rˆ   Únum_codevector_groupsr¬   Únum_codevectors_per_groupÚnum_varsÚcodevector_dimrR   r   Ú	Parameterr3   r4   Úcodevectorsrò   r‰   Úweight_projÚtemperaturer÷   s     €r9   rˆ   z&Wav2Vec2GumbelVectorQuantizer.__init__+  sõ   ø€ Ý‰Œ×ÒÑÔÐØ Ô6ˆŒØÔ8ˆŒàÔ  4¤?Ñ2°aÒ7Ð7ÝðY¨&Ô*?ð Yð YØ59´_ðYð Yð Yñô ð õ œ<ÝÔ˜a ¤°4´=Ñ!@À&ÔBWÐ[_Ô[jÑBjÑkÔkñ
ô 
ˆÔõ œ9 V¤_°RÔ%8¸$¼/ÈDÌMÑ:YÑZÔZˆÔð ˆÔÐÐr8   Nc                 óè  — |�‹|                      ¦   «         d d …d d f                              | j        ¦  «        }t          j        || t          j        | ¦  «        ¦  «        } |                      d¬¦  «        |                     ¦   «         z  }n|                      d¬¦  «        }t          j        t          j        t          j	        ||¦  «        d¬¦  «         ¦  «                             ¦   «         }|S )Nr   r  rJ   )
ÚflattenÚexpandr:   r3   ÚwhereÚ
zeros_likerX   ÚmeanÚexpÚxlogy)ÚprobsÚmaskÚmask_extendedÚmarginal_probsÚ
perplexitys        r9   Ú_compute_perplexityz1Wav2Vec2GumbelVectorQuantizer._compute_perplexity?  sÇ   € àÐØ ŸLšL™NœN¨1¨1¨1¨d°D¨=Ô9×@Ò@ÀÄÑMÔMˆMÝ”K ¨uµeÔ6FÀuÑ6MÔ6MÑNÔNˆEØ"ŸYšY¨1˜YÑ-Ô-°·²±
´
Ñ:ˆNˆNà"ŸZšZ¨A˜ZÑ.Ô.ˆNå”Y¥¤	­%¬+°nÀnÑ*UÔ*UÐ[]Ð ^Ñ ^Ô ^Ð^Ñ_Ô_×cÒcÑeÔeˆ
ØÐr8   c                 ó  — |j         \  }}}|                      |¦  «        }|                     ||z  | j        z  d¦  «        }| j        r¨t
          j                             |                     ¦   «         | j	        d¬¦  «         
                    |¦  «        }t          j        |                     ||z  | j        d¦  «                             ¦   «         d¬¦  «        }|                      ||¦  «        }nŽ|                     d¬¦  «        }	|                     |j         ¦  «                             d|	                     dd¦  «        d¦  «        }|                     ||z  | j        d¦  «        }|                      ||¦  «        }|                     ||z  d¦  «        }|                     d¦  «        | j        z  }
|
                     ||z  | j        | j        d¦  «        }|                     d¦  «                             ||d¦  «        }||fS )NrJ   T)ÚtauÚhardr  r!   g      ð?r§   )r:   r„  r  r¬   ré   r   r  Úgumbel_softmaxr'  r…  Útype_asr3   r  r“  ÚargmaxÚ	new_zerosÚscatter_re  rƒ  r€  rX   )r”   r+   rs   rh   rH   r¼   Úcodevector_probsÚcodevector_soft_distr’  Úcodevector_idxÚcodevectors_per_grouprƒ  s               r9   r›   z%Wav2Vec2GumbelVectorQuantizer.forwardK  s  € Ø3@Ô3FÑ0ˆ
�O [ð ×(Ò(¨Ñ7Ô7ˆØ%×*Ò*¨:¸Ñ+GÈ$Ì/Ñ+YÐ[]Ñ^Ô^ˆàŒ=ð 	Wå!œ}×;Ò;Ø×#Ò#Ñ%Ô%¨4Ô+;À$ð  <ñ  ô  çŠg�mÑ$Ô$ð õ
 $)¤=Ø×"Ò" :°Ñ#?ÀÄÐRTÑUÔU×[Ò[Ñ]Ô]Ðceð$ñ $ô $Ð ð ×1Ò1Ð2FÐHYÑZÔZˆJˆJð +×1Ò1°bÐ1Ñ9Ô9ˆNØ,×6Ò6°}Ô7JÑKÔK×TÒTØ�N×'Ò'¨¨AÑ.Ô.°ñ ô  Ðð  0×4Ò4°ZÀ/Ñ5QÐSWÔSbÐdfÑgÔgÐà×1Ò1Ð2BÐDUÑVÔVˆJà+×0Ò0°¸oÑ1MÈrÑRÔRÐà 0× :Ò :¸2Ñ >Ô >ÀÔAQÑ QÐØ+×0Ò0°¸oÑ1MÈtÌÐ`dÔ`mÐoqÑrÔrˆØ!—o’o bÑ)Ô)×.Ò.¨z¸?ÈBÑOÔOˆà˜JÐ&Ð&r8   r™   )	r/   r0   r1   r2   rˆ   Ústaticmethodr“  r›   rž   rŸ   s   @r9   r|  r|  %  sv   ø€ € € € € ðð ð
ð ð ð ð ð( ð	ð 	ð 	ñ „\ð	ð#'ð #'ð #'ð #'ð #'ð #'ð #'ð #'r8   r|  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚWav2Vec2Adapterc                 ó’  •‡— t          ¦   «                              ¦   «          ‰j        ‰j        k    rCt	          j        ‰j        ‰j        ¦  «        | _        t	          j        ‰j        ¦  «        | _        nd x| _        | _        t	          j	        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        ‰j        | _        d S )Nc              3   ó6   •K  — | ]}t          ‰¦  «        V — Œd S r™   )ÚWav2Vec2AdapterLayerrS  s     €r9   ra  z+Wav2Vec2Adapter.__init__.<locals>.<genexpr>|  s,   øè è € Ð#kÐ#kÀQÕ$8¸Ñ$@Ô$@Ð#kÐ#kÐ#kÐ#kÐ#kÐ#kr8   )r‡   rˆ   Úoutput_hidden_sizer¼   r   rò   Úprojr¤   Úproj_layer_normrÝ   rZ   Únum_adapter_layersrW  ri  r÷   s    `€r9   rˆ   zWav2Vec2Adapter.__init__r  s­   øø€ Ý‰Œ×ÒÑÔÐð Ô$¨Ô(:Ò:Ð:Ýœ	 &Ô"4°fÔ6OÑPÔPˆDŒIÝ#%¤<°Ô0IÑ#JÔ#JˆDÔ Ð à/3Ð3ˆDŒI˜Ô,å”mÐ#kÐ#kÐ#kÐ#kÍ%ÐPVÔPiÑJjÔJjÐ#kÑ#kÔ#kÑkÔkˆŒØÔ)ˆŒˆˆr8   c                 óX  — | j         �1| j        �*|                       |¦  «        }|                      |¦  «        }|                     dd¦  «        }| j        D ]=}t          j                             ¦   «         }| j        r|| j        k    r ||¦  «        }Œ>|                     dd¦  «        }|S rË   )r§  r¨  r¨   rW  rS   rT   ré   ri  )r”   r+   rÙ   Úlayerdrop_probs       r9   r›   zWav2Vec2Adapter.forward  s°   € àŒ9Ð  TÔ%9Ð%EØ ŸIšI mÑ4Ô4ˆMØ ×0Ò0°Ñ?Ô?ˆMà%×/Ò/°°1Ñ5Ô5ˆà”[ð 	5ð 	5ˆEÝœY×-Ò-Ñ/Ô/ˆNØ”=ð 5 ^°d´nÒ%DÐ%DØ %  mÑ 4Ô 4�øà%×/Ò/°°1Ñ5Ô5ˆØÐr8   r�   rŸ   s   @r9   r¢  r¢  q  sG   ø€ € € € € ð*ð *ð *ð *ð *ðð ð ð ð ð ð r8   r¢  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )r¥  c                 ó²   •— t          ¦   «                              ¦   «          t          j        |j        d|j        z  |j        |j        d¬¦  «        | _        d S )Nr#   r!   )r…   r´   )r‡   rˆ   r   rŒ   r¦  Úadapter_kernel_sizeÚadapter_strider�   r÷   s     €r9   rˆ   zWav2Vec2AdapterLayer.__init__‘  sU   ø€ Ý‰Œ×ÒÑÔÐÝ”IØÔ%Ø�Ô)Ñ)ØÔ&ØÔ(Øð
ñ 
ô 
ˆŒ	ˆ	ˆ	r8   c                 ór   — |                       |¦  «        }t          j                             |d¬¦  «        }|S )Nr!   r  )r�   r   r  Úglurš   s     r9   r›   zWav2Vec2AdapterLayer.forward›  s3   € ØŸ	š	 -Ñ0Ô0ˆÝœ×)Ò)¨-¸QÐ)Ñ?Ô?ˆàÐr8   r�   rŸ   s   @r9   r¥  r¥  �  sG   ø€ € € € € ð
ð 
ð 
ð 
ð 
ðð ð ð ð ð ð r8   r¥  c                   ó4   ‡ — e Zd Zˆ fd„Zdej        fd„Zˆ xZS )rL  c                 ót  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        t          j        | j        ¦  «        | _        t          j	        | j        | j        ¦  «        | _
        t          j        ¦   «         | _        t          j	        | j        | j        ¦  «        | _        dS )zŸ
        Implements adapter modules directly with 3D tensor weight as parameters and without using ModuleList to speed
        up training throughput.
        N)r‡   rˆ   rJ  Ú	input_dimr¼   Ú
hidden_dimr   r¤   Únormrò   Úlinear_1ÚReLUÚact_fnÚlinear_2r÷   s     €r9   rˆ   z!Wav2Vec2AttnAdapterLayer.__init__£  s�   ø€ õ
 	‰Œ×ÒÑÔÐØÔ0ˆŒØ Ô,ˆŒå”L ¤Ñ1Ô1ˆŒ	Ýœ	 $¤/°4´>ÑBÔBˆŒÝ”g‘i”iˆŒÝœ	 $¤.°$´/ÑBÔBˆŒˆˆr8   r+   c                 ó®   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|S r™   )r¶  r·  r¹  rº  rš   s     r9   r›   z Wav2Vec2AttnAdapterLayer.forward±  sL   € ØŸ	š	 -Ñ0Ô0ˆàŸš mÑ4Ô4ˆØŸš MÑ2Ô2ˆØŸš mÑ4Ô4ˆàÐr8   )r/   r0   r1   rˆ   r3   r4   r›   rž   rŸ   s   @r9   rL  rL  ¢  s[   ø€ € € € € ðCð Cð Cð Cð Cð UÔ%6ð ð ð ð ð ð ð ð r8   rL  c                   óÐ   ‡ — e Zd ZU eed<   dZdZdZdZdZ	dZ
dZ ej        ¦   «         ˆ fd„¦   «         Zddej        ez  d	edz  fd
„Z	 ddedej        fd„Zd„ Zd„ Zddefd„Zˆ xZS )ÚWav2Vec2PreTrainedModelr•   Úwav2vec2rê   ÚaudioTc           
      óÞ  •— t          ¦   «                              |¦  «         t          |t          ¦  «        r4|j                             ¦   «          |j                             ¦   «          dS t          |t          ¦  «        rZt          j	        |j
        j        dd¬¦  «         t          j        |j
        j        ¦  «         t          j        |j        ¦  «         dS t          |t           ¦  «        rwt          j	        |j        j        ddt%          j        d|j        j        d         |j        j        z  z  ¦  «        z  ¬¦  «         t          j        |j        j        d¦  «         dS t          |t.          ¦  «        rgt%          j        d|j        j        z  ¦  «        }t          j        |j        j        | |¬¦  «         t          j        |j        j        | |¬¦  «         dS t          |t4          j        ¦  «        rnt          j        |j        ¦  «         |j        �Pt%          j        |j        |j        |j        d         z  z  ¦  «        }t          j        |j        | |¬¦  «         dS dS dS )zInitialize the weightsrú   r!   )r‹  Ústdr   r#   )ÚaÚbN)r‡   Ú_init_weightsr0  ÚWav2Vec2ForPreTrainingÚproject_hidÚreset_parametersÚ	project_qr|  ÚinitÚnormal_r„  r¸   Úzeros_r†   Úuniform_rƒ  r²   r�   ÚmathÚsqrtr„   Úin_channelsÚ	constant_rí   ró   Úin_featuresr   rŒ   Úkaiming_normal_rµ   )r”   rû   Úkr—   s      €r9   rÄ  z%Wav2Vec2PreTrainedModel._init_weightsÆ  s:  ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%å�fÕ4Ñ5Ô5ð 	6ØÔ×/Ò/Ñ1Ô1Ð1ØÔ×-Ò-Ñ/Ô/Ð/Ð/Ð/å˜Õ =Ñ>Ô>ð 	6ÝŒL˜Ô+Ô2¸À!ÐDÑDÔDÐDÝŒK˜Ô*Ô/Ñ0Ô0Ð0ÝŒM˜&Ô,Ñ-Ô-Ð-Ð-Ð-Ý˜Õ ?Ñ@Ô@ð 	6ÝŒLØ”Ô"ØØ�œ	 ! v¤{Ô'>¸qÔ'AÀFÄKÔD[Ñ'[Ñ"\Ñ]Ô]Ñ]ðñ ô ð õ
 ŒN˜6œ;Ô+¨QÑ/Ô/Ð/Ð/Ð/Ý˜Õ 9Ñ:Ô:ð 		6Ý”	˜!˜fÔ/Ô;Ñ;Ñ<Ô<ˆAÝŒM˜&Ô+Ô2°q°b¸AÐ>Ñ>Ô>Ð>ÝŒM˜&Ô+Ô0°Q°B¸!Ð<Ñ<Ô<Ð<Ð<Ð<Ý˜¥¤	Ñ*Ô*ð 	6ÝÔ  ¤Ñ/Ô/Ð/àŒ{Ð&Ý”I˜fœm¨vÔ/AÀFÔDVÐWXÔDYÑ/YÑZÑ[Ô[�Ý”˜fœk¨a¨R°1Ð5Ñ5Ô5Ð5Ð5Ð5ð	6ð 	6ð 'Ð&r8   Nri   Úadd_adapterc                 ó  — |€| j         j        n|}d„ }t          | j         j        | j         j        ¦  «        D ]\  }} ||||¦  «        }Œ|r3t          | j         j        ¦  «        D ]} ||d| j         j        ¦  «        }Œ|S )zH
        Computes the output length of the convolutional layers
        Nc                 ó<   — t          j        | |z
  |d¬¦  «        dz   S )NÚfloor)Úrounding_moder!   )r3   Údiv©rE   r„   r…   s      r9   Ú_conv_out_lengthzRWav2Vec2PreTrainedModel._get_feat_extract_output_lengths.<locals>._conv_out_lengthì  s&   € õ ”9˜\¨KÑ7¸ÈwÐWÑWÔWÐZ[Ñ[Ð[r8   r!   )r•   rÔ  Úzipr�   rŽ   rZ   r©  r¯  )r”   ri   rÔ  rÛ  r„   r…   rM   s          r9   Ú _get_feat_extract_output_lengthsz8Wav2Vec2PreTrainedModel._get_feat_extract_output_lengthså  s´   € ð
 2=Ð1D�d”kÔ-Ð-È+ˆð	\ð 	\ð 	\õ
 $' t¤{Ô'>ÀÄÔ@WÑ#XÔ#Xð 	Qð 	QÑˆK˜Ø,Ð,¨]¸KÈÑPÔPˆMˆMàð 	_Ý˜4œ;Ô9Ñ:Ô:ð _ð _�Ø 0Ð 0°ÀÀ4Ä;ÔC]Ñ ^Ô ^��àÐr8   Úfeature_vector_lengthr=   c                 ó  — |                      d¬¦  «        d d …df         }|                      ||¬¦  «        }|                     t          j        ¦  «        }|j        d         }t          j        ||f|j        |j        ¬¦  «        }d|t          j	        |j        d         |j        ¬¦  «        |dz
  f<   | 
                    dg¦  «                              d¦  «         
                    dg¦  «                             ¦   «         }|S )NrJ   r  ©rÔ  r   )rP   rh  r!   )rh  )ÚcumsumrÝ  rg  r3   Úlongr:   r[   rP   rh  r^   Úflipr\   )r”   rÞ  r=   rÔ  Únon_padded_lengthsÚoutput_lengthsrh   s          r9   Ú"_get_feature_vector_attention_maskz:Wav2Vec2PreTrainedModel._get_feature_vector_attention_maskú  s  € ð
 ,×2Ò2°rÐ2Ñ:Ô:¸1¸1¸1¸b¸5ÔAÐà×>Ò>Ð?QÐ_jÐ>ÑkÔkˆØ'×*Ò*­5¬:Ñ6Ô6ˆà#Ô)¨!Ô,ˆ
åœØÐ.Ð/°~Ô7KÐTbÔTið
ñ 
ô 
ˆð uvˆ�œ ^Ô%9¸!Ô%<À^ÔEZÐ[Ñ[Ô[Ð]kÐnoÑ]oÐpÑqØ'×,Ò,¨b¨TÑ2Ô2×9Ò9¸"Ñ=Ô=×BÒBÀBÀ4ÑHÔH×MÒMÑOÔOˆØÐr8   c                 ó²  — | j         j        €t          | j        › d�¦  «        ‚i }|                      ¦   «         D ]N\  }}t          |t          ¦  «        r4|                     ¦   «         D ]\  }}||d                     ||g¦  «        <   Œ ŒOt          | t          ¦  «        r9| j
                             ¦   «         D ]\  }}||d                     d|g¦  «        <   Œ |S )NzF has no adapter layers. Make sure to define `config.adapter_attn_dim`.ú.Úlm_head)r•   rJ  rR   r—   Únamed_modulesr0  rL  Únamed_parametersÚjoinÚWav2Vec2ForCTCré  )r”   Úadapter_weightsr¹   rû   Ú
param_nameræ   s         r9   Ú_get_adaptersz%Wav2Vec2PreTrainedModel._get_adapters  sû   € ØŒ;Ô'Ð/Ý ¤ÐvÐvÐvÑwÔwÐwàˆØ ×.Ò.Ñ0Ô0ð 	Jð 	J‰LˆD�&Ý˜&Õ":Ñ;Ô;ð JØ)/×)@Ò)@Ñ)BÔ)Bð Jð JÑ%�J ØDI�O C§H¢H¨d°JÐ-?Ñ$@Ô$@ÑAÐAøå�d�NÑ+Ô+ð 	EØ#œ|×<Ò<Ñ>Ô>ð Eð E‘��eØ?D� §¢¨)°TÐ):Ñ ;Ô ;Ñ<Ð<àÐr8   c                 óê   — |                       ¦   «         D ],}t          |t          ¦  «        r|                      |¦  «         Œ-t          | t          ¦  «        r|                      | j        ¦  «         dS dS )zc
        (Re-)initialize attention adapter layers and lm head for adapter-only fine-tuning
        N)Úmodulesr0  rL  rÄ  rí  ré  )r”   rû   s     r9   Úinit_adapter_layersz+Wav2Vec2PreTrainedModel.init_adapter_layers  s}   € ð
 —l’l‘n”nð 	+ð 	+ˆFÝ˜&Õ":Ñ;Ô;ð +Ø×"Ò" 6Ñ*Ô*Ð*øõ �d�NÑ+Ô+ð 	-Ø×Ò˜tœ|Ñ,Ô,Ð,Ð,Ð,ð	-ð 	-r8   Útarget_langc           
      óx  ‡— | j         j        €t          d|› d�¦  «        ‚|| j        k    r"|s t                               d|› d�¦  «         dS |                     dd¦  «        }|                     dd¦  «        }|                     d	d¦  «        }|                     d
d¦  «        }|                     dd¦  «        }|                     dd¦  «        }	|                     dd¦  «        }
| j         j        }d}|
dur{t           	                    |¦  «        }	 t          |||||||	|¬¦  «        }t          |¦  «        }n9# t          $ r |
r‚ Y n*t          $ r |
rt          d|› d|› d|› d�¦  «        ‚Y nw xY w|€“t           	                    |¦  «        }	 t          |||||||	|¬¦  «        }t          ¦   «          t!          j        |dd¬¦  «        }n;# t          $ r ‚ t          $ r ‚ t          $ r t          d|› d|› d|› d�¦  «        ‚w xY w|                      ¦   «         Št'          |                     ¦   «         ¦  «        t'          ‰                     ¦   «         ¦  «        z
  }t'          ‰                     ¦   «         ¦  «        t'          |                     ¦   «         ¦  «        z
  }t+          |¦  «        dk    r)t          d|› dd                     |¦  «        › d�¦  «        ‚t+          |¦  «        dk    r)t          d|› dd                     |¦  «        › d�¦  «        ‚|d         j        d         }|| j         j        k    r=t3          j        | j         j        || j        | j        ¬¦  «        | _        || j         _        ˆfd„|                     ¦   «         D ¦   «         }|                       |d¬¦  «         || _        dS )a  
        Load a language adapter model from a pre-trained adapter model.

        Parameters:
            target_lang (`str`):
                Has to be a language id of an existing adapter weight. Adapter weights are stored in the format
                adapter.<lang>.safetensors or adapter.<lang>.bin
            force_load (`bool`, defaults to `True`):
                Whether the weights shall be loaded even if `target_lang` matches `self.target_lang`.
            cache_dir (`Union[str, os.PathLike]`, *optional*):
                Path to a directory in which a downloaded pretrained model configuration should be cached if the
                standard cache should not be used.
            force_download (`bool`, *optional*, defaults to `False`):
                Whether or not to force the (re-)download of the model weights and configuration files, overriding the
                cached versions if they exist.
            proxies (`dict[str, str]`, *optional*):
                A dictionary of proxy servers to use by protocol or endpoint, e.g., `{'http': 'foo.bar:3128',
                'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request.
            local_files_only(`bool`, *optional*, defaults to `False`):
                Whether or not to only look at local files (i.e., do not try to download the model).
            token (`str` or `bool`, *optional*):
                The token to use as HTTP bearer authorization for remote files. If `True`, or not specified, will use
                the token generated when running `hf auth login` (stored in `~/.huggingface`).
            revision (`str`, *optional*, defaults to `"main"`):
                The specific model version to use. It can be a branch name, a tag name, or a commit id, since we use a
                git-based system for storing models and other artifacts on huggingface.co, so `revision` can be any
                identifier allowed by git.

                <Tip>

                To test a pull request you made on the Hub, you can pass `revision="refs/pr/<pr_number>"`.

                </Tip>

            mirror (`str`, *optional*):
                Mirror source to accelerate downloads in China. If you are from China and have an accessibility
                problem, you can set this option to resolve it. Note that we do not guarantee the timeliness or safety.
                Please refer to the mirror site for more information.

        <Tip>

        Activate the special ["offline-mode"](https://huggingface.co/transformers/installation.html#offline-mode) to
        use this method in a firewalled environment.

        </Tip>

        Examples:

        ```python
        >>> from transformers import Wav2Vec2ForCTC, AutoProcessor

        >>> ckpt = "facebook/mms-1b-all"
        >>> processor = AutoProcessor.from_pretrained(ckpt)
        >>> model = Wav2Vec2ForCTC.from_pretrained(ckpt, target_lang="eng")
        >>> # set specific language
        >>> processor.tokenizer.set_target_lang("spa")
        >>> model.load_adapter("spa")
        ```
        NzCannot load_adapter for ú- if `config.adapter_attn_dim` is not defined.z#Adapter weights are already set to rè  Ú	cache_dirÚforce_downloadFÚproxiesÚlocal_files_onlyÚtokenÚrevisionÚuse_safetensors)Úfilenamerø  rù  rú  rû  rü  r÷  zCan't load the model for 'zœ'. If you were trying to load it from 'https://huggingface.co/models', make sure you don't have a local directory with the same name. Otherwise, make sure 'z=' is the correct path to a directory containing a file named ÚcpuT)Úmap_locationÚweights_onlyr   zThe adapter weights z has unexpected keys: z, z has missing keys: zlm_head.weight©rh  rP   c                 óN   •— i | ]!\  }}||                      ‰|         ¦  «        “Œ"S r7   )rg  )rL   rÓ  r`  rî  s      €r9   ú
<dictcomp>z8Wav2Vec2PreTrainedModel.load_adapter.<locals>.<dictcomp>Ô  s0   ø€ ÐQÐQÐQ±d°a¸�a˜Ÿš˜o¨aÔ0Ñ1Ô1ÐQÐQÐQr8   )Ústrict)!r•   rJ  rR   rô  ÚloggerÚwarningÚpopÚ_name_or_pathÚWAV2VEC2_ADAPTER_SAFE_FILEÚformatr   Úsafe_load_fileÚOSErrorÚ	ExceptionÚWAV2VEC2_ADAPTER_PT_FILEr   r3   Úloadrð  ÚsetÚkeysr_   rì  r:   Ú
vocab_sizer   rò   r¦  rh  rP   ré  ÚitemsÚload_state_dict)r”   rô  Ú
force_loadr   r÷  rø  rù  rú  rû  rü  rý  Úmodel_path_or_idÚ
state_dictÚfilepathÚweight_pathÚunexpected_keysÚmissing_keysÚtarget_vocab_sizerî  s                     @r9   Úload_adapterz$Wav2Vec2PreTrainedModel.load_adapter+  sÁ  ø€ ðx Œ;Ô'Ð/ÝÐr¸ÐrÐrÐrÑsÔsÐsà˜$Ô*Ò*Ð*°:Ð*Ý�NŠNÐOÀÐOÐOÐOÑPÔPÐPØˆFà—J’J˜{¨DÑ1Ô1ˆ	ØŸšÐ$4°eÑ<Ô<ˆØ—*’*˜Y¨Ñ-Ô-ˆØ!Ÿ:š:Ð&8¸%Ñ@Ô@ÐØ—
’
˜7 DÑ)Ô)ˆØ—:’:˜j¨$Ñ/Ô/ˆØ Ÿ*š*Ð%6¸Ñ=Ô=ˆØœ;Ô4ÐØˆ
ð  %Ð'Ð'Ý1×8Ò8¸ÑEÔEˆHðÝ)Ø$Ø%Ø#1Ø#Ø%5ØØ%Ø'ð	ñ 	ô 	�õ ,¨KÑ8Ô8�
�
øåð ð ð Ø"ð ð ðð õ
 ð ð ð à"ð Ý!ðJÐ5Eð Jð Jà=MðJð Jð ?GðJð Jð Jñô ð ðð ðøøøð ÐÝ/×6Ò6°{ÑCÔCˆHð"Ý)Ø$Ø%Ø#1Ø#Ø%5ØØ%Ø'ð	ñ 	ô 	�õ )Ñ*Ô*Ð*Ý"œZØØ!&Ø!%ðñ ô �
�
øõ ð ð ð ð åð ð ð Øåð ð ð åðFÐ1Að Fð Fà9IðFð Fð ;CðFð Fð Fñô ð ðøøøð ×,Ò,Ñ.Ô.ˆÝ˜jŸošoÑ/Ô/Ñ0Ô0µ3°×7KÒ7KÑ7MÔ7MÑ3NÔ3NÑNˆÝ˜?×/Ò/Ñ1Ô1Ñ2Ô2µS¸¿ºÑ9JÔ9JÑ5KÔ5KÑKˆåˆÑÔ !Ò#Ð#ÝÐt°KÐtÐtÐW[×W`ÒW`ÐapÑWqÔWqÐtÐtÐtÑuÔuÐuÝ�ÑÔ Ò"Ð"ÝÐn°KÐnÐnÐTX×T]ÒT]Ð^jÑTkÔTkÐnÐnÐnÑoÔoÐoð 'Ð'7Ô8Ô>¸qÔAÐØ ¤Ô 6Ò6Ð6Ýœ9Ø”Ô.Ð0AÈ$Ì+Ð]aÔ]gðñ ô ˆDŒLð &7ˆDŒKÔ"ð RÐQÐQÐQ¸j×>NÒ>NÑ>PÔ>PÐQÑQÔQˆ
Ø×Ò˜Z°ÐÑ6Ô6Ð6ð 'ˆÔÐÐs$   Ä&D< Ä<E2Å$E2Å1E2Æ<G Ç8Hr™   )T)r/   r0   r1   r"   r5   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnr3   Úno_gradrÄ  Ú
LongTensorrC   r\   rÝ  ræ  rð  ró  r2  r  rž   rŸ   s   @r9   r½  r½  »  s2  ø€ € € € € € àÐÐÑØ"ÐØ$€OØÐØ&*Ð#ØÐØ€NØÐà€U„]�_„_ð6ð 6ð 6ð 6ñ „_ð6ð<ð ¸eÔ>NÐQTÑ>Tð ÐcgÐjnÑcnð ð ð ð ð, Y]ðð Ø%(ðØ:?Ô:Jðð ð ð ð(ð ð ð -ð -ð -ðm'ð m'¨ð m'ð m'ð m'ð m'ð m'ð m'ð m'ð m'r8   r½  c                   óö   ‡ — e Zd Zdefˆ fd„Zd„ Z	 	 ddej        dej        dz  dej        dz  fd„Z	e
	 	 	 	 	 dd	ej        dz  dej        dz  dej        dz  d
edz  dedz  dedz  deez  fd„¦   «         Zˆ xZS )ÚWav2Vec2Modelr•   c                 ó  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        |j        dk    s|j        dk    rBt          j
        t          j        |j        ¦  «                             ¦   «         ¦  «        | _        |j        rt#          |¦  «        | _        nt'          |¦  «        | _        |j        rt+          |¦  «        nd | _        |                      ¦   «          d S ©Nrú   )r‡   rˆ   r•   rÒ   Úfeature_extractorrí   Úfeature_projectionÚmask_time_probÚmask_feature_probr   r‚  r3   r(  r¼   rÌ  Úmasked_spec_embedÚdo_stable_layer_normrv  ÚencoderrP  rÔ  r¢  ÚadapterÚ	post_initr÷   s     €r9   rˆ   zWav2Vec2Model.__init__Ý  sé   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒÝ!7¸Ñ!?Ô!?ˆÔÝ";¸FÑ"CÔ"CˆÔð Ô  3Ò&Ð&¨&Ô*BÀSÒ*HÐ*HÝ%'¤\µ%´,¸vÔ?QÑ2RÔ2R×2[Ò2[Ñ2]Ô2]Ñ%^Ô%^ˆDÔ"àÔ&ð 	3Ý9¸&ÑAÔAˆDŒLˆLå*¨6Ñ2Ô2ˆDŒLà28Ô2DÐN• vÑ.Ô.Ð.È$ˆŒð 	�ŠÑÔÐÐÐr8   c                 ó8   — | j                              ¦   «          dS ©z¨
        Calling this function will disable the gradient computation for the feature encoder so that its parameter will
        not be updated during training.
        N)r,  rç   ©r”   s    r9   Úfreeze_feature_encoderz$Wav2Vec2Model.freeze_feature_encoderñ  s   € ð
 	Ô×1Ò1Ñ3Ô3Ð3Ð3Ð3r8   Nr+   rs   r=   c                 ó  — t          | j        dd¦  «        s|S |                     ¦   «         \  }}}|�#| j                             |j        ¦  «        ||<   n“| j        j        dk    rƒ| j        r|t          ||f| j        j        | j        j	        || j        j
        ¬¦  «        }t          j        ||j        t          j        ¬¦  «        }| j                             |j        ¦  «        ||<   | j        j        dk    r†| j        rt          ||f| j        j        | j        j        | j        j        ¬¦  «        }t          j        ||j        t          j        ¬¦  «        }|dd…df                              d|d¦  «        }d||<   |S )	z¢
        Masks extracted features along time axis and/or along feature axis according to
        [SpecAugment](https://huggingface.co/papers/1904.08779).
        Úapply_spec_augmentTNr   )r;   r<   r=   r>   r  )r;   r<   r>   rJ   )rK  r•   ru   r0  rg  rP   r.  ré   rp   Úmask_time_lengthÚmask_time_min_masksr3   rt  rh  r\   r/  Úmask_feature_lengthÚmask_feature_min_masksrˆ  )r”   r+   rs   r=   rh   rH   r¼   Úmask_feature_indicess           r9   Ú_mask_hidden_statesz!Wav2Vec2Model._mask_hidden_statesø  s—  € õ �t”{Ð$8¸$Ñ?Ô?ð 	!Ø Ð ð 4A×3EÒ3EÑ3GÔ3GÑ0ˆ
�O [àÐ(à/3Ô/E×/HÒ/HÈÔI\Ñ/]Ô/]ˆMÐ+Ñ,Ð,ØŒ[Ô'¨!Ò+Ð+°´Ð+Ý 5Ø˜_Ð-Øœ+Ô4Ø œKÔ8Ø-Øœ+Ô9ð!ñ !ô !Ðõ !&¤Ð->À}ÔG[ÕchÔcmÐ nÑ nÔ nÐØ/3Ô/E×/HÒ/HÈÔI\Ñ/]Ô/]ˆMÐ+Ñ,àŒ;Ô(¨1Ò,Ð,°´Ð,å#8Ø˜[Ð)Øœ+Ô7Ø œKÔ;Øœ+Ô<ð	$ñ $ô $Ð õ $)¤<Ð0DÈ]ÔMaÕinÔisÐ#tÑ#tÔ#tÐ Ø#7¸¸¸¸4¸Ô#@×#GÒ#GÈÈOÐ]_Ñ#`Ô#`Ð Ø23ˆMÐ.Ñ/àÐr8   rê   r  rX  rY  r?   c                 ó:  — |�|n| j         j        }|�|n| j         j        }|�|n| j         j        }|                      |¦  «        }|                     dd¦  «        }|�#|                      |j        d         |d¬¦  «        }|                      |¦  «        \  }	}|  	                    |	||¬¦  «        }	|  
                    |	||||¬¦  «        }
|
d         }	| j        �|                      |	¦  «        }	|s|	|f|
dd…         z   S t          |	||
j        |
j        ¬	¦  «        S )
a/  
        mask_time_indices (`torch.BoolTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Indices to mask extracted features for contrastive loss. When in training mode, model learns to predict
            masked extracted features in *config.proj_codevector_dim* space.
        Nr!   r#   Frà  )rs   r=   ©r=   r  rX  rY  r   )rd  Úextract_featuresr+   r,   )r•   r  rX  rY  r,  r¨   ræ  r:   r-  r@  r2  r3  r   r+   r,   )r”   rê   r=   rs   r  rX  rY  r   rC  r+   Úencoder_outputss              r9   r›   zWav2Vec2Model.forward&  s|  € ð  2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆà×1Ò1°,Ñ?Ô?ÐØ+×5Ò5°a¸Ñ;Ô;ÐàÐ%à!×DÒDØ Ô& qÔ)¨>Àuð Eñ ô ˆNð +/×*AÒ*AÐBRÑ*SÔ*SÑ'ˆÐ'Ø×0Ò0ØÐ->È~ð 1ñ 
ô 
ˆð Ÿ,š,ØØ)Ø/Ø!5Ø#ð 'ñ 
ô 
ˆð (¨Ô*ˆàŒ<Ð#Ø ŸLšL¨Ñ7Ô7ˆMàð 	KØ!Ð#3Ð4°ÀqÀrÀrÔ7JÑJÐJå&Ø+Ø-Ø)Ô7Ø&Ô1ð	
ñ 
ô 
ð 	
r8   r]  ©NNNNN)r/   r0   r1   r"   rˆ   r8  r3   r4   r'  r@  r   r(  r\   r6   r   r›   rž   rŸ   s   @r9   r)  r)  Û  sF  ø€ € € € € ð˜~ð ð ð ð ð ð ð(4ð 4ð 4ð 7;Ø26ð	,ð ,àÔ(ð,ð !Ô,¨tÑ3ð,ð Ô(¨4Ñ/ð	,ð ,ð ,ð ,ð\ ð /3Ø6:Ø)-Ø,0Ø#'ð8
ð 8
à”l TÑ)ð8
ð œ tÑ+ð8
ð !Ô,¨tÑ3ð	8
ð
   $™;ð8
ð # T™kð8
ð ˜D‘[ð8
ð 
Ð(Ñ	(ð8
ð 8
ð 8
ñ „^ð8
ð 8
ð 8
ð 8
ð 8
r8   r)  z?
    Wav2Vec2 Model with a quantizer and `VQ` head on top.
    c                   ó  ‡ — e Zd Zdefˆ fd„Zdefd„Zd„ Ze	 dde	j
        de	j
        d	e	j
        defd
„¦   «         Ze	 	 	 	 	 	 dde	j        dz  de	j        dz  de	j        dz  de	j        dz  dedz  dedz  dedz  deez  fd„¦   «         Zˆ xZS )rÅ  r•   c                 óŽ  •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        |j        ¦  «        | _        t          |¦  «        | _	        t	          j
        |j        |j        ¦  «        | _        t	          j
        |j        |j        ¦  «        | _        |                      ¦   «          d S r™   )r‡   rˆ   r)  r¾  r   rô   Úfeat_quantizer_dropoutÚdropout_featuresr|  Ú	quantizerrò   r¼   Úproj_codevector_dimrÆ  r�  rÈ  r4  r÷   s     €r9   rˆ   zWav2Vec2ForPreTraining.__init__h  s™   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý% fÑ-Ô-ˆŒÝ "¤
¨6Ô+HÑ IÔ IˆÔå6°vÑ>Ô>ˆŒåœ9 VÔ%7¸Ô9SÑTÔTˆÔÝœ 6Ô#8¸&Ô:TÑUÔUˆŒð 	�ŠÑÔÐÐÐr8   r…  c                 ó   — || j         _        dS )zb
        Set the Gumbel softmax temperature to a given value. Only necessary for training
        N)rJ  r…  )r”   r…  s     r9   Úset_gumbel_temperaturez-Wav2Vec2ForPreTraining.set_gumbel_temperatureu  s   € ð &1ˆŒÔ"Ð"Ð"r8   c                 óB   — | j         j                             ¦   «          dS r6  ©r¾  r,  rç   r7  s    r9   r8  z-Wav2Vec2ForPreTraining.freeze_feature_encoder{  ó!   € ð
 	ŒÔ'×:Ò:Ñ<Ô<Ð<Ð<Ð<r8   çš™™™™™¹?Útarget_featuresÚnegative_featuresÚpredicted_featuresc                 óÜ   — t          j        | |gd¬¦  «        } t          j        |                     ¦   «         |                      ¦   «         d¬¦  «                             | ¦  «        }||z  }|S )zé
        Compute logits for contrastive loss based using cosine similarity as the distance measure between
        `[positive_feature, negative_features]` and `[predicted_features]`. Additionally, temperature can be applied.
        r   r  rJ   )r3   ÚcatÚcosine_similarityr'  r˜  )rR  rS  rT  r…  Úlogitss        r9   Úcompute_contrastive_logitsz1Wav2Vec2ForPreTraining.compute_contrastive_logits‚  ss   € õ  œ) _Ð6GÐ$HÈaÐPÑPÔPˆåÔ(Ð);×)AÒ)AÑ)CÔ)CÀ_×EZÒEZÑE\ÔE\ÐbdÐeÑeÔe×mÒmØñ
ô 
ˆð
 ˜+Ñ%ˆØˆr8   Nrê   r=   rs   ry   r  rX  rY  r?   c           
      ó`  — |�|n| j         j        }|�|                     t          j        ¦  «        }|                      ||||||¬¦  «        }	|                      |	d         ¦  «        }
|                      |	d         ¦  «        }|�#|                      |j	        d         |d¬¦  «        }|  
                    ||¬¦  «        \  }}|                     | j        j        j        ¦  «        }|                      |¦  «        }dx}x}}|��æ|j	        \  }}}|                     d|¦  «        |                     ¦   «                              d¦  «                 }|                     ||d|¦  «                             d	ddd
¦  «        }|                      |ddd…f         ||
| j         j        ¦  «        }||k                         d¦  «        }|                     ¦   «         rt+          d¦  «        |dd…         |<   |                     dd	¦  «                             d|                     d¦  «        ¦  «        }d|                     ¦   «         z
  dz                       dd¦  «                             ¦   «         }t4          j                             |                     ¦   «         |d¬¦  «        }| j         j        | j         j        z  }||z
  |z  |                     ¦   «         z  }|| j         j         |z  z   }|s#|�||
||f|	d	d…         z   S |
||f|	d	d…         z   S tC          ||
|||	j"        |	j#        ||¬¦  «        S )a¥  
        mask_time_indices (`torch.BoolTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Indices to mask extracted features for contrastive loss. When in training mode, model learns to predict
            masked extracted features in *config.proj_codevector_dim* space.
        sampled_negative_indices (`torch.BoolTensor` of shape `(batch_size, sequence_length, num_negatives)`, *optional*):
            Indices indicating which quantized target vectors are used as negative sampled vectors in contrastive loss.
            Required input for pre-training.

        Example:

        ```python
        >>> import torch
        >>> from transformers import AutoFeatureExtractor, Wav2Vec2ForPreTraining
        >>> from transformers.models.wav2vec2.modeling_wav2vec2 import _compute_mask_indices, _sample_negative_indices
        >>> from datasets import load_dataset

        >>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-base")
        >>> model = Wav2Vec2ForPreTraining.from_pretrained("facebook/wav2vec2-base")

        >>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
        >>> input_values = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt").input_values  # Batch size 1

        >>> # compute masked indices
        >>> batch_size, raw_sequence_length = input_values.shape
        >>> sequence_length = model._get_feat_extract_output_lengths(raw_sequence_length).item()
        >>> mask_time_indices = _compute_mask_indices(
        ...     shape=(batch_size, sequence_length), mask_prob=0.2, mask_length=2
        ... )
        >>> sampled_negative_indices = _sample_negative_indices(
        ...     features_shape=(batch_size, sequence_length),
        ...     num_negatives=model.config.num_negatives,
        ...     mask_time_indices=mask_time_indices,
        ... )
        >>> mask_time_indices = torch.tensor(data=mask_time_indices, device=input_values.device, dtype=torch.long)
        >>> sampled_negative_indices = torch.tensor(
        ...     data=sampled_negative_indices, device=input_values.device, dtype=torch.long
        ... )

        >>> with torch.no_grad():
        ...     outputs = model(input_values, mask_time_indices=mask_time_indices)

        >>> # compute cosine similarity between predicted (=projected_states) and target (=projected_quantized_states)
        >>> cosine_sim = torch.cosine_similarity(outputs.projected_states, outputs.projected_quantized_states, dim=-1)

        >>> # show that cosine similarity is much higher than random
        >>> cosine_sim[mask_time_indices.to(torch.bool)].mean() > 0.5
        tensor(True)

        >>> # for contrastive loss training model should be put into train mode
        >>> model = model.train()
        >>> loss = model(
        ...     input_values, mask_time_indices=mask_time_indices, sampled_negative_indices=sampled_negative_indices
        ... ).loss
        ```N)r=   r  rX  rs   rY  r   r!   Frà  )rs   rJ   r#   r   z-infiœÿÿÿrX   )Ú	reduction)r'   r(   r)   r*   r+   r,   r-   r.   )$r•   rY  rg  r3   r\   r¾  rÆ  rI  ræ  r:   rJ  rÈ  r¸   rP   r  râ  ÚpermuterY  Úcontrastive_logits_temperatureÚallÚanyr'  r¨   rf   ru   r‡  r   r  Úcross_entropyr  r~  rX   Údiversity_loss_weightr&   r+   r,   )r”   rê   r=   rs   ry   r  rX  rY  r   rF  Útransformer_featuresrC  Úquantized_featuresr*   r'   r-   r.   rh   rH   r¼   Únegative_quantized_featuresrX  Ú
neg_is_posÚtargetÚnum_codevectorss                            r9   r›   zWav2Vec2ForPreTraining.forward—  s�  € ðF &1Ð%<�k�kÀ$Ä+ÔBYˆàÐ(Ø 1× 4Ò 4µU´ZÑ @Ô @Ðà—-’-ØØ)Ø/Ø!5Ø/Ø#ð  ñ 
ô 
ˆð  $×/Ò/°¸´
Ñ;Ô;Ðð  ×0Ò0°¸´Ñ<Ô<ÐàÐ%à!×DÒDØ Ô& qÔ)¨>Àuð Eñ ô ˆNð 59·N²NØÐ0Að 5Cñ 5
ô 5
Ñ1ÐÐ1ð 0×2Ò2°4´>Ô3HÔ3NÑOÔOÐØ!Ÿ^š^Ð,>Ñ?Ô?Ðà37Ð7ˆÐ7Ð .Ø#Ñ/Ø7IÔ7OÑ4ˆJ˜¨ð +=×*AÒ*AÀ"ÀkÑ*RÔ*RØ(×-Ò-Ñ/Ô/×4Ò4°RÑ8Ô8ô+Ð'ð +F×*JÒ*JØ˜O¨R°ñ+ô +çŠg�a˜˜A˜qÑ!Ô!ð (ð ×4Ò4Ø" 4¨¨¨ 7Ô+Ø+Ø$Ø”Ô:ñ	ô ˆFð -Ð0KÒK×PÒPÐQSÑTÔTˆJà�~Š~ÑÔð 7Ý).¨v©¬��q�r�r”
˜:Ñ&ð ×%Ò% a¨Ñ+Ô+×3Ò3°B¸¿ºÀA¹¼ÑGÔGˆFØÐ,×1Ò1Ñ3Ô3Ñ3°tÑ;×FÒFÀqÈ!ÑLÔL×TÒTÑVÔVˆFå!œ}×:Ò:¸6¿<º<¹>¼>È6Ð]bÐ:ÑcÔcÐà"œkÔCÀdÄkÔFgÑgˆOØ.Ð1FÑFÈ/ÑYÐ]n×]rÒ]rÑ]tÔ]tÑtˆNð $ d¤kÔ&GÈ.Ñ&XÑXˆDàð 	cØÐØÐ2Ð4FÐH]Ð^ÐahÐijÐikÐikÔalÑlÐlØ(Ð*<Ð>SÐTÐW^Ð_`Ð_aÐ_aÔWbÑbÐbå+ØØ1Ø'9Ø"7Ø!Ô/ØÔ)Ø-Ø)ð	
ñ 	
ô 	
ð 		
r8   )rQ  )NNNNNN)r/   r0   r1   r"   rˆ   rC   rM  r8  r   r3   r4   r'  rY  r   r(  Ú
BoolTensorr\   r6   r&   r›   rž   rŸ   s   @r9   rÅ  rÅ  b  s�  ø€ € € € € ð˜~ð ð ð ð ð ð ð1°#ð 1ð 1ð 1ð 1ð=ð =ð =ð ð
 !ð	ð ØÔ*ðà Ô,ðð "Ô-ðð ð	ð ð ñ „\ðð( ð /3Ø59Ø<@Ø)-Ø,0Ø#'ð]
ð ]
à”l TÑ)ð]
ð œ tÑ+ð]
ð !Ô+¨dÑ2ð	]
ð
 #(Ô"2°TÑ"9ð]
ð   $™;ð]
ð # T™kð]
ð ˜D‘[ð]
ð 
Ð-Ñ	-ð]
ð ]
ð ]
ñ „^ð]
ð ]
ð ]
ð ]
ð ]
r8   rÅ  zp
    Wav2Vec2 Model with a `language modeling` head on top for Connectionist Temporal Classification (CTC).
    c                   óÆ   ‡ — e Zd Zddedz  fˆ fd„Zd„ Zd„ Zd„ Ze	 	 	 	 	 dde	j
        dz  de	j
        dz  d	edz  d
edz  dedz  de	j
        dz  deez  fd„¦   «         Zˆ xZS )rí  Nrô  c                 óª  •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        |j        ¦  «        | _        || _        |j	        €t          d| j        › d�¦  «        ‚t          |d¦  «        r|j        r|j        n|j        }t	          j        ||j	        ¦  «        | _        |                      ¦   «          dS )a2  
        target_lang (`str`, *optional*):
            Language id of adapter weights. Adapter weights are stored in the format adapter.<lang>.safetensors or
            adapter.<lang>.bin. Only relevant when using an instance of [`Wav2Vec2ForCTC`] with adapters. Uses 'eng' by
            default.
        NzYou are trying to instantiate z÷ with a configuration that does not define the vocabulary size of the language model head. Please instantiate the model as follows: `Wav2Vec2ForCTC.from_pretrained(..., vocab_size=vocab_size)`. or define `vocab_size` of your model's configuration.rÔ  )r‡   rˆ   r)  r¾  r   rô   Úfinal_dropoutrö   rô  r  rR   r—   rÀ   rÔ  r¦  r¼   rò   ré  r4  )r”   r•   rô  r¦  r—   s       €r9   rˆ   zWav2Vec2ForCTC.__init__>  sÝ   ø€ õ 	‰Œ×Ò˜Ñ Ô Ð å% fÑ-Ô-ˆŒÝ”z &Ô"6Ñ7Ô7ˆŒà&ˆÔàÔÐ$ÝðH°´ð Hð Hð Hñô ð õ *1°¸Ñ)GÔ)GÐvÈFÔL^ÐvˆFÔ%Ð%ÐdjÔdvð 	õ ”yÐ!3°VÔ5FÑGÔGˆŒð 	�ŠÑÔÐÐÐr8   c                 óT  — t          ¦   «         t          j        d¦  «        k    rdS | j        }|�)t	          | j        dd¦  «        €t          d|› d�¦  «        ‚|€2t	          | j        dd¦  «        �t                               d¦  «         dS |�|  	                    |d¬¦  «         dS dS )	a'  
        This method overwrites [`~PreTrainedModel.tie_weights`] so that adapter weights can be correctly loaded when
        passing `target_lang=...` to `from_pretrained(...)`.

        This method is **not** supposed to be called by the user and is prone to be changed in the future.
        ÚmetaNrJ  zCannot pass `target_lang`: rö  z)By default `target_lang` is set to 'eng'.T)r  )
r   r3   rh  rô  rK  r•   rR   r  Úinfor  )r”   r   rô  s      r9   Útie_weightszWav2Vec2ForCTC.tie_weights[  sÃ   € õ 6Ñ7Ô7½5¼<ÈÑ;OÔ;OÒOÐOØˆFð Ô&ˆàÐ"¥w¨t¬{Ð<NÐPTÑ'UÔ'UÐ']ÝÐu¸;ÐuÐuÐuÑvÔvÐvØÐ ¥W¨T¬[Ð:LÈdÑ%SÔ%SÐ%_Ý�KŠKÐCÑDÔDÐDÐDÐDØÐ$Ø×Ò˜k°dÐÑ;Ô;Ð;Ð;Ð;ð %Ð$r8   c                 óB   — | j         j                             ¦   «          dS r6  rO  r7  s    r9   r8  z%Wav2Vec2ForCTC.freeze_feature_encoders  rP  r8   c                 óL   — | j                              ¦   «         D ]	}d|_        Œ
dS ©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å   s     r9   Úfreeze_base_modelz Wav2Vec2ForCTC.freeze_base_modelz  ó6   € ð
 ”]×-Ò-Ñ/Ô/ð 	(ð 	(ˆEØ"'ˆEÔÐð	(ð 	(r8   rê   r=   r  rX  rY  Úlabelsr?   c           
      óp  — |�|n| j         j        }|�>|                     ¦   «         | j         j        k    rt	          d| j         j        › �¦  «        ‚|                      |||||¬¦  «        }|d         }	|                      |	¦  «        }	|                      |	¦  «        }
d}|��Z|�|nt          j	        |t          j
        ¬¦  «        }|                      |                     d¦  «        ¦  «                             t          j
        ¦  «        }|dk    }|                     d¦  «        }|                     |¦  «        }t          j                             |
dt          j        ¬¦  «                             dd¦  «        }t          j        j                             d	¬
¦  «        5  t          j                             ||||| j         j        | j         j        | j         j        ¬¦  «        }ddd¦  «         n# 1 swxY w Y   |s|
f|t6          d…         z   }|�|f|z   n|S t9          ||
|j        |j        ¬¦  «        S )aà  
        labels (`torch.LongTensor` of shape `(batch_size, target_length)`, *optional*):
            Labels for connectionist temporal classification. Note that `target_length` has to be smaller or equal to
            the sequence length of the output logits. Indices are selected in `[-100, 0, ..., config.vocab_size - 1]`.
            All labels set to `-100` are ignored (masked), the loss is only computed for labels in `[0, ...,
            config.vocab_size - 1]`.
        Nz$Label values must be <= vocab_size: rB  r   rO   rJ   )rº   rP   r!   F)Úenabled)Úblankr[  Úzero_infinity©r'   rX  r+   r,   )r•   rY  rD   r  rR   r¾  rö   ré  r3   Ú	ones_likerâ  rÝ  rX   rg  Úmasked_selectr   r  Úlog_softmaxÚfloat32r¨   ÚbackendsÚcudnnÚflagsÚctc_lossÚpad_token_idÚctc_loss_reductionÚctc_zero_infinityÚ_HIDDEN_STATES_START_POSITIONr   r+   r,   )r”   rê   r=   r  rX  rY  rv  r   rF  r+   rX  r'   ri   Úlabels_maskÚtarget_lengthsÚflattened_targetsÚ	log_probsÚoutputs                     r9   r›   zWav2Vec2ForCTC.forward‚  s€  € ð$ &1Ð%<�k�kÀ$Ä+ÔBYˆàÐ &§*¢*¡,¤,°$´+Ô2HÒ"HÐ"HÝÐ\ÀDÄKÔDZÐ\Ð\Ñ]Ô]Ð]à—-’-ØØ)Ø/Ø!5Ø#ð  ñ 
ô 
ˆð   œ
ˆØŸš ]Ñ3Ô3ˆà—’˜mÑ,Ô,ˆàˆØÑð #1Ð"<��Å%Ä/ÐR^ÕfkÔfpÐBqÑBqÔBqð ð !×AÒAÀ.×BTÒBTÐUWÑBXÔBXÑYÔY×\Ò\Õ]bÔ]gÑhÔhˆMð ! Aš+ˆKØ(Ÿ_š_¨RÑ0Ô0ˆNØ &× 4Ò 4°[Ñ AÔ AÐõ œ×1Ò1°&¸bÍÌÐ1ÑVÔV×`Ò`ÐabÐdeÑfÔfˆIå”Ô%×+Ò+°EÐ+Ñ:Ô:ð 	ð 	Ý”}×-Ò-ØØ%Ø!Ø"Øœ+Ô2Ø"œkÔ<Ø"&¤+Ô"?ð .ñ ô �ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ð 	FØ�Y Õ)FÐ)GÐ)GÔ!HÑHˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEåØ˜f°GÔ4IÐV]ÔVhð
ñ 
ô 
ð 	
s   Æ AG1Ç1G5Ç8G5r™   rE  )r/   r0   r1   r2  rˆ   ro  r8  rt  r   r3   r(  r\   r6   r   r›   rž   rŸ   s   @r9   rí  rí  8  s*  ø€ € € € € ðð ¨C°$©Jð ð ð ð ð ð ð:<ð <ð <ð0=ð =ð =ð(ð (ð (ð ð /3Ø)-Ø,0Ø#'Ø&*ðE
ð E
à”l TÑ)ðE
ð œ tÑ+ðE
ð   $™;ð	E
ð
 # T™kðE
ð ˜D‘[ðE
ð ”˜tÑ#ðE
ð 
�Ñ	ðE
ð E
ð E
ñ „^ðE
ð E
ð E
ð E
ð E
r8   rí  z—
    Wav2Vec2 Model with a sequence classification head on top (a linear layer over the pooled output) for tasks like
    SUPERB Keyword Spotting.
    c                   ó²   ‡ — e Zd Zˆ fd„Zd„ Zd„ Ze	 	 	 	 	 ddej        dz  dej        dz  de	dz  de	dz  d	e	dz  d
ej        dz  de
ez  fd„¦   «         Zˆ xZS )Ú!Wav2Vec2ForSequenceClassificationc                 óô  •— t          ¦   «                              |¦  «         t          |d¦  «        r|j        rt	          d¦  «        ‚t          |¦  «        | _        |j        dz   }|j        r.t          j
        t          j        |¦  «        |z  ¦  «        | _        t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¦  «        | _        |                      ¦   «          d S )NrÔ  z_Sequence classification does not support the use of Wav2Vec2 adapters (config.add_adapter=True)r!   )r‡   rˆ   rÀ   rÔ  rR   r)  r¾  rV  Úuse_weighted_layer_sumr   r‚  r3   ra   Úlayer_weightsrò   r¼   Úclassifier_proj_sizeÚ	projectorÚ
num_labelsÚ
classifierr4  ©r”   r•   Ú
num_layersr—   s      €r9   rˆ   z*Wav2Vec2ForSequenceClassification.__init__Ò  sá   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å�6˜=Ñ)Ô)ð 	¨fÔ.@ð 	ÝØqñô ð õ & fÑ-Ô-ˆŒØÔ-°Ñ1ˆ
ØÔ(ð 	SÝ!#¤­e¬j¸Ñ.DÔ.DÀzÑ.QÑ!RÔ!RˆDÔÝœ 6Ô#5°vÔ7RÑSÔSˆŒÝœ) FÔ$?ÀÔARÑSÔSˆŒð 	�ŠÑÔÐÐÐr8   c                 óB   — | j         j                             ¦   «          dS r6  rO  r7  s    r9   r8  z8Wav2Vec2ForSequenceClassification.freeze_feature_encoderã  rP  r8   c                 óL   — | j                              ¦   «         D ]	}d|_        Œ
dS rr  rs  rå   s     r9   rt  z3Wav2Vec2ForSequenceClassification.freeze_base_modelê  ru  r8   Nrê   r=   r  rX  rY  rv  r?   c                 ód  — |�|n| j         j        }| j         j        rdn|}|                      |||||¬¦  «        }| j         j        rx|t                   }	t          j        |	d¬¦  «        }	t          j         	                    | j
        d¬¦  «        }
|	|
                     ddd¦  «        z                       d¬¦  «        }	n|d         }	|                      |	¦  «        }	|€|	                     d¬¦  «        }n�|                      |	j        d         |¦  «        }|                     d¦  «                             dd|	j        d         ¦  «        }d	|	| <   |	                     d¬¦  «        |                     d¬¦  «                             dd¦  «        z  }|                      |¦  «        }d}|�Kt)          ¦   «         } ||                     d| j         j        ¦  «        |                     d¦  «        ¦  «        }|s|f|t          d…         z   }|�|f|z   n|S t-          |||j        |j        ¬
¦  «        S )á  
        input_values (`torch.FloatTensor` of shape `(batch_size, sequence_length)`):
            Float values of input raw speech waveform. Values can be obtained by loading a `.flac` or `.wav` audio file
            into an array of type `list[float]`, a `numpy.ndarray` or a `torch.Tensor`, *e.g.* via the torchcodec library
            (`pip install torchcodec`) or the soundfile library (`pip install soundfile`).
            To prepare the array into `input_values`, the [`AutoProcessor`] should be used for padding and conversion
            into a tensor of type `torch.FloatTensor`. See [`Wav2Vec2Processor.__call__`] for details.
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the sequence classification/regression loss. Indices should be in `[0, ...,
            config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
            `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
        NTrB  r!   r  rJ   r   r#   rú   r{  )r•   rY  r�  r¾  r‡  r3   Ústackr   r  r  r‘  r  rX   r“  r‹  ræ  r:   re  rf  r•  r   r”  r   r+   r,   )r”   rê   r=   r  rX  rY  rv  r   rF  r+   Únorm_weightsÚpooled_outputÚpadding_maskÚexpand_padding_maskrX  r'   Úloss_fctrŒ  s                     r9   r›   z)Wav2Vec2ForSequenceClassification.forwardò  sW  € ð0 &1Ð%<�k�kÀ$Ä+ÔBYˆØ'+¤{Ô'IÐc˜t˜tÐOcÐà—-’-ØØ)Ø/Ø!5Ø#ð  ñ 
ô 
ˆð Œ;Ô-ð 	'Ø#Õ$AÔBˆMÝ!œK¨¸1Ð=Ñ=Ô=ˆMÝœ=×0Ò0°Ô1CÈÐ0ÑLÔLˆLØ*¨\×->Ò->¸rÀ1ÀaÑ-HÔ-HÑH×MÒMÐRSÐMÑTÔTˆMˆMà# AœJˆMàŸš }Ñ5Ô5ˆØÐ!Ø)×.Ò.°1Ð.Ñ5Ô5ˆMˆMà×BÒBÀ=ÔCVÐWXÔCYÐ[iÑjÔjˆLØ".×"8Ò"8¸Ñ"<Ô"<×"CÒ"CÀAÀqÈ-ÔJ]Ð^_ÔJ`Ñ"aÔ"aÐØ25ˆMÐ.Ð.Ñ/Ø)×-Ò-°!Ð-Ñ4Ô4°|×7GÒ7GÈAÐ7GÑ7NÔ7N×7SÒ7SÐTVÐXYÑ7ZÔ7ZÑZˆMà—’ Ñ/Ô/ˆàˆØÐÝ'Ñ)Ô)ˆHØ�8˜FŸKšK¨¨D¬KÔ,BÑCÔCÀVÇ[Â[ÐQSÁ_Ä_ÑUÔUˆDàð 	FØ�Y Õ)FÐ)GÐ)GÔ!HÑHˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå'ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r8   rE  )r/   r0   r1   rˆ   r8  rt  r   r3   r(  r\   r6   r   r›   rž   rŸ   s   @r9   rŽ  rŽ  Ë  s  ø€ € € € € ðð ð ð ð ð"=ð =ð =ð(ð (ð (ð ð /3Ø)-Ø,0Ø#'Ø&*ðC
ð C
à”l TÑ)ðC
ð œ tÑ+ðC
ð   $™;ð	C
ð
 # T™kðC
ð ˜D‘[ðC
ð ”˜tÑ#ðC
ð 
Ð)Ñ	)ðC
ð C
ð C
ñ „^ðC
ð C
ð C
ð C
ð C
r8   rŽ  c                   ó²   ‡ — e Zd Zˆ fd„Zd„ Zd„ Ze	 	 	 	 	 ddej        dz  dej        dz  dej        dz  de	dz  d	e	dz  d
e	dz  de
ez  fd„¦   «         Zˆ xZS )Ú#Wav2Vec2ForAudioFrameClassificationc                 óÄ  •— t          ¦   «                              |¦  «         t          |d¦  «        r|j        rt	          d¦  «        ‚t          |¦  «        | _        |j        dz   }|j        r.t          j
        t          j        |¦  «        |z  ¦  «        | _        t          j        |j        |j        ¦  «        | _        |j        | _        |                      ¦   «          d S )NrÔ  zbAudio frame classification does not support the use of Wav2Vec2 adapters (config.add_adapter=True)r!   )r‡   rˆ   rÀ   rÔ  rR   r)  r¾  rV  r�  r   r‚  r3   ra   r‘  rò   r¼   r”  r•  r4  r–  s      €r9   rˆ   z,Wav2Vec2ForAudioFrameClassification.__init__;  sÐ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å�6˜=Ñ)Ô)ð 	¨fÔ.@ð 	ÝØtñô ð õ & fÑ-Ô-ˆŒØÔ-°Ñ1ˆ
ØÔ(ð 	SÝ!#¤­e¬j¸Ñ.DÔ.DÀzÑ.QÑ!RÔ!RˆDÔÝœ) FÔ$6¸Ô8IÑJÔJˆŒØ Ô+ˆŒà�ŠÑÔÐÐÐr8   c                 óB   — | j         j                             ¦   «          dS r6  rO  r7  s    r9   r8  z:Wav2Vec2ForAudioFrameClassification.freeze_feature_encoderK  rP  r8   c                 óL   — | j                              ¦   «         D ]	}d|_        Œ
dS rr  rs  rå   s     r9   rt  z5Wav2Vec2ForAudioFrameClassification.freeze_base_modelR  ru  r8   Nrê   r=   rv  r  rX  rY  r?   c           	      óè  — |�|n| j         j        }| j         j        rdn|}|                      |||||¬¦  «        }| j         j        rx|t                   }	t          j        |	d¬¦  «        }	t          j         	                    | j
        d¬¦  «        }
|	|
                     ddd¦  «        z                       d¬¦  «        }	n|d         }	|                      |	¦  «        }d}|�`t          ¦   «         } ||                     d| j        ¦  «        t          j        |                     d| j        ¦  «        d¬¦  «        ¦  «        }|s|f|t          d…         z   }|S t#          |||j        |j        ¬	¦  «        S )
r›  NTrB  r!   r  rJ   r   )Úaxisr{  )r•   rY  r�  r¾  r‡  r3   rœ  r   r  r  r‘  r  rX   r•  r   r”  r™  r   r+   r,   )r”   rê   r=   rv  r  rX  rY  r   rF  r+   r�  rX  r'   r¡  rŒ  s                  r9   r›   z+Wav2Vec2ForAudioFrameClassification.forwardZ  s�  € ð0 &1Ð%<�k�kÀ$Ä+ÔBYˆØ'+¤{Ô'IÐc˜t˜tÐOcÐà—-’-ØØ)Ø/Ø!5Ø#ð  ñ 
ô 
ˆð Œ;Ô-ð 	'Ø#Õ$AÔBˆMÝ!œK¨¸1Ð=Ñ=Ô=ˆMÝœ=×0Ò0°Ô1CÈÐ0ÑLÔLˆLØ*¨\×->Ò->¸rÀ1ÀaÑ-HÔ-HÑH×MÒMÐRSÐMÑTÔTˆMˆMà# AœJˆMà—’ Ñ/Ô/ˆàˆØÐÝ'Ñ)Ô)ˆHØ�8˜FŸKšK¨¨D¬OÑ<Ô<½e¼lÈ6Ï;Ê;ÐWYÐ[_Ô[jÑKkÔKkÐrsÐ>tÑ>tÔ>tÑuÔuˆDàð 	Ø�Y Õ)FÐ)GÐ)GÔ!HÑHˆFØˆMå$ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r8   rE  )r/   r0   r1   rˆ   r8  rt  r   r3   r(  r\   r6   r   r›   rž   rŸ   s   @r9   r£  r£  9  s÷   ø€ € € € € ðð ð ð ð ð =ð =ð =ð(ð (ð (ð ð /3Ø&*Ø)-Ø,0Ø#'ð:
ð :
à”l TÑ)ð:
ð œ tÑ+ð:
ð ”˜tÑ#ð	:
ð
   $™;ð:
ð # T™kð:
ð ˜D‘[ð:
ð 
Ð&Ñ	&ð:
ð :
ð :
ñ „^ð:
ð :
ð :
ð :
ð :
r8   r£  c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚAMSoftmaxLossç      >@çš™™™™™Ù?c                 óþ   •— t          ¦   «                              ¦   «          || _        || _        || _        t          j        t          j        ||¦  «        d¬¦  «        | _	        t          j
        ¦   «         | _        d S )NT)rä   )r‡   rˆ   ÚscaleÚmarginr”  r   r‚  r3   Úrandnr¸   r   r'   )r”   r´  r”  r®  r¯  r—   s        €r9   rˆ   zAMSoftmaxLoss.__init__™  se   ø€ Ý‰Œ×ÒÑÔÐØˆŒ
ØˆŒØ$ˆŒÝ”l¥5¤;¨y¸*Ñ#EÔ#EÐUYÐZÑZÔZˆŒÝÔ'Ñ)Ô)ˆŒ	ˆ	ˆ	r8   c                 óÐ  — |                      ¦   «         }t          j                             | j        d¬¦  «        }t          j                             |d¬¦  «        }t          j        ||¦  «        }|| j        z
  }t          j                             || j	        ¦  «        }| j
        t          j        |                     ¦   «         ||¦  «        z  }|                      ||¦  «        }|S )Nr   r  r!   )r‡  r   r  Ú	normalizer¸   r3   Úmmr¯  Úone_hotr”  r®  r‰  r\   r'   )	r”   r+   rv  r¸   Ú	cos_thetaÚpsiÚonehotrX  r'   s	            r9   r›   zAMSoftmaxLoss.forward¡  s·   € Ø—’Ñ!Ô!ˆÝ”×(Ò(¨¬¸!Ð(Ñ<Ô<ˆÝœ×/Ò/°À1Ð/ÑEÔEˆÝ”H˜]¨FÑ3Ô3ˆ	Ø˜$œ+Ñ%ˆå”×&Ò& v¨t¬Ñ?Ô?ˆØ”�eœk¨&¯+ª+©-¬-¸¸iÑHÔHÑHˆØ�yŠy˜ Ñ(Ô(ˆàˆr8   )r«  r¬  r�   rŸ   s   @r9   rª  rª  ˜  sL   ø€ € € € € ð*ð *ð *ð *ð *ð *ðð ð ð ð ð ð r8   rª  c                   óD   ‡ — e Zd Zdˆ fd„	Zdej        dej        fd„Zˆ xZS )Ú	TDNNLayerr   c                 óŒ  •— t          ¦   «                              ¦   «          |dk    r|j        |dz
           n|j        |         | _        |j        |         | _        |j        |         | _        |j        |         | _        t          j
        | j        | j        z  | j        ¦  «        | _        t          j        ¦   «         | _        d S )Nr   r!   )r‡   rˆ   Útdnn_dimrŠ   r‹   Útdnn_kernelr„   Útdnn_dilationÚdilationr   rò   Úkernelr¸  r’   r“   s      €r9   rˆ   zTDNNLayer.__init__°  s¡   ø€ Ý‰Œ×ÒÑÔÐØ<DÀqºL¸L˜6œ?¨8°a©<Ô8Ð8ÈfÌoÐ^fÔNgˆÔØ"œO¨HÔ5ˆÔØ!Ô-¨hÔ7ˆÔØÔ,¨XÔ6ˆŒå”i Ô 0°4Ô3CÑ CÀTÔEVÑWÔWˆŒÝœ'™)œ)ˆŒˆˆr8   r+   r?   c                 ó
  — t          ¦   «         rddlm} t          ¦   «         r)t          | j        |¦  «        rt          j        d¦  «         |                     dd¦  «        }| j        j         	                    | j
        | j        | j        ¦  «                             dd¦  «        }t          j                             ||| j        j        | j        ¬¦  «        }|                     dd¦  «        }|                      |¦  «        }|S )Nr   )Ú	LoraLayerz‡Detected LoRA on TDNNLayer. LoRA weights won't be applied due to optimization. You should exclude TDNNLayer from LoRA's target modules.r!   r#   )r¾  )r   Úpeft.tuners.lorarÁ  r0  r¿  ÚwarningsÚwarnr¨   r¸   r  r‹   r„   rŠ   r   r  Úconv1dr†   r¾  r’   )r”   r+   rÁ  r¸   s       r9   r›   zTDNNLayer.forwardº  sÿ   € ÝÑÔð 	3Ø2Ð2Ð2Ð2Ð2Ð2åÑÔð 	Ý˜$œ+ yÑ1Ô1ð Ý”ðOñô ð ð &×/Ò/°°1Ñ5Ô5ˆØ”Ô#×(Ò(¨Ô):¸DÔ<LÈdÔN^Ñ_Ô_×iÒiÐjkÐmnÑoÔoˆÝœ×,Ò,¨]¸FÀDÄKÔDTÐ_cÔ_lÐ,ÑmÔmˆØ%×/Ò/°°1Ñ5Ô5ˆàŸš¨Ñ6Ô6ˆØÐr8   rœ   )r/   r0   r1   rˆ   r3   r(  r›   rž   rŸ   s   @r9   r¹  r¹  ¯  sc   ø€ € € € € ð$ð $ð $ð $ð $ð $ð U¤\ð °e´lð ð ð ð ð ð ð ð r8   r¹  zl
    Wav2Vec2 Model with an XVector feature extraction head on top for tasks like Speaker Verification.
    c                   óÎ   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zdej        ez  fd„Z	e
	 	 	 	 	 ddej        dz  dej        dz  d	edz  d
edz  dedz  dej        dz  deez  fd„¦   «         Zˆ xZS )ÚWav2Vec2ForXVectorc                 óÚ  •‡— t          ¦   «                              ‰¦  «         t          ‰¦  «        | _        ‰j        dz   }‰j        r.t          j        t          j	        |¦  «        |z  ¦  «        | _
        t          j        ‰j        ‰j        d         ¦  «        | _        ˆfd„t          t!          ‰j        ¦  «        ¦  «        D ¦   «         }t          j        |¦  «        | _        t          j        ‰j        d         dz  ‰j        ¦  «        | _        t          j        ‰j        ‰j        ¦  «        | _        t-          ‰j        ‰j        ¦  «        | _        |                      ¦   «          d S )Nr!   r   c                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r7   )r¹  r×   s     €r9   rN   z/Wav2Vec2ForXVector.__init__.<locals>.<listcomp>Þ  s#   ø€ ÐQÐQÐQ°•y ¨Ñ+Ô+ÐQÐQÐQr8   rJ   r#   )r‡   rˆ   r)  r¾  rV  r�  r   r‚  r3   ra   r‘  rò   r¼   r»  r“  rZ   r_   rÝ   ÚtdnnÚxvector_output_dimr,  r•  rª  r”  Ú	objectiver4  )r”   r•   r—  Útdnn_layersr—   s    `  €r9   rˆ   zWav2Vec2ForXVector.__init__Õ  s'  øø€ Ý‰Œ×Ò˜Ñ Ô Ð å% fÑ-Ô-ˆŒØÔ-°Ñ1ˆ
ØÔ(ð 	SÝ!#¤­e¬j¸Ñ.DÔ.DÀzÑ.QÑ!RÔ!RˆDÔÝœ 6Ô#5°v´ÀqÔ7IÑJÔJˆŒàQÐQÐQÐQµU½3¸v¼Ñ;OÔ;OÑ5PÔ5PÐQÑQÔQˆÝ”M +Ñ.Ô.ˆŒ	å!#¤¨6¬?¸2Ô+>ÀÑ+BÀFÔD]Ñ!^Ô!^ˆÔÝœ) FÔ$=¸vÔ?XÑYÔYˆŒå& vÔ'@À&ÔBSÑTÔTˆŒà�ŠÑÔÐÐÐr8   c                 óB   — | j         j                             ¦   «          dS r6  rO  r7  s    r9   r8  z)Wav2Vec2ForXVector.freeze_feature_encoderè  rP  r8   c                 óL   — | j                              ¦   «         D ]	}d|_        Œ
dS rr  rs  rå   s     r9   rt  z$Wav2Vec2ForXVector.freeze_base_modelï  ru  r8   ri   c                 óD   — d„ }| j         j        D ]} |||d¦  «        }Œ|S )z?
        Computes the output length of the TDNN layers
        c                 ó   — | |z
  |z  dz   S )Nr!   r7   rÚ  s      r9   rÛ  zEWav2Vec2ForXVector._get_tdnn_output_lengths.<locals>._conv_out_lengthü  s   € ð ! ;Ñ.°6Ñ9¸AÑ=Ð=r8   r!   )r•   r¼  )r”   ri   rÛ  r„   s       r9   Ú_get_tdnn_output_lengthsz+Wav2Vec2ForXVector._get_tdnn_output_lengths÷  sE   € ð
	>ð 	>ð 	>ð
  œ;Ô2ð 	Lð 	LˆKØ,Ð,¨]¸KÈÑKÔKˆMˆMàÐr8   Nrê   r=   r  rX  rY  rv  r?   c                 ó>  — |�|n| j         j        }| j         j        rdn|}|                      |||||¬¦  «        }| j         j        rx|t                   }	t          j        |	d¬¦  «        }	t          j         	                    | j
        d¬¦  «        }
|	|
                     ddd¦  «        z                       d¬¦  «        }	n|d         }	|                      |	¦  «        }	| j        D ]} ||	¦  «        }	Œ|€-|	                     d¬¦  «        }|	                     d¬¦  «        }nå|                      |                     d¬¦  «        ¦  «        }|                      |¦  «        }g }g }t'          |¦  «        D ]k\  }}|                     |	|d|…f                              d¬¦  «        ¦  «         |                     |	|d|…f                              d¬¦  «        ¦  «         Œlt          j        |¦  «        }t          j        |¦  «        }t          j        ||gd¬¦  «        }|                      |¦  «        }|                      |¦  «        }d}|�|                      ||¦  «        }|s||f|t          d…         z   }|�|f|z   n|S t3          ||||j        |j        ¬¦  «        S )	r›  NTrB  r!   r  rJ   r   )r'   rX  Ú
embeddingsr+   r,   )r•   rY  r�  r¾  r‡  r3   rœ  r   r  r  r‘  r  rX   r“  rÊ  r‹  rÁ  rÝ  rÒ  Ú	enumeraterc   rV  r,  r•  rÌ  r   r+   r,   )r”   rê   r=   r  rX  rY  rv  r   rF  r+   r�  Ú
tdnn_layerÚmean_featuresÚstd_featuresÚfeat_extract_output_lengthsÚtdnn_output_lengthsrØ   ÚlengthÚstatistic_poolingÚoutput_embeddingsrX  r'   rŒ  s                          r9   r›   zWav2Vec2ForXVector.forward  sð  € ð0 &1Ð%<�k�kÀ$Ä+ÔBYˆØ'+¤{Ô'IÐc˜t˜tÐOcÐà—-’-ØØ)Ø/Ø!5Ø#ð  ñ 
ô 
ˆð Œ;Ô-ð 	'Ø#Õ$AÔBˆMÝ!œK¨¸1Ð=Ñ=Ô=ˆMÝœ=×0Ò0°Ô1CÈÐ0ÑLÔLˆLØ*¨\×->Ò->¸rÀ1ÀaÑ-HÔ-HÑH×MÒMÐRSÐMÑTÔTˆMˆMà# AœJˆMàŸš }Ñ5Ô5ˆàœ)ð 	6ð 	6ˆJØ&˜J }Ñ5Ô5ˆMˆMð Ð!Ø)×.Ò.°1Ð.Ñ5Ô5ˆMØ(×,Ò,°Ð,Ñ3Ô3ˆLˆLà*.×*OÒ*OÐP^×PbÒPbÐghÐPbÑPiÔPiÑ*jÔ*jÐ'Ø"&×"?Ò"?Ð@[Ñ"\Ô"\ÐØˆMØˆLÝ&Ð':Ñ;Ô;ð Jð J‘	��6Ø×$Ò$ ]°1°g°v°g°:Ô%>×%CÒ%CÈÐ%CÑ%JÔ%JÑKÔKÐKØ×#Ò# M°!°W°f°W°*Ô$=×$AÒ$AÀaÐ$AÑ$HÔ$HÑIÔIÐIÐIÝ!œK¨Ñ6Ô6ˆMÝ œ; |Ñ4Ô4ˆLÝ!œI }°lÐ&CÈÐLÑLÔLÐà ×2Ò2Ð3DÑEÔEÐØ—’Ð!2Ñ3Ô3ˆàˆØÐØ—>’> &¨&Ñ1Ô1ˆDàð 	FØÐ/Ð0°7Õ;XÐ;YÐ;YÔ3ZÑZˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEåØØØ(Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
r8   rE  )r/   r0   r1   rˆ   r8  rt  r3   r'  rC   rÒ  r   r(  r\   r6   r   r›   rž   rŸ   s   @r9   rÇ  rÇ  Ï  s)  ø€ € € € € ðð ð ð ð ð&=ð =ð =ð(ð (ð (ð°eÔ6FÈÑ6Lð ð ð ð ð ð /3Ø)-Ø,0Ø#'Ø&*ðP
ð P
à”l TÑ)ðP
ð œ tÑ+ðP
ð   $™;ð	P
ð
 # T™kðP
ð ˜D‘[ðP
ð ”˜tÑ#ðP
ð 
�Ñ	ðP
ð P
ð P
ñ „^ðP
ð P
ð P
ð P
ð P
r8   rÇ  )r£  rí  rÅ  rŽ  rÇ  r)  r½  rÐ   r™   r+  )br2   rÍ  rÃ  Úcollections.abcr   Údataclassesr   ÚnumpyrS   r3   Úsafetensors.torchr   r  r   Útorch.nnr   Ú r	   rÉ  Úactivationsr
   Úintegrations.deepspeedr   Úintegrations.fsdpr   Úmasking_utilsr   Úmodeling_flash_attention_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   r   Úmodeling_utilsr   r   r   Úprocessing_utilsr   r¿   r   r   r   r   r   r   r    Úconfiguration_wav2vec2r"   r  r
  Ú
get_loggerr/   r  r‡  r&   r6   rC   r'  r'  Úndarrayrp   r   r�   r¡   rª   ÚModuler²   rÉ   rÒ   rí   r(  r  r  r*  r9  rH  rP  rv  r|  r¢  r¥  rL  r½  r)  rÅ  rí  rŽ  r£  rª  r¹  rÇ  Ú__all__r7   r8   r9   ú<module>rò     sY	  ðð Ð à €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !à Ð Ð Ð Ø €€€Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø @Ð @Ð @Ð @Ð @Ð @Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø BÐ BÐ BÐ BÐ BÐ BØ 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð sÐ rÐ rÐ rÐ rÐ rÐ rÐ rÐ rÐ rØ &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 3Ð 2Ð 2Ð 2Ð 2Ð 2ð ,Ð Ø5Ð ð 
ˆÔ	˜HÑ	%Ô	%€ð !"Ð ð €ððñ ô ð
 ð4ð 4ð 4ð 4ð 4 ;ñ 4ô 4ñ „ñô ð4ðB /3Øðtð tØ��c�Œ?ðtàðtð ðtð Ô$ tÑ+ð	tð
 ðtð „Zðtð tð tð tðn$ð $¨Uð $À3ð $Ð[]Ô[eÐhlÑ[lð $ð $ð $ð $ðDð ð ð ð Ð#=ñ ô ð ð*ð ð ð ð Ð!;ñ ô ð ð6ð ð ð ð Ð!;ñ ô ð ð0*ð *ð *ð *ð * b¤iñ *ô *ð *ðZð ð ð ð ˜2œ9ñ ô ð ð%ð %ð %ð %ð %˜RœYñ %ô %ð %ðP1ð 1ð 1ð 1ð 1 ¤	ñ 1ô 1ð 1ð, !Øð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð �T‰\ð%ð ð%ð Ð'Ô(ð%ð %ð %ð %ð8R/ð R/ð R/ð R/ð R/˜œ	ñ R/ô R/ð R/ðjð ð ð ð ˜"œ)ñ ô ð ð0!ð !ð !ð !ð !Ð5ñ !ô !ð !ðH+ð +ð +ð +ð +Ð*Dñ +ô +ð +ð\E
ð E
ð E
ð E
ð E
�b”iñ E
ô E
ð E
ðPI
ð I
ð I
ð I
ð I
 R¤Yñ I
ô I
ð I
ðXI'ð I'ð I'ð I'ð I' B¤Iñ I'ô I'ð I'ðXð ð ð ð �b”iñ ô ð ð>ð ð ð ð ˜2œ9ñ ô ð ð$ð ð ð ð ˜rœyñ ô ð ð2 ð\'ð \'ð \'ð \'ð \'˜oñ \'ô \'ñ „ð\'ð~ ðC
ð C
ð C
ð C
ð C
Ð+ñ C
ô C
ñ „ðC
ðL €ððñ ô ð
N
ð N
ð N
ð N
ð N
Ð4ñ N
ô N
ñô ð
N
ðb €ððñ ô ð
K
ð K
ð K
ð K
ð K
Ð,ñ K
ô K
ñô ð
K
ð\ €ððñ ô ðe
ð e
ð e
ð e
ð e
Ð(?ñ e
ô e
ñô ðe
ðP ð[
ð [
ð [
ð [
ð [
Ð*Añ [
ô [
ñ „ð[
ð|ð ð ð ð �B”Iñ ô ð ð.ð ð ð ð �”	ñ ô ð ð@ €ððñ ô ð
C
ð C
ð C
ð C
ð C
Ð0ñ C
ô C
ñô ð
C
ðLð ð €€€r8   