Ë
    ÛÓ^j Ø  ã                   ó  — d dl Z d dl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mZmZmZmZmZ ddl m!Z!m"Z" ddl#m$Z$ ddl%m&Z&m'Z'm(Z( ddl)m*Z*  G d„ de«      Z+ G d„ dejX                  «      Z- G d„ dejX                  «      Z. G d„ dejX                  «      Z/ G d„ dejX                  «      Z0 G d„ dejX                  «      Z1	 	 dPdejX                  d ejd                  d!ejd                  d"ejd                  d#ejd                  dz  d$e3dz  d%e3d&e$e&   fd'„Z4 G d(„ d)ejX                  «      Z5 G d*„ d+ejX                  «      Z6 G d,„ d-e«      Z7 G d.„ d/ejX                  «      Z8 G d0„ d1ejX                  «      Z9 G d2„ d3ejX                  «      Z:e' G d4„ d5e"«      «       Z;	 	 dQd6e<e=e=f   d7e3d8e=d#ej|                  dz  d9e=d:ej~                  fd;„Z@eZAe' G d<„ d=e;«      «       ZBd>ZC e'd?¬@«       G dA„ dBe;«      «       ZD e'dC¬@«       G dD„ dEe;«      «       ZEe' G dF„ dGe;«      «       ZF G dH„ dIejX                  «      ZG G dJ„ dKejX                  «      ZH e'dL¬@«       G dM„ dNe;«      «       ZIg dO¢ZJy)Ré    N)ÚCallable)Ú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)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚis_peft_availableé   )ÚData2VecAudioConfigc                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚData2VecAudioConvLayerc                 ó°  •— t         ‰| �  «        |dkD  r|j                  |dz
     nd| _        |j                  |   | _        t        j                  | j                  | j                  |j                  |   |j                  |   |j                  ¬«      | _
        t        j                  | j                  d¬«      | _        t        |j                     | _        y )Nr   r   )Úkernel_sizeÚstrideÚbiasT©Úelementwise_affine)ÚsuperÚ__init__Úconv_dimÚin_conv_dimÚout_conv_dimr   ÚConv1dÚconv_kernelÚconv_strideÚ	conv_biasÚconvÚ	LayerNormÚ
layer_normr   Úfeat_extract_activationÚ
activation©ÚselfÚconfigÚlayer_idÚ	__class__s      €ú/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/data2vec/modeling_data2vec_audio.pyr%   zData2VecAudioConvLayer.__init__4   s¯   ø€ Ü‰ÑÔØ<DÀqºL˜6Ÿ?™?¨8°a©<Ò8ÈaˆÔØ"ŸO™O¨HÑ5ˆÔä—I‘IØ×ÑØ×ÑØ×*Ñ*¨8Ñ4Ø×%Ñ% hÑ/Ø×!Ñ!ô
ˆŒ	ô Ÿ,™, t×'8Ñ'8ÈTÔRˆŒÜ  ×!?Ñ!?Ñ@ˆ�ó    c                 ó´   — | j                  |«      }|j                  dd«      }| j                  |«      }|j                  dd«      }| j                  |«      }|S )Néþÿÿÿéÿÿÿÿ)r-   Ú	transposer/   r1   ©r3   Úhidden_statess     r7   ÚforwardzData2VecAudioConvLayer.forwardC   sV   € ØŸ	™	 -Ó0ˆà%×/Ñ/°°BÓ7ˆØŸ™¨Ó6ˆØ%×/Ñ/°°BÓ7ˆàŸ™¨Ó6ˆØÐr8   ©r   ©Ú__name__Ú
__module__Ú__qualname__r%   r?   Ú__classcell__©r6   s   @r7   r   r   3   s   ø„ õAör8   r   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚData2VecAudioPadLayerc                 óP   •— t         ‰| �  «        |dz  dk(  rd| _        y d| _        y )Né   r   r   )r$   r%   Únum_pad_remove)r3   Únum_conv_pos_embeddingsr6   s     €r7   r%   zData2VecAudioPadLayer.__init__O   s)   ø€ Ü‰ÑÔØ#:¸QÑ#>À!Ò#C˜aˆÕÈˆÕr8   c                 óV   — | j                   dkD  r|d d …d d …d | j                    …f   }|S ©Nr   )rK   r=   s     r7   r?   zData2VecAudioPadLayer.forwardS   s6   € Ø×Ñ Ò"Ø)ª!ªQÐ0F°4×3FÑ3FÐ2FÐ0FÐ*FÑGˆMØÐr8   rA   rF   s   @r7   rH   rH   N   s   ø„ ôKör8   rH   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú Data2VecAudioPositionalConvLayerc                 óz  •— t         ‰| �  «        t        j                  |j                  |j                  |j
                  |j
                  dz  |j                  ¬«      | _        t        |j
                  «      | _	        t        |j                     | _        t        j                  |j                  d¬«      | _        y )NrJ   )r   ÚpaddingÚgroupsFr"   )r$   r%   r   r)   Úhidden_sizeÚconv_pos_kernel_sizeÚnum_conv_pos_embedding_groupsr-   rH   rR   r   r0   r1   r.   r/   ©r3   r4   r6   s     €r7   r%   z)Data2VecAudioPositionalConvLayer.__init__Z   sŽ   ø€ Ü‰ÑÔÜ—I‘IØ×ÑØ×ÑØ×3Ñ3Ø×/Ñ/°1Ñ4Ø×7Ñ7ô
ˆŒ	ô -¨V×-HÑ-HÓIˆŒÜ  ×!?Ñ!?Ñ@ˆŒäŸ,™, v×'9Ñ'9ÈeÔTˆ�r8   c                 óÖ   — | j                  |«      }| j                  |«      }|j                  dd«      }| j                  |«      }|j                  dd«      }| j	                  |«      }|S ©Nr   rJ   )r-   rR   r<   r/   r1   r=   s     r7   r?   z(Data2VecAudioPositionalConvLayer.forwardi   sd   € ØŸ	™	 -Ó0ˆØŸ™ ]Ó3ˆà%×/Ñ/°°1Ó5ˆØŸ™¨Ó6ˆØ%×/Ñ/°°1Ó5ˆØŸ™¨Ó6ˆØÐr8   rA   rF   s   @r7   rP   rP   Y   s   ø„ ôUör8   rP   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú$Data2VecAudioPositionalConvEmbeddingc                 ó´   •— t         ‰| �  «        t        j                  t	        |j
                  «      D �cg c]  }t        |«      ‘Œ c}«      | _        y c c}w ©N)r$   r%   r   Ú
ModuleListÚrangerL   rP   Úlayers©r3   r4   Ú_r6   s      €r7   r%   z-Data2VecAudioPositionalConvEmbedding.__init__u   s@   ø€ Ü‰ÑÔÜ—m‘mÜ?DÀV×EcÑEcÓ?dÖe¸!Ô-¨fÕ5Òeó
ˆ�ùÚes   ¶Ac                 ó€   — |j                  dd«      }| j                  D ]
  } ||«      }Œ |j                  dd«      }|S rY   )r<   r`   )r3   r>   Úlayers      r7   r?   z,Data2VecAudioPositionalConvEmbedding.forward{   sI   € Ø%×/Ñ/°°1Ó5ˆØ—[‘[ò 	1ˆEÙ! -Ó0‰Mð	1à%×/Ñ/°°1Ó5ˆØÐr8   rA   rF   s   @r7   r[   r[   t   s   ø„ ô
ör8   r[   c                   ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )ÚData2VecAudioFeatureEncoderz.Construct the features from raw audio waveformc           	      óÔ   •— t         ‰| �  «        t        j                  t	        |j
                  «      D �cg c]  }t        ||¬«      ‘Œ c}«      | _        d| _        d| _	        y c c}w )N)r5   FT)
r$   r%   r   r^   r_   Únum_feat_extract_layersr   Úconv_layersÚgradient_checkpointingÚ_requires_grad)r3   r4   Úir6   s      €r7   r%   z$Data2VecAudioFeatureEncoder.__init__†   sX   ø€ Ü‰ÑÔÜŸ=™=ÜAFÀv×GeÑGeÓAfÖg¸AÔ# F°QÖ7Ògó
ˆÔð ',ˆÔ#Ø"ˆÕùò hs   ¶A%c                 óJ   — | j                  «       D ]	  }d|_        Œ d| _        y ©NF)Ú
parametersÚrequires_gradrk   ©r3   Úparams     r7   Ú_freeze_parametersz.Data2VecAudioFeatureEncoder._freeze_parametersŽ   s(   € Ø—_‘_Ó&ò 	(ˆEØ"'ˆEÕð	(à#ˆÕr8   c                 óˆ   — |d d …d f   }| j                   r| j                  rd|_        | j                  D ]
  } ||«      }Œ |S )NT)rk   Útrainingrp   ri   )r3   Úinput_valuesr>   Ú
conv_layers       r7   r?   z#Data2VecAudioFeatureEncoder.forward“   sP   € Ø$¢Q¨ WÑ-ˆð ×Ò 4§=¢=Ø*.ˆMÔ'à×*Ñ*ò 	6ˆJÙ& }Ó5‰Mð	6ð Ðr8   )rB   rC   rD   Ú__doc__r%   rs   r?   rE   rF   s   @r7   rf   rf   ƒ   s   ø„ Ù8ô#ò$ö

r8   rf   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚData2VecAudioFeatureProjectionc                 ó4  •— t         ‰| �  «        t        j                  |j                  d   |j
                  ¬«      | _        t        j                  |j                  d   |j                  «      | _	        t        j                  |j                  «      | _        y )Nr;   ©Úeps)r$   r%   r   r.   r&   Úlayer_norm_epsr/   ÚLinearrT   Ú
projectionÚDropoutÚfeat_proj_dropoutÚdropoutrW   s     €r7   r%   z'Data2VecAudioFeatureProjection.__init__¡   sf   ø€ Ü‰ÑÔÜŸ,™, v§¡°rÑ':À×@UÑ@UÔVˆŒÜŸ)™) F§O¡O°BÑ$7¸×9KÑ9KÓLˆŒÜ—z‘z &×":Ñ":Ó;ˆ�r8   c                 óp   — | j                  |«      }| j                  |«      }| j                  |«      }||fS r]   )r/   r€   rƒ   )r3   r>   Únorm_hidden_statess      r7   r?   z&Data2VecAudioFeatureProjection.forward§   s:   € à!Ÿ_™_¨]Ó;ÐØŸ™Ð(:Ó;ˆØŸ™ ]Ó3ˆØÐ0Ð0Ð0r8   rA   rF   s   @r7   rz   rz       s   ø„ ô<ö1r8   rz   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingrƒ   Úkwargsc                 óœ  — |€|j                  d«      dz  }t        j                  ||j                  dd«      «      |z  }|�||z   }t        j
                  j                  |d¬«      }t        j
                  j                  ||| j                  ¬«      }t        j                  ||«      }	|	j                  dd«      j                  «       }	|	|fS )Nr;   ç      à¿rJ   r   ©Údim)Úpru   r   )
ÚsizeÚtorchÚmatmulr<   r   Ú
functionalÚsoftmaxrƒ   ru   Ú
contiguous)
r†   r‡   rˆ   r‰   rŠ   r‹   rƒ   rŒ   Úattn_weightsÚattn_outputs
             r7   Úeager_attention_forwardrš   ¯   s»   € ð €Ø—*‘*˜R“. DÑ(ˆô —<‘<  s§}¡}°Q¸Ó':Ó;¸gÑE€LàÐ!Ø# nÑ4ˆä—=‘=×(Ñ(¨¸2Ð(Ó>€LÜ—=‘=×(Ñ(¨¸È6Ï?É?Ð(Ó[€Lä—,‘,˜|¨UÓ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 )ÚData2VecAudioAttentionz=Multi-headed attention from 'Attention Is All You Need' paperNÚ	embed_dimÚ	num_headsrƒ   Ú
is_decoderr!   Ú	is_causalr4   c                 ó
  •— t         ‰| �  «        || _        || _        || _        ||z  | _        || _        | j
                  |z  | j                  k7  rt        d| j                  › d|› d�«      ‚| j
                  dz  | _        || _	        || _
        t        j                  |||¬«      | _        t        j                  |||¬«      | _        t        j                  |||¬«      | _        t        j                  |||¬«      | _        y )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_dimr4   Ú
ValueErrorr‹   rŸ   r    r   r   Úk_projÚv_projÚq_projÚout_proj)	r3   r�   rž   rƒ   rŸ   r!   r    r4   r6   s	           €r7   r%   zData2VecAudioAttention.__init__Î   sä   ø€ ô 	‰ÑÔØ"ˆŒØ"ˆŒØˆŒØ! YÑ.ˆŒØˆŒà�M‰M˜IÑ%¨$¯.©.Ò8ÜØMÈdÏnÉnÐM]Ø$ Y K¨rð3óð ð —}‘} dÑ*ˆŒØ$ˆŒØ"ˆŒä—i‘i 	¨9¸4Ô@ˆŒÜ—i‘i 	¨9¸4Ô@ˆŒÜ—i‘i 	¨9¸4Ô@ˆŒÜŸ	™	 )¨Y¸TÔBˆ�r8   r>   Úkey_value_statesrŠ   Úoutput_attentionsrŒ   Úreturnc                 óò  — |du}|j                   dd }g |¢d‘| j                  ‘­}| j                  |«      j                  |«      j	                  dd«      }	|r|n|}
g |
j                   dd ¢d‘| j                  ‘­}| j                  |
«      j                  |«      j	                  dd«      }| j                  |
«      j                  |«      j	                  dd«      }t        j                  | j                  j                  t        «      } || |	|||f| j                  sdn| j                  | j                  |dœ|¤Ž\  }} |j                  g |¢d‘­Ž j!                  «       }| j#                  |«      }||dfS )z#Input shape: Batch x Time x ChannelNr;   r   rJ   ç        )rƒ   r‹   r©   )Úshaper¢   r¦   Úviewr<   r¤   r¥   r   Úget_interfacer4   Ú_attn_implementationrš   ru   rƒ   r‹   Úreshaper—   r§   )r3   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                    r7   r?   zData2VecAudioAttention.forwardí   sŠ  € ð .°TÐ9Ðð $×)Ñ)¨#¨2Ð.ˆà8˜Ð8 bÐ8¨$¯-©-Ñ8ˆð —{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆá-?Ñ)À]ˆØB�^×)Ñ)¨#¨2Ð.ÐB°ÐB°D·M±MÑBˆØ—[‘[ Ó0×5Ñ5°hÓ?×IÑIÈ!ÈQÓOˆ
Ø—{‘{ >Ó2×7Ñ7¸ÓA×KÑKÈAÈqÓQˆä(?×(MÑ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØð
%
ð  $Ÿ}š}‘C°$·,±,Ø—L‘LØ/ñ
%
ð ñ
%
Ñ!ˆ�\ð *�k×)Ñ)Ð;¨;Ð;¸Ò;×FÑFÓHˆØ—m‘m KÓ0ˆà˜L¨$Ð.Ð.r8   )r¬   FTFN)NNF)rB   rC   rD   rx   ÚintÚfloatÚboolr   r%   r“   ÚTensorr   r   Útupler?   rE   rF   s   @r7   rœ   rœ   Ë   sÿ   ø„ ÙGð Ø ØØØ-1ñCàðCð ðCð ð	Cð
 ðCð ðCð ðCð $ dÑ*õCðD 15Ø.2Ø).ñ0/à—|‘|ð0/ð  Ÿ,™,¨Ñ-ð0/ð Ÿ™ tÑ+ð	0/ð
   $™;ð0/ð Ð-Ñ.ð0/ð 
ˆu�|‰|˜UŸ\™\¨DÑ0°%¸¿¹Ñ2EÈÑ2LÐLÑ	M÷0/r8   rœ   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚData2VecAudioFeedForwardc                 óö  •— t         ‰| �  «        t        j                  |j                  «      | _        t        j                  |j                  |j                  «      | _	        t        |j                  t        «      rt        |j                     | _        n|j                  | _        t        j                  |j                  |j                  «      | _        t        j                  |j                   «      | _        y r]   )r$   r%   r   r�   Úactivation_dropoutÚintermediate_dropoutr   rT   Úintermediate_sizeÚintermediate_denseÚ
isinstanceÚ
hidden_actÚstrr   Úintermediate_act_fnÚoutput_denseÚhidden_dropoutÚoutput_dropoutrW   s     €r7   r%   z!Data2VecAudioFeedForward.__init__!  s«   ø€ Ü‰ÑÔÜ$&§J¡J¨v×/HÑ/HÓ$IˆÔ!ä"$§)¡)¨F×,>Ñ,>À×@XÑ@XÓ"YˆÔÜ�f×'Ñ'¬Ô-Ü'-¨f×.?Ñ.?Ñ'@ˆDÕ$à'-×'8Ñ'8ˆDÔ$äŸI™I f×&>Ñ&>À×@RÑ@RÓSˆÔÜ Ÿj™j¨×)>Ñ)>Ó?ˆÕr8   c                 ó°   — | j                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }| j	                  |«      }|S r]   )rÆ   rÊ   rÄ   rË   rÍ   r=   s     r7   r?   z Data2VecAudioFeedForward.forward.  sX   € Ø×/Ñ/°Ó>ˆØ×0Ñ0°Ó?ˆØ×1Ñ1°-Ó@ˆà×)Ñ)¨-Ó8ˆØ×+Ñ+¨MÓ:ˆØÐr8   rA   rF   s   @r7   rÁ   rÁ      s   ø„ ô@ör8   rÁ   c                   ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )ÚData2VecAudioEncoderLayerc                 ó°  •— t         ‰| �  «        t        |j                  |j                  |j
                  d|¬«      | _        t        j                  |j                  «      | _
        t        j                  |j                  |j                  ¬«      | _        t        |«      | _        t        j                  |j                  |j                  ¬«      | _        y )NF)r�   rž   rƒ   rŸ   r4   r|   )r$   r%   rœ   rT   Únum_attention_headsÚattention_dropoutÚ	attentionr   r�   rÌ   rƒ   r.   r~   r/   rÁ   Úfeed_forwardÚfinal_layer_normrW   s     €r7   r%   z"Data2VecAudioEncoderLayer.__init__9  s�   ø€ Ü‰ÑÔÜ/Ø×(Ñ(Ø×0Ñ0Ø×,Ñ,ØØô
ˆŒô —z‘z &×"7Ñ"7Ó8ˆŒÜŸ,™, v×'9Ñ'9¸v×?TÑ?TÔUˆŒÜ4°VÓ<ˆÔÜ "§¡¨V×-?Ñ-?ÀV×EZÑEZÔ [ˆÕr8   c                 óè   — |}| j                  |||¬«      \  }}}| j                  |«      }||z   }| j                  |«      }|| j                  |«      z   }| j	                  |«      }|f}|r||fz  }|S )N©rŠ   r©   )rÔ   rƒ   r/   rÕ   rÖ   )r3   r>   rŠ   r©   Úattn_residualr˜   rb   Úoutputss           r7   r?   z!Data2VecAudioEncoderLayer.forwardH  s’   € Ø%ˆØ)-¯©Ø¨.ÐL]ð *8ó *
Ñ&ˆ�| Qð Ÿ™ ]Ó3ˆØ%¨Ñ5ˆàŸ™¨Ó6ˆØ%¨×(9Ñ(9¸-Ó(HÑHˆØ×-Ñ-¨mÓ<ˆà Ð"ˆáØ˜�Ñ&ˆGàˆr8   rn   rA   rF   s   @r7   rÐ   rÐ   8  s   ø„ ô\÷r8   rÐ   c                   ór   ‡ — 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 )
ÚData2VecAudioEncoderc                 ó˜  •— t         ‰| �  «        || _        t        |«      | _        t        j                  |j                  |j                  ¬«      | _	        t        j                  |j                  «      | _        t        j                  t        |j                  «      D �cg c]  }t!        |«      ‘Œ c}«      | _        d| _        y c c}w )Nr|   F)r$   r%   r4   r[   Úpos_conv_embedr   r.   rT   r~   r/   r�   rÌ   rƒ   r^   r_   Únum_hidden_layersrÐ   r`   rj   ra   s      €r7   r%   zData2VecAudioEncoder.__init__]  s’   ø€ Ü‰ÑÔØˆŒÜBÀ6ÓJˆÔÜŸ,™, v×'9Ñ'9¸v×?TÑ?TÔUˆŒÜ—z‘z &×"7Ñ"7Ó8ˆŒÜ—m‘mÔPUÐV\×VnÑVnÓPoÖ$pÈ1Ô%>¸vÕ%FÒ$pÓqˆŒØ&+ˆÕ#ùò %qs   Â!CNr>   rŠ   r©   Úoutput_hidden_statesÚreturn_dictc                 óÔ  — |rdnd }|rdnd }|�5|j                  d«      j                  dd|j                  d   «      }d|| <   t        | j                  ||¬«      }| j                  |«      }	||	j                  |j                  «      z   }| j                  |«      }| j                  |«      }t        «       xs t        | «      }
| j                  D ]j  }|r||fz   }t        j                  g «      }| j                  xr || j                  j                   k  }|r|
r ||||¬«      }|d   }|rd}|sŒb|d   fz   }Œl |r||fz   }|st#        d	„ |||fD «       «      S t%        |||¬
«      S )N© r;   r   rJ   r   )r4   Úinputs_embedsrŠ   rØ   ©NNc              3   ó&   K  — | ]	  }|€Œ|–— Œ y ­wr]   rã   )Ú.0Úvs     r7   ú	<genexpr>z/Data2VecAudioEncoder.forward.<locals>.<genexpr>œ  s   è ø€ Òm˜qÐ_`Ñ_lœÑmùs   ‚Š)Úlast_hidden_stater>   Ú
attentions)Ú	unsqueezeÚrepeatr­   r   r4   rÞ   ÚtoÚdevicer/   rƒ   r	   r
   r`   r“   Úrandru   Ú	layerdropr¿   r   )r3   r>   rŠ   r©   rà   rá   Úall_hidden_statesÚall_self_attentionsÚexpand_attention_maskÚposition_embeddingsÚsynced_gpusrd   Údropout_probabilityÚskip_the_layerÚlayer_outputss                  r7   r?   zData2VecAudioEncoder.forwardf  s¨  € ñ #7™B¸DÐÙ$5™b¸4ÐàÐ%à$2×$<Ñ$<¸RÓ$@×$GÑ$GÈÈ1Èm×NaÑNaÐbcÑNdÓ$eÐ!Ø45ˆMÐ0Ð0Ñ1ä2Ø—;‘;Ø'Ø)ô
ˆð #×1Ñ1°-Ó@ÐØ%Ð(;×(>Ñ(>¸}×?SÑ?SÓ(TÑTˆØŸ™¨Ó6ˆØŸ™ ]Ó3ˆä0Ó2ÒRÔ6LÈTÓ6Rˆà—[‘[ò 	PˆEÙ#Ø$5¸Ð8HÑ$HÐ!ô #(§*¡*¨R£.Ðà!Ÿ]™]ÒZÐ/BÀTÇ[Á[×EZÑEZÑ/ZˆNÙ!¡[á %Ø!°.ÐTeô!�ð !.¨aÑ 0�áØ ,�â Ø&9¸]È1Ñ=MÐ<OÑ&OÑ#ð'	Pñ*  Ø 1°]Ð4DÑ DÐáÜÑm ]Ð4EÐGZÐ$[ÔmÓmÐmÜØ+Ø+Ø*ô
ð 	
r8   )NFFT)
rB   rC   rD   r%   r“   Útensorr¾   r½   r?   rE   rF   s   @r7   rÜ   rÜ   \  sX   ø„ ô,ð /3Ø"'Ø%*Ø ñ;
à—|‘|ð;
ð Ÿ™ tÑ+ð;
ð  ð	;
ð
 #ð;
ð ÷;
r8   rÜ   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚData2VecAudioAdapterLayerc                 ó¶   •— t         ‰| �  «        t        j                  |j                  d|j                  z  |j
                  |j                  d¬«      | _        y )NrJ   r   )r    rR   )r$   r%   r   r)   Úoutput_hidden_sizeÚadapter_kernel_sizeÚadapter_strider-   rW   s     €r7   r%   z"Data2VecAudioAdapterLayer.__init__¥  sJ   ø€ Ü‰ÑÔÜ—I‘IØ×%Ñ%Ø�×)Ñ)Ñ)Ø×&Ñ&Ø×(Ñ(Øô
ˆ�	r8   c                 ój   — | j                  |«      }t        j                  j                  |d¬«      }|S )Nr   r�   )r-   r   r•   Úglur=   s     r7   r?   z!Data2VecAudioAdapterLayer.forward¯  s/   € ØŸ	™	 -Ó0ˆÜŸ™×)Ñ)¨-¸QÐ)Ó?ˆàÐr8   rA   rF   s   @r7   rü   rü   ¤  s   ø„ ô
ör8   rü   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚData2VecAudioAdapterc                 ó¨  •‡— t         ‰| �  «        ‰j                  ‰j                  k7  rTt	        j
                  ‰j                  ‰j                  «      | _        t	        j                  ‰j                  «      | _        nd x| _        | _        t	        j                  ˆfd„t        ‰j                  «      D «       «      | _        ‰j                  | _        y )Nc              3   ó4   •K  — | ]  }t        ‰«      –— Œ y ­wr]   )rü   )rç   rb   r4   s     €r7   ré   z0Data2VecAudioAdapter.__init__.<locals>.<genexpr>Á  s   øè ø€ Ò#pÈ!Ô$=¸f×$EÑ#pùs   ƒ)r$   r%   rþ   rT   r   r   Úprojr.   Úproj_layer_normr^   r_   Únum_adapter_layersr`   rñ   rW   s    `€r7   r%   zData2VecAudioAdapter.__init__·  s—   ù€ Ü‰ÑÔð ×$Ñ$¨×(:Ñ(:Ò:ÜŸ	™	 &×"4Ñ"4°f×6OÑ6OÓPˆDŒIÜ#%§<¡<°×0IÑ0IÓ#JˆDÕ à/3Ð3ˆDŒI˜Ô,ä—m‘mÓ#pÌuÐU[×UnÑUnÓOoÔ#pÓpˆŒØ×)Ñ)ˆ�r8   c                 óh  — | j                   �.| j                  �"| j                  |«      }| j                  |«      }|j                  dd«      }| j                  D ]D  }t        j
                  j                  «       }| j                  r|| j                  kD  sŒ= ||«      }ŒF |j                  dd«      }|S rY   )r  r  r<   r`   ÚnpÚrandomru   rñ   )r3   r>   rd   Úlayerdrop_probs       r7   r?   zData2VecAudioAdapter.forwardÄ  s¢   € à�9‰9Ð  T×%9Ñ%9Ð%EØ ŸI™I mÓ4ˆMØ ×0Ñ0°Ó?ˆMà%×/Ñ/°°1Ó5ˆà—[‘[ò 	5ˆEÜŸY™Y×-Ñ-Ó/ˆNØ—=’= ^°d·n±nÓ%DÙ % mÓ 4‘ð	5ð
 &×/Ñ/°°1Ó5ˆØÐr8   rA   rF   s   @r7   r  r  ¶  s   ø„ ô*ör8   r  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ˆ xZS )ÚData2VecAudioPreTrainedModelr4   Údata2vec_audiorv   ÚaudioTc                 ó  •— t         ‰| �  |«       t        |t        «      r‡t	        j
                  d|j                  j                  z  «      }t        j                  |j                  j                  | |¬«       t        j                  |j                  j                  | |¬«       yt        |t        «      r+t        j                  |j                  j                  d«       yt        |t        j                   «      rŒt        j"                  |j                  «       |j                  �`t	        j
                  |j$                  |j&                  |j(                  d   z  z  «      }t        j                  |j                  | |¬«       yyy)zInitialize the weightsr   )ÚaÚbr   N)r$   Ú_init_weightsrÇ   rz   ÚmathÚsqrtr€   Úin_featuresÚinitÚuniform_Úweightr!   rP   Ú	constant_r-   r   r)   Úkaiming_normal_rS   Úin_channelsr   )r3   r†   Úkr6   s      €r7   r  z*Data2VecAudioPreTrainedModel._init_weightsà  s  ø€ ô 	‰Ñ˜fÔ%Ü�fÔ<Ô=Ü—	‘	˜!˜f×/Ñ/×;Ñ;Ñ;Ó<ˆAÜ�M‰M˜&×+Ñ+×2Ñ2°q°b¸AÕ>Ü�M‰M˜&×+Ñ+×0Ñ0°Q°B¸!Ö<Ü˜Ô @ÔAÜ�N‰N˜6Ÿ;™;×+Ñ+¨QÕ/Ü˜¤§	¡	Ô*Ü× Ñ  §¡Ô/à�{‰{Ð&Ü—I‘I˜fŸm™m¨v×/AÑ/AÀF×DVÑDVÐWXÑDYÑ/YÑZÓ[�Ü—‘˜fŸk™k¨a¨R°1Ö5ð 'ð +r8   NÚinput_lengthsÚadd_adapterc                 óT  — |€| j                   j                  n|}d„ }t        | j                   j                  | j                   j                  «      D ]  \  }} ||||«      }Œ |rBt        | j                   j                  «      D ]   } ||d| j                   j                  «      }Œ" |S )zH
        Computes the output length of the convolutional layers
        c                 ó>   — t        j                  | |z
  |d¬«      dz   S )NÚfloor)Úrounding_moder   )r“   Údiv©Úinput_lengthr   r    s      r7   Ú_conv_out_lengthzWData2VecAudioPreTrainedModel._get_feat_extract_output_lengths.<locals>._conv_out_lengthø  s"   € ô —9‘9˜\¨KÑ7¸ÈwÔWÐZ[Ñ[Ð[r8   r   )r4   r!  Úzipr*   r+   r_   r	  r   )r3   r   r!  r)  r   r    rb   s          r7   Ú _get_feat_extract_output_lengthsz=Data2VecAudioPreTrainedModel._get_feat_extract_output_lengthsñ  s¦   € ð
 2=Ð1D�d—k‘k×-Ò-È+ˆò	\ô
 $' t§{¡{×'>Ñ'>ÀÇÁ×@WÑ@WÓ#Xò 	QÑˆK˜Ù,¨]¸KÈÓP‰Mð	Qñ Ü˜4Ÿ;™;×9Ñ9Ó:ò _�Ù 0°ÀÀ4Ç;Á;×C]ÑC]Ó ^‘ð_ð Ðr8   Úfeature_vector_lengthrŠ   c                 ó   — |j                  d¬«      d d …df   }| j                  ||¬«      }|j                  t        j                  «      }|j
                  d   }t        j                  ||f|j                  |j                  ¬«      }d|t        j                  |j
                  d   |j                  ¬«      |dz
  f<   |j                  dg«      j                  d«      j                  dg«      j                  «       }|S )Nr;   r�   ©r!  r   )Údtyperï   r   )rï   )Úcumsumr+  rî   r“   Úlongr­   Úzerosr/  rï   ÚarangeÚflipr½   )r3   r,  rŠ   r!  Únon_padded_lengthsÚoutput_lengthsÚ
batch_sizes          r7   Ú"_get_feature_vector_attention_maskz?Data2VecAudioPreTrainedModel._get_feature_vector_attention_mask  só   € ð
 ,×2Ñ2°rÐ2Ó:º1¸b¸5ÑAÐà×>Ñ>Ð?QÐ_jÐ>ÓkˆØ'×*Ñ*¬5¯:©:Ó6ˆà#×)Ñ)¨!Ñ,ˆ
äŸ™ØÐ.Ð/°~×7KÑ7KÐTb×TiÑTiô
ˆð uvˆœŸ™ ^×%9Ñ%9¸!Ñ%<À^×EZÑEZÔ[Ð]kÐnoÑ]oÐpÑqØ'×,Ñ,¨b¨TÓ2×9Ñ9¸"Ó=×BÑBÀBÀ4ÓH×MÑMÓOˆØÐr8   r]   )rB   rC   rD   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnr“   Úno_gradr  Ú
LongTensorr»   r½   r+  r8  rE   rF   s   @r7   r  r  Õ  s“   ø… àÓØ(ÐØ$€OØÐØ&*Ð#ØÐØ€NØÐà€U‡]�]ƒ_ó6ó ð6ñ ¸e×>NÑ>NÐQTÑ>Tð ÐcgÐjnÑcnó ð, Y]ñØ%(ðØ:?×:JÑ:J÷r8   r  r­   Ú	mask_probÚmask_lengthÚ	min_masksrª   c                 óà  ‡‡‡‡‡— | \  }Š‰dk  rt        d«      ‚‰‰kD  rt        d‰› d‰› d�«      ‚t        j                  j                  d«      j	                  «       Šˆˆˆˆˆfd„}|�-|j                  «       j                  d«      j                  «       nt        |«      D �cg c]  }‰‘Œ c}}t        j                  |‰ft        ¬	«      }	g }
 |‰«      }|d
k(  r|	S |D ]¯  } ||«      }t        j                  j                  t        j                  |‰dz
  z
  «      |d¬«      }t        |«      d
k(  r‰dz
  }n|d
   }t        j                  |t        j                  ||z
  t        j                   ¬	«      |z  g«      }|
j#                  |«       Œ± t        j$                  |
«      }
t        j&                  |
dd…dd…df   ||‰f«      }
|
j)                  ||‰z  «      }
t        j                  ‰«      dddd…f   }t        j&                  |||‰f«      j)                  ||‰z  «      }|
|z   }
|
j+                  «       ‰dz
  kD  r‰dz
  |
|
‰dz
  kD  <   t        j,                  |	|
dd«       |	S c c}w )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  ‰kD  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   )r»   Úmax)r(  Únum_masked_spanÚepsilonrD  rC  rE  Úsequence_lengths     €€€€€r7   Úcompute_num_masked_spanz6_compute_mask_indices.<locals>.compute_num_masked_spanA  so   ø€ ä˜i¨,Ñ6¸ÑDÀwÑNÓOˆÜ˜o¨yÓ9ˆð ˜[Ñ(¨?Ò:Ø-°Ñ<ˆOð ˜;¨™?Ñ+¨oÒ=Ü! ,°+À±/Ñ"BÀAÓFˆOàÐr8   Nr;   ©r/  r   F)Úreplace)r£   r  r  rð   ÚitemÚdetachÚsumÚtolistr_   r2  r½   Úchoicer3  ÚlenÚconcatenateÚonesÚint32ÚappendÚarrayÚbroadcast_tor±   rI  Úput_along_axis)r­   rC  rD  rŠ   rE  r7  rM  rb   r   Úspec_aug_maskÚspec_aug_mask_idxsÚmax_num_masked_spanr(  rJ  Úspec_aug_mask_idxÚdummy_mask_idxÚoffsetsrK  rL  s    `` `            @@r7   Ú_compute_mask_indicesrc    s­  ü€ ð0 #(Ñ€J�à�Q‚ÜÐAÓBÐBà�_Ò$ÜØ]Ð^iÐ]jØ& Ð&7°qð:ó
ð 	
ô �i‰i�n‰n˜QÓ×$Ñ$Ó&€G÷ð ð$ Ð%ð 	×ÑÓ×#Ñ# BÓ'×.Ñ.Ô0ä',¨ZÓ'8Ö9 !ŠoÒ9ð ô —H‘H˜j¨/Ð:Ä$ÔG€MØÐá1°/ÓBÐà˜aÒØÐà%ò 5ˆá1°,Ó?ˆô ŸI™I×,Ñ,Ü�I‰I�l k°A¡oÑ6Ó7¸ÐRWð -ó 
Ðô Ð Ó! QÒ&ð -¨qÑ0‰Nà.¨qÑ1ˆNäŸN™NØ¤§¡Ð(;¸oÑ(MÔUW×U]ÑU]Ô ^ÐaoÑ oÐpó
Ðð 	×!Ñ!Ð"3Õ4ð/5ô2 Ÿ™Ð"4Ó5Ðô Ÿ™Øš1ša ˜:Ñ&¨Ð5HÈ+Ð(VóÐð ,×3Ñ3°JÐ@SÐVaÑ@aÓbÐô �i‰i˜Ó$ T¨4² ]Ñ3€GÜ�o‰o˜g¨
Ð4GÈÐ'UÓV×^Ñ^ØÐ'¨+Ñ5ó€Gð ,¨gÑ5Ðð ×ÑÓ /°AÑ"5Ò5ØGVÐYZÑGZÐÐ-°À!Ñ0CÑCÑDô ×Ñ�mÐ%7¸¸BÔ?àÐùòw :s   Â$	I+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 )ÚData2VecAudioModelr4   c                 ó´  •— t         ‰| �  |«       || _        t        |«      | _        t        |«      | _        |j                  dkD  s|j                  dkD  rEt        j                  t        j                  |j                  «      j                  «       «      | _        t!        |«      | _        |j$                  rt'        |«      nd | _        | j+                  «        y ©Nr¬   )r$   r%   r4   rf   Úfeature_extractorrz   Úfeature_projectionÚmask_time_probÚmask_feature_probr   Ú	Parameterr“   r¾   rT   r  Úmasked_spec_embedrÜ   Úencoderr!  r  ÚadapterÚ	post_initrW   s     €r7   r%   zData2VecAudioModel.__init__—  s¦   ø€ Ü‰Ñ˜Ô ØˆŒÜ!<¸VÓ!DˆÔÜ"@ÀÓ"HˆÔð × Ñ  3Ò&¨&×*BÑ*BÀSÒ*HÜ%'§\¡\´%·,±,¸v×?QÑ?QÓ2R×2[Ñ2[Ó2]Ó%^ˆDÔ"ä+¨FÓ3ˆŒà7=×7IÒ7IÔ+¨FÔ3ÈtˆŒð 	�‰Õr8   c                 ó8   — | j                   j                  «        y©z¨
        Calling this function will disable the gradient computation for the feature encoder so that its parameter will
        not be updated during training.
        N)rh  rs   ©r3   s    r7   Úfreeze_feature_encoderz)Data2VecAudioModel.freeze_feature_encoder¨  s   € ð
 	×Ñ×1Ñ1Õ3r8   Nr>   Úmask_time_indicesrŠ   c                 óÎ  — t        | j                  dd«      s|S |j                  «       \  }}}|�)| j                  j	                  |j
                  «      ||<   nË| j                  j                  dkD  r²| j                  r¦t        ||f| j                  j                  | j                  j                  || j                  j                  ¬«      }t        j                  ||j                  t        j                  ¬«      }| j                  j	                  |j
                  «      ||<   | j                  j                  dkD  r¨| j                  rœt        ||f| j                  j                  | j                  j                   | j                  j"                  ¬«      }t        j                  ||j                  t        j                  ¬«      }|dd…df   j%                  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   )rC  rD  rŠ   rE  )rï   r/  )rC  rD  rE  r;   )Úgetattrr4   r’   rm  rî   r/  rj  ru   rc  Úmask_time_lengthÚmask_time_min_masksr“   rú   rï   r½   rk  Úmask_feature_lengthÚmask_feature_min_masksÚexpand)r3   r>   ru  rŠ   r7  rL  rT   Úmask_feature_indicess           r7   Ú_mask_hidden_statesz&Data2VecAudioModel._mask_hidden_states¯  sš  € ô �t—{‘{Ð$8¸$Ô?Ø Ð ð 4A×3EÑ3EÓ3GÑ0ˆ
�O [àÐ(à/3×/EÑ/E×/HÑ/HÈ×I\ÑI\Ó/]ˆMÐ+Ò,Ø�[‰[×'Ñ'¨!Ò+°·²Ü 5Ø˜_Ð-ØŸ+™+×4Ñ4Ø ŸK™K×8Ñ8Ø-ØŸ+™+×9Ñ9ô!Ðô !&§¡Ð->À}×G[ÑG[Ôch×cmÑcmÔ nÐØ/3×/EÑ/E×/HÑ/HÈ×I\ÑI\Ó/]ˆMÐ+Ñ,à�;‰;×(Ñ(¨1Ò,°·²ä#8Ø˜[Ð)ØŸ+™+×7Ñ7Ø ŸK™K×;Ñ;ØŸ+™+×<Ñ<ô	$Ð ô $)§<¡<Ð0DÈ]×MaÑMaÔin×isÑisÔ#tÐ Ø#7º¸4¸Ñ#@×#GÑ#GÈÈOÐ]_Ó#`Ð Ø23ˆMÐ.Ñ/àÐr8   rv   r©   rà   rá   rª   c                 óH  — |�|n| j                   j                  }|�|n| j                   j                  }|�|n| j                   j                  }| j	                  |«      }|j                  dd«      }|�!| j                  |j                  d   |d¬«      }| j                  |«      \  }	}| j                  |	||¬«      }	| j                  |	||||¬«      }
|
d   }	| j                  �| 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   rJ   Fr.  )ru  rŠ   ©rŠ   r©   rà   rá   r   )rê   Úextract_featuresr>   rë   )r4   r©   rà   rá   rh  r<   r8  r­   ri  r  rn  ro  ÚData2VecAudioBaseModelOutputr>   rë   )r3   rv   rŠ   ru  r©   rà   rá   rŒ   r‚  r>   Úencoder_outputss              r7   r?   zData2VecAudioModel.forwardÝ  sb  € ð  2CÐ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆà×1Ñ1°,Ó?ÐØ+×5Ñ5°a¸Ó;ÐàÐ%à!×DÑDØ ×&Ñ& qÑ)¨>Àuð Eó ˆNð +/×*AÑ*AÐBRÓ*SÑ'ˆÐ'Ø×0Ñ0ØÐ->È~ð 1ó 
ˆð Ÿ,™,ØØ)Ø/Ø!5Ø#ð 'ó 
ˆð (¨Ñ*ˆà�<‰<Ð#Ø ŸL™L¨Ó7ˆMáØ!Ð#3Ð4°ÀqÀrÐ7JÑJÐJä+Ø+Ø-Ø)×7Ñ7Ø&×1Ñ1ô	
ð 	
r8   rå   ©NNNNN)rB   rC   rD   r   r%   rt  r“   ÚFloatTensorrB  r  r   r¾   r½   r¿   rƒ  r?   rE   rF   s   @r7   re  re  •  só   ø„ ðÐ2õ ò"4ð 7;Ø26ñ	,à×(Ñ(ð,ð !×,Ñ,¨tÑ3ð,ð ×(Ñ(¨4Ñ/ó	,ð\ ð /3Ø6:Ø)-Ø,0Ø#'ñ8
à—l‘l TÑ)ð8
ð Ÿ™ tÑ+ð8
ð !×,Ñ,¨tÑ3ð	8
ð
   $™;ð8
ð # T™kð8
ð ˜D‘[ð8
ð 
Ð-Ñ	-ò8
ó ô8
r8   re  rJ   zu
    Data2VecAudio Model with a `language modeling` head on top for Connectionist Temporal Classification (CTC).
    )Úcustom_introc                   óÄ   ‡ — e Zd Zˆ f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 )ÚData2VecAudioForCTCc                 ó   •— t         ‰| �  |«       t        |«      | _        t	        j
                  |j                  «      | _        |j                  €t        d| j                  › d�«      ‚t        |d«      r|j                  r|j                  n|j                  }t	        j                  ||j                  «      | _        | j#                  «        y)aZ  
        config ([`Data2VecAudioForCTC`]):
            Model configuration class with all the parameters of the model. Initializing with a config file does not
            load the weights associated with the model, only the configuration. Check out the
            [`~PreTrainedModel.from_pretrained`]  method to load the model weights.
        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: `Data2VecAudioForCTC.from_pretrained(..., vocab_size=vocab_size)`. or define `vocab_size` of your model's configuration.r!  )r$   r%   re  r  r   r�   Úfinal_dropoutrƒ   Ú
vocab_sizer£   r6   Úhasattrr!  rþ   rT   r   Úlm_headrp  )r3   r4   rþ   r6   s      €r7   r%   zData2VecAudioForCTC.__init__"  s¸   ø€ ô 	‰Ñ˜Ô ä0°Ó8ˆÔÜ—z‘z &×"6Ñ"6Ó7ˆŒà×ÑÐ$ÜØ0°·±Ð0@ð AHð Hóð ô *1°¸Ô)GÈF×L^ÒL^ˆF×%Ò%Ðdj×dvÑdvð 	ô —y‘yÐ!3°V×5FÑ5FÓGˆŒð 	�‰Õr8   c                 óL   — | j                   j                  j                  «        yrr  ©r  rh  rs   rs  s    r7   rt  z*Data2VecAudioForCTC.freeze_feature_encoder=  ó   € ð
 	×Ñ×-Ñ-×@Ñ@ÕBr8   Nrv   rŠ   r©   rà   rá   Úlabelsrª   c           
      ó¤  — |�|n| j                   j                  }|�I|j                  «       | j                   j                  k\  r"t	        d| j                   j                  › �«      ‚| j                  |||||¬«      }|d   }	| j                  |	«      }	| j                  |	«      }
d}|��b|�|n$t        j                  |t        j                  ¬«      }| j                  |j                  d«      «      j                  t        j                  «      }|dk\  }|j                  d«      }|j                  |«      }t        j                   j#                  |
dt        j$                  ¬«      j'                  dd«      }t        j(                  j*                  j-                  d	¬
«      5  t        j                   j/                  ||||| j                   j0                  | j                   j2                  | j                   j4                  ¬«      }ddd«       |s|
f|t6        d z   }|�|f|z   S |S t9        ||
|j:                  |j<                  ¬«      S # 1 sw Y   ŒExY w)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: r�  r   rN  r;   )r�   r/  r   F)Úenabled)ÚblankÚ	reductionÚzero_infinity©ÚlossÚlogitsr>   rë   )r4   rá   rI  rŒ  r£   r  rƒ   rŽ  r“   Ú	ones_liker1  r+  rR  rî   Ú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ë   )r3   rv   rŠ   r©   rà   rá   r’  rŒ   rÚ   r>   rš  r™  r   Úlabels_maskÚtarget_lengthsÚflattened_targetsÚ	log_probsÚoutputs                     r7   r?   zData2VecAudioForCTC.forwardD  s)  € ð$ &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆàÐ &§*¡*£,°$·+±+×2HÑ2HÒ"HÜÐCÀDÇKÁK×DZÑDZÐC[Ð\Ó]Ð]à×%Ñ%ØØ)Ø/Ø!5Ø#ð &ó 
ˆð   ™
ˆØŸ™ ]Ó3ˆà—‘˜mÓ,ˆàˆØÑð #1Ð"<‘Ä%Ç/Á/ÐR^Ôfk×fpÑfpÔBqð ð !×AÑAÀ.×BTÑBTÐUWÓBXÓY×\Ñ\Ô]b×]gÑ]gÓhˆMð ! A™+ˆKØ(Ÿ_™_¨RÓ0ˆNØ &× 4Ñ 4°[Ó AÐô Ÿ™×1Ñ1°&¸bÌÏÉÐ1ÓV×`Ñ`ÐabÐdeÓfˆIä—‘×%Ñ%×+Ñ+°EÐ+Ó:ñ 	Ü—}‘}×-Ñ-ØØ%Ø!Ø"ØŸ+™+×2Ñ2Ø"Ÿk™k×<Ñ<Ø"&§+¡+×"?Ñ"?ð .ó �÷	ñ Ø�Y Ô)FÐ)GÐ!HÑHˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEäØ˜f°G×4IÑ4IÐV]×VhÑVhô
ð 	
÷	ð 	ús   ÆA#IÉIr…  )rB   rC   rD   r%   rt  r   r“   r¾   r½   r¿   r   r?   rE   rF   s   @r7   r‰  r‰    s¬   ø„ ôò6Cð ð /3Ø)-Ø,0Ø#'Ø&*ñE
à—l‘l TÑ)ðE
ð Ÿ™ tÑ+ðE
ð   $™;ð	E
ð
 # T™kðE
ð ˜D‘[ðE
ð —‘˜tÑ#ðE
ð 
�Ñ	òE
ó ôE
r8   r‰  zœ
    Data2VecAudio 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 )Ú&Data2VecAudioForSequenceClassificationc                 óü  •— t         ‰| �  |«       t        |d«      r|j                  rt	        d«      ‚t        |«      | _        |j                  dz   }|j                  r0t        j                  t        j                  |«      |z  «      | _        t        j                  |j                  |j                   «      | _        t        j                  |j                   |j$                  «      | _        | j)                  «        y )Nr!  zdSequence classification does not support the use of Data2VecAudio adapters (config.add_adapter=True)r   )r$   r%   r�  r!  r£   re  r  rß   Úuse_weighted_layer_sumr   rl  r“   rW  Úlayer_weightsr   rT   Úclassifier_proj_sizeÚ	projectorÚ
num_labelsÚ
classifierrp  ©r3   r4   Ú
num_layersr6   s      €r7   r%   z/Data2VecAudioForSequenceClassification.__init__”  sÁ   ø€ Ü‰Ñ˜Ô ä�6˜=Ô)¨f×.@Ò.@ÜØvóð ô 1°Ó8ˆÔØ×-Ñ-°Ñ1ˆ
Ø×(Ò(Ü!#§¡¬e¯j©j¸Ó.DÀzÑ.QÓ!RˆDÔÜŸ™ 6×#5Ñ#5°v×7RÑ7RÓSˆŒÜŸ)™) F×$?Ñ$?À×ARÑARÓSˆŒð 	�‰Õr8   c                 óL   — | j                   j                  j                  «        yrr  r�  rs  s    r7   rt  z=Data2VecAudioForSequenceClassification.freeze_feature_encoder¥  r‘  r8   c                 óP   — | j                   j                  «       D ]	  }d|_        Œ y©zÒ
        Calling this function will disable the gradient computation for the base model so that its parameters will not
        be updated during training. Only the classification head will be updated.
        FN©r  ro   rp   rq   s     r7   Úfreeze_base_modelz8Data2VecAudioForSequenceClassification.freeze_base_model¬  ó*   € ð
 ×(Ñ(×3Ñ3Ó5ò 	(ˆEØ"'ˆEÕñ	(r8   Nrv   rŠ   r©   rà   rá   r’  rª   c                 ó<  — |�|n| j                   j                  }| j                   j                  rdn|}| j                  |||||¬«      }| j                   j                  rr|t           }	t        j                  |	d¬«      }	t        j                  j                  | j                  d¬«      }
|	|
j                  ddd«      z  j                  d¬«      }	n|d   }	| j                  |	«      }	|€|	j                  d¬«      }n‰| j                  |	j                   d   |«      }|j#                  d«      j%                  dd|	j                   d   «      }d	|	| <   |	j                  d¬«      |j                  d¬«      j                  dd«      z  }| j'                  |«      }d}|�Ft)        «       } ||j                  d| j                   j*                  «      |j                  d«      «      }|s|f|t        d z   }|�|f|z   S |S t-        |||j.                  |j0                  ¬
«      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 [`Data2VecAudioProcessor.__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).
        NTr�  r   r�   r;   r   rJ   r¬   r˜  )r4   rá   r¯  r  r¦  r“   Ústackr   r•   r–   r°  r®   rR  r²  Úmeanr8  r­   rì   rí   r´  r   r³  r   r>   rë   )r3   rv   rŠ   r©   rà   rá   r’  rŒ   rÚ   r>   Únorm_weightsÚpooled_outputÚpadding_maskÚexpand_padding_maskrš  r™  Úloss_fctr«  s                     r7   r?   z.Data2VecAudioForSequenceClassification.forward´  s!  € ð0 &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆØ'+§{¡{×'IÒ'I™tÐOcÐà×%Ñ%ØØ)Ø/Ø!5Ø#ð &ó 
ˆð �;‰;×-Ò-Ø#Ô$AÑBˆMÜ!ŸK™K¨¸1Ô=ˆMÜŸ=™=×0Ñ0°×1CÑ1CÈÐ0ÓLˆLØ*¨\×->Ñ->¸rÀ1ÀaÓ-HÑH×MÑMÐRSÐMÓT‰Mà# A™JˆMàŸ™ }Ó5ˆØÐ!Ø)×.Ñ.°1Ð.Ó5‰Mà×BÑBÀ=×CVÑCVÐWXÑCYÐ[iÓjˆLØ".×"8Ñ"8¸Ó"<×"CÑ"CÀAÀqÈ-×J]ÑJ]Ð^_ÑJ`Ó"aÐØ25ˆMÐ.Ð.Ñ/Ø)×-Ñ-°!Ð-Ó4°|×7GÑ7GÈAÐ7GÓ7N×7SÑ7SÐTVÐXYÓ7ZÑZˆMà—‘ Ó/ˆàˆØÐÜ'Ó)ˆHÙ˜FŸK™K¨¨D¯K©K×,BÑ,BÓCÀVÇ[Á[ÐQSÃ_ÓUˆDáØ�Y Ô)FÐ)GÐ!HÑHˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEä'ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r8   r…  )rB   rC   rD   r%   rt  r»  r   r“   r¾   r½   r¿   r   r?   rE   rF   s   @r7   r­  r­  �  s²   ø„ ôò"Cò(ð ð /3Ø)-Ø,0Ø#'Ø&*ñC
à—l‘l TÑ)ðC
ð Ÿ™ tÑ+ðC
ð   $™;ð	C
ð
 # T™kðC
ð ˜D‘[ðC
ð —‘˜tÑ#ð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 )Ú(Data2VecAudioForAudioFrameClassificationc                 óÀ  •— t         ‰| �  |«       t        |d«      r|j                  rt	        d«      ‚t        |«      | _        |j                  dz   }|j                  r0t        j                  t        j                  |«      |z  «      | _        t        j                  |j                  |j                   «      | _        |j                   | _        | j%                  «        y )Nr!  zgAudio frame classification does not support the use of Data2VecAudio adapters (config.add_adapter=True)r   )r$   r%   r�  r!  r£   re  r  rß   r¯  r   rl  r“   rW  r°  r   rT   r³  r´  rp  rµ  s      €r7   r%   z1Data2VecAudioForAudioFrameClassification.__init__ý  s®   ø€ Ü‰Ñ˜Ô ä�6˜=Ô)¨f×.@Ò.@ÜØyóð ô 1°Ó8ˆÔØ×-Ñ-°Ñ1ˆ
Ø×(Ò(Ü!#§¡¬e¯j©j¸Ó.DÀzÑ.QÓ!RˆDÔÜŸ)™) F×$6Ñ$6¸×8IÑ8IÓJˆŒØ ×+Ñ+ˆŒà�‰Õr8   c                 óL   — | j                   j                  j                  «        yrr  r�  rs  s    r7   rt  z?Data2VecAudioForAudioFrameClassification.freeze_feature_encoder  r‘  r8   c                 óP   — | j                   j                  «       D ]	  }d|_        Œ yr¹  rº  rq   s     r7   r»  z:Data2VecAudioForAudioFrameClassification.freeze_base_model  r¼  r8   Nrv   rŠ   r’  r©   rà   rá   rª   c           	      óú  — |�|n| j                   j                  }| j                   j                  rdn|}| j                  |||||¬«      }| j                   j                  rr|t           }	t        j                  |	d¬«      }	t        j                  j                  | j                  d¬«      }
|	|
j                  ddd«      z  j                  d¬«      }	n|d   }	| j                  |	«      }d}|�\t        «       } ||j                  d| j                  «      t        j                   |j                  d| j                  «      d¬«      «      }|s|f|t        d z   }|S t#        |||j$                  |j&                  ¬	«      S )
r¾  NTr�  r   r�   r;   r   )Úaxisr˜  )r4   rá   r¯  r  r¦  r“   r¿  r   r•   r–   r°  r®   rR  r´  r   r³  Úargmaxr   r>   rë   )r3   rv   rŠ   r’  r©   rà   rá   rŒ   rÚ   r>   rÁ  rš  r™  rÅ  r«  s                  r7   r?   z0Data2VecAudioForAudioFrameClassification.forward  sj  € ð0 &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆØ'+§{¡{×'IÒ'I™tÐOcÐà×%Ñ%ØØ)Ø/Ø!5Ø#ð &ó 
ˆð �;‰;×-Ò-Ø#Ô$AÑBˆMÜ!ŸK™K¨¸1Ô=ˆMÜŸ=™=×0Ñ0°×1CÑ1CÈÐ0ÓLˆLØ*¨\×->Ñ->¸rÀ1ÀaÓ-HÑH×MÑMÐRSÐMÓT‰Mà# A™JˆMà—‘ Ó/ˆàˆØÐÜ'Ó)ˆHÙ˜FŸK™K¨¨D¯O©OÓ<¼e¿l¹lÈ6Ï;É;ÐWYÐ[_×[jÑ[jÓKkÐrsÔ>tÓuˆDáØ�Y Ô)FÐ)GÐ!HÑHˆFØˆMä$ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r8   r…  )rB   rC   rD   r%   rt  r»  r   r“   r¾   r½   r¿   r   r?   rE   rF   s   @r7   rÇ  rÇ  û  s©   ø„ ôò Cò(ð ð /3Ø&*Ø)-Ø,0Ø#'ñ:
à—l‘l TÑ)ð:
ð Ÿ™ tÑ+ð:
ð —‘˜tÑ#ð	:
ð
   $™;ð:
ð # T™kð:
ð ˜D‘[ð:
ð 
Ð&Ñ	&ò:
ó ô:
r8   rÇ  c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚAMSoftmaxLossc                 óÞ   •— t         ‰| �  «        || _        || _        || _        t        j                  t        j                  ||«      d¬«      | _	        t        j                  «       | _        y )NT)rp   )r$   r%   ÚscaleÚmarginr³  r   rl  r“   Úrandnr  r   r™  )r3   Ú	input_dimr³  rÑ  rÒ  r6   s        €r7   r%   zAMSoftmaxLoss.__init__[  sQ   ø€ Ü‰ÑÔØˆŒ
ØˆŒØ$ˆŒÜ—l‘l¤5§;¡;¨y¸*Ó#EÐUYÔZˆŒÜ×'Ñ'Ó)ˆ�	r8   c                 óä  — |j                  «       }t        j                  j                  | j                  d¬«      }t        j                  j                  |d¬«      }t        j                  ||«      }|| j                  z
  }t        j                  j                  || j                  «      }| j                  t        j                  |j                  «       ||«      z  }| j                  ||«      }|S )Nr   r�   r   )Úflattenr   r•   Ú	normalizer  r“   ÚmmrÒ  Úone_hotr³  rÑ  Úwherer½   r™  )	r3   r>   r’  r  Ú	cos_thetaÚpsiÚonehotrš  r™  s	            r7   r?   zAMSoftmaxLoss.forwardc  s²   € Ø—‘Ó!ˆÜ—‘×(Ñ(¨¯©¸!Ð(Ó<ˆÜŸ™×/Ñ/°À1Ð/ÓEˆÜ—H‘H˜]¨FÓ3ˆ	Ø˜$Ÿ+™+Ñ%ˆä—‘×&Ñ& v¨t¯©Ó?ˆØ—‘œeŸk™k¨&¯+©+«-¸¸iÓHÑHˆØ�y‰y˜ Ó(ˆàˆr8   )g      >@gš™™™™™Ù?rA   rF   s   @r7   rÏ  rÏ  Z  s   ø„ õ*ör8   rÏ  c                   óX   ‡ — e Zd Zdˆ fd„	Zdej
                  dej
                  fd„Zˆ xZS )Ú	TDNNLayerc                 óš  •— t         ‰| �  «        |dkD  r|j                  |dz
     n|j                  |   | _        |j                  |   | _        |j
                  |   | _        |j                  |   | _        t        j                  | j                  | j                  z  | j                  «      | _        t        j                  «       | _        y )Nr   r   )r$   r%   Útdnn_dimr'   r(   Útdnn_kernelr   Útdnn_dilationÚdilationr   r   ÚkernelÚReLUr1   r2   s      €r7   r%   zTDNNLayer.__init__r  s¡   ø€ Ü‰ÑÔØ<DÀqºL˜6Ÿ?™?¨8°a©<Ò8ÈfÏoÉoÐ^fÑNgˆÔØ"ŸO™O¨HÑ5ˆÔØ!×-Ñ-¨hÑ7ˆÔØ×,Ñ,¨XÑ6ˆŒä—i‘i × 0Ñ 0°4×3CÑ3CÑ CÀT×EVÑEVÓWˆŒÜŸ'™'›)ˆ�r8   r>   rª   c                 ó&  — t        «       rddlm} t        «       r+t        | j                  «      rt        j                  d«       |j                  dd«      }| j                  j                  j                  | j                  | j                  | j                  «      j                  dd«      }t        j                  j                  ||| j                  j                   | j"                  ¬«      }|j                  dd«      }| j%                  |«      }|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   rJ   )rä  )r   Úpeft.tuners.lorarè  rÇ   rå  ÚwarningsÚwarnr<   r  r®   r(   r   r'   r   r•   Úconv1dr!   rä  r1   )r3   r>   rè  r  s       r7   r?   zTDNNLayer.forward|  sØ   € ÜÔÝ2äÔÜ˜$Ÿ+™+ yÔ1Ü—‘ðOôð &×/Ñ/°°1Ó5ˆØ—‘×#Ñ#×(Ñ(¨×):Ñ):¸D×<LÑ<LÈd×N^ÑN^Ó_×iÑiÐjkÐmnÓoˆÜŸ™×,Ñ,¨]¸FÀDÇKÁK×DTÑDTÐ_c×_lÑ_lÐ,ÓmˆØ%×/Ñ/°°1Ó5ˆàŸ™¨Ó6ˆØÐr8   r@   )rB   rC   rD   r%   r“   r¾   r?   rE   rF   s   @r7   rß  rß  q  s#   ø„ õ$ð U§\¡\ð °e·l±l÷ r8   rß  zq
    Data2VecAudio 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 )ÚData2VecAudioForXVectorc                 ó  •— t         ‰| �  |«       t        |«      | _        |j                  dz   }|j
                  r0t        j                  t        j                  |«      |z  «      | _
        t        j                  |j                  |j                  d   «      | _        t        t!        |j                  «      «      D �cg c]  }t#        ||«      ‘Œ }}t        j$                  |«      | _        t        j                  |j                  d   dz  |j(                  «      | _        t        j                  |j(                  |j(                  «      | _        t/        |j(                  |j0                  «      | _        | j5                  «        y c c}w )Nr   r   r;   rJ   )r$   r%   re  r  rß   r¯  r   rl  r“   rW  r°  r   rT   rá  r²  r_   rU  rß  r^   ÚtdnnÚxvector_output_dimrh  r´  rÏ  r³  Ú	objectiverp  )r3   r4   r¶  rl   Útdnn_layersr6   s        €r7   r%   z Data2VecAudioForXVector.__init__—  s  ø€ Ü‰Ñ˜Ô ä0°Ó8ˆÔØ×-Ñ-°Ñ1ˆ
Ø×(Ò(Ü!#§¡¬e¯j©j¸Ó.DÀzÑ.QÓ!RˆDÔÜŸ™ 6×#5Ñ#5°v·±ÀqÑ7IÓJˆŒä5:¼3¸v¿¹Ó;OÓ5PÖQ°”y ¨Õ+ÐQˆÐQÜ—M‘M +Ó.ˆŒ	ä!#§¡¨6¯?©?¸2Ñ+>ÀÑ+BÀF×D]ÑD]Ó!^ˆÔÜŸ)™) F×$=Ñ$=¸v×?XÑ?XÓYˆŒä& v×'@Ñ'@À&×BSÑBSÓTˆŒà�‰Õùò Rs   Â>Fc                 óL   — | j                   j                  j                  «        yrr  r�  rs  s    r7   rt  z.Data2VecAudioForXVector.freeze_feature_encoderª  r‘  r8   c                 óP   — | j                   j                  «       D ]	  }d|_        Œ yr¹  rº  rq   s     r7   r»  z)Data2VecAudioForXVector.freeze_base_model±  r¼  r8   r   c                 óV   — d„ }| j                   j                  D ]  } |||d«      }Œ |S )z?
        Computes the output length of the TDNN layers
        c                 ó   — | |z
  |z  dz   S )Nr   rã   r'  s      r7   r)  zJData2VecAudioForXVector._get_tdnn_output_lengths.<locals>._conv_out_length¾  s   € ð ! ;Ñ.°6Ñ9¸AÑ=Ð=r8   r   )r4   râ  )r3   r   r)  r   s       r7   Ú_get_tdnn_output_lengthsz0Data2VecAudioForXVector._get_tdnn_output_lengths¹  s:   € ò
	>ð
  Ÿ;™;×2Ñ2ò 	LˆKÙ,¨]¸KÈÓK‰Mð	Lð Ðr8   Nrv   rŠ   r©   rà   rá   r’  rª   c                 óö  — |�|n| j                   j                  }| j                   j                  rdn|}| j                  |||||¬«      }| j                   j                  rr|t           }	t        j                  |	d¬«      }	t        j                  j                  | j                  d¬«      }
|	|
j                  ddd«      z  j                  d¬«      }	n|d   }	| j                  |	«      }	| j                  D ]
  } ||	«      }	Œ |€%|	j                  d¬«      }|	j!                  d¬«      }nÃ| j#                  |j                  d¬«      «      }| j%                  |«      }g }g }t'        |«      D ]U  \  }}|j)                  |	|d|…f   j                  d¬«      «       |j)                  |	|d|…f   j!                  d¬«      «       ŒW t        j                  |«      }t        j                  |«      }t        j*                  ||gd¬«      }| j-                  |«      }| j/                  |«      }d}|�| j1                  ||«      }|s||f|t        d z   }|�|f|z   S |S t3        ||||j4                  |j6                  ¬«      S )	r¾  NTr�  r   r�   r;   r   )r™  rš  Ú
embeddingsr>   rë   )r4   rá   r¯  r  r¦  r“   r¿  r   r•   r–   r°  r®   rR  r²  rð  rÀ  Ústdr+  rø  Ú	enumeraterY  Úcatrh  r´  rò  r   r>   rë   )r3   rv   rŠ   r©   rà   rá   r’  rŒ   rÚ   r>   rÁ  Ú
tdnn_layerÚmean_featuresÚstd_featuresÚfeat_extract_output_lengthsÚtdnn_output_lengthsrl   ÚlengthÚstatistic_poolingÚoutput_embeddingsrš  r™  r«  s                          r7   r?   zData2VecAudioForXVector.forwardÈ  s›  € ð0 &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆØ'+§{¡{×'IÒ'I™tÐOcÐà×%Ñ%ØØ)Ø/Ø!5Ø#ð &ó 
ˆð �;‰;×-Ò-Ø#Ô$AÑBˆMÜ!ŸK™K¨¸1Ô=ˆMÜŸ=™=×0Ñ0°×1CÑ1CÈÐ0ÓLˆLØ*¨\×->Ñ->¸rÀ1ÀaÓ-HÑH×MÑMÐRSÐMÓT‰Mà# A™JˆMàŸ™ }Ó5ˆàŸ)™)ò 	6ˆJÙ& }Ó5‰Mð	6ð Ð!Ø)×.Ñ.°1Ð.Ó5ˆMØ(×,Ñ,°Ð,Ó3‰Là*.×*OÑ*OÐP^×PbÑPbÐghÐPbÓPiÓ*jÐ'Ø"&×"?Ñ"?Ð@[Ó"\ÐØˆMØˆLÜ&Ð':Ó;ò J‘	��6Ø×$Ñ$ ]°1°g°v°g°:Ñ%>×%CÑ%CÈÐ%CÓ%JÔKØ×#Ñ# M°!°W°f°W°*Ñ$=×$AÑ$AÀaÐ$AÓ$HÕIðJô "ŸK™K¨Ó6ˆMÜ Ÿ;™; |Ó4ˆLÜ!ŸI™I }°lÐ&CÈÔLÐà ×2Ñ2Ð3DÓEÐØ—‘Ð!2Ó3ˆàˆØÐØ—>‘> &¨&Ó1ˆDáØÐ/Ð0°7Ô;XÐ;YÐ3ZÑZˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEäØØØ(Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r8   r…  )rB   rC   rD   r%   rt  r»  r“   rB  r»   rø  r   r¾   r½   r¿   r   r?   rE   rF   s   @r7   rî  rî  ‘  sÈ   ø„ ôò&Cò(ð°e×6FÑ6FÈÑ6Ló ð ð /3Ø)-Ø,0Ø#'Ø&*ñP
à—l‘l TÑ)ðP
ð Ÿ™ tÑ+ðP
ð   $™;ð	P
ð
 # T™kðP
ð ˜D‘[ðP
ð —‘˜tÑ#ðP
ð 
�Ñ	òP
ó ôP
r8   rî  )rÇ  r‰  r­  rî  re  r  rg  rN   )Kr  rê  Úcollections.abcr   Únumpyr  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   Úprocessing_utilsr   Úutilsr   r   r   Úconfiguration_data2vec_audior   r   ÚModulerH   rP   r[   rf   rz   r¾   r¼   rš   rœ   rÁ   rÐ   rÜ   rü   r  r  r¿   r»   rB  Úndarrayrc  rƒ  re  r¦  r‰  r­  rÇ  rÏ  rß  rî  Ú__all__rã   r8   r7   ú<module>r     s  ðó* Û Ý $ã Û Ý Ý %å &Ý !Ý @Ý 7Ý 6Ý BÝ 9÷÷ ÷ GÝ &ß JÑ JÝ =ôÐ7ô ô6˜BŸI™Iô ô r§y¡yô ô6¨2¯9©9ô ô "§)¡)ô ô:1 R§Y¡Yô 1ð* !Øñ%Ø�I‰Ið%à�<‰<ð%ð 
�‰ð%ð �<‰<ð	%ð
 —L‘L 4Ñ'ð%ð �T‰\ð%ð ð%ð Ð'Ñ(ó%ô8R/˜RŸY™Yô R/ôj˜rŸy™yô ô0!Ð :ô !ôHE
˜2Ÿ9™9ô E
ôP §	¡	ô ô$˜2Ÿ9™9ô ð> ôB ?ó Bó ðBðR /3ØñtØ��c�‰?ðtàðtð ðtð ×$Ñ$ tÑ+ð	tð
 ðtð ‡Z�Zótðn  7Ð ð ô@
Ð5ó @
ó ð@
ðF !"Ð ñ ðôô
i
Ð6ó i
óð
i
ñX ðôôe
Ð-Ió e
óðe
ðP ô[
Ð/Kó [
ó ð[
ô|�B—I‘Iô ô.�—	‘	ô ñ@ ðôô
C
Ð:ó C
óð
C
òL�r8   