§
    ‚ŠtjuY  ã                   ó¾  — d dl Z d dlZd dlmZ d dlmc 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 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mZmZm Z  ddl!m"Z"  ej#        e$¦  «        Z% G d„ de¦  «        Z& G d„ de¦  «        Z' G d„ dej(        ¦  «        Z) G d„ de¦  «        Z* G d„ de¦  «        Z+ G d„ de¦  «        Z, G d„ dej(        ¦  «        Z- G d„ dej(        ¦  «        Z. G d„ dej(        ¦  «        Z/ G d „ d!ee ¦  «        Z0eZ1 G d"„ d#e¦  «        Z2 G d$„ d%e¦  «        Z3 G d&„ d'e¦  «        Z4 G d(„ d)e¦  «        Z5 G d*„ d+e¦  «        Z6g d,¢Z7dS )-é    Né   )Úinitialization)Úis_deepspeed_zero3_enabled)Úis_fsdp_managed_module)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚWav2Vec2BaseModelOutput)ÚPreTrainedModel)Úloggingé   )	ÚWav2Vec2FeatureProjectionÚWav2Vec2FeedForwardÚ#Wav2Vec2ForAudioFrameClassificationÚWav2Vec2ForCTCÚ!Wav2Vec2ForSequenceClassificationÚWav2Vec2ForXVectorÚWav2Vec2ModelÚWav2Vec2PositionalConvEmbeddingÚWav2Vec2PreTrainedModelé   )ÚWavLMConfigc                   ó   — e Zd ZdS )ÚWavLMPositionalConvEmbeddingN©Ú__name__Ú
__module__Ú__qualname__© ó    úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/wavlm/modular_wavlm.pyr   r      ó   € € € € € Ø€Dr   r   c                   ó   — e Zd ZdS )ÚWavLMFeatureProjectionNr   r   r   r    r#   r#   #   r!   r   r#   c                   ó”  ‡ — e Zd ZdZ	 	 	 	 ddededeez  d	ed
edefˆ fd„Z	 	 	 	 ddej	        dej	        dz  dej	        dz  dede
ej	        ej	        dz  e
ej	                 dz  f         f
d„Zdej        dej        ej        z  dej        dede
ej        ej        f         f
d„Zdededej        fd„Zdej        dej        fd„Zˆ xZS )ÚWavLMAttentionz=Multi-headed attention from 'Attention Is All You Need' paperç        é@  é   TÚ	embed_dimÚ	num_headsÚdropoutÚnum_bucketsÚmax_distanceÚhas_relative_position_biasc                 óà  •— t          ¦   «                              ¦   «          || _        || _        || _        ||z  | _        | j        |z  | j        k    rt          d| j        › d|› d�¦  «        ‚| j        dz  | _        t          j	        ||¦  «        | _
        t          j	        ||¦  «        | _        t          j	        ||¦  «        | _        t          j	        ||¦  «        | _        || _        || _        t          j        t#          j        d| j        dd¦  «        ¦  «        | _        t          j	        | j        d¦  «        | _        |r&t          j        | j        | j        ¦  «        | _        d S d S )Nz;embed_dim must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).g      à¿r   é   )ÚsuperÚ__init__r)   r*   r+   Úhead_dimÚ
ValueErrorÚscalingÚnnÚLinearÚk_projÚv_projÚq_projÚout_projr,   r-   Ú	ParameterÚtorchÚonesÚgru_rel_pos_constÚgru_rel_pos_linearÚ	EmbeddingÚrel_attn_embed)Úselfr)   r*   r+   r,   r-   r.   Ú	__class__s          €r    r2   zWavLMAttention.__init__*   sa  ø€ õ 	‰Œ×ÒÑÔÐØ"ˆŒØ"ˆŒØˆŒØ! YÑ.ˆŒàŒM˜IÑ%¨$¬.Ò8Ð8Ýð3ÈdÌnð 3ð 3Ø%.ð3ð 3ð 3ñô ð ð ”} dÑ*ˆŒå”i 	¨9Ñ5Ô5ˆŒÝ”i 	¨9Ñ5Ô5ˆŒÝ”i 	¨9Ñ5Ô5ˆŒÝœ	 )¨YÑ7Ô7ˆŒà&ˆÔØ(ˆÔå!#¤­e¬j¸¸D¼NÈAÈqÑ.QÔ.QÑ!RÔ!RˆÔÝ"$¤)¨D¬M¸1Ñ"=Ô"=ˆÔà%ð 	QÝ"$¤,¨tÔ/?ÀÄÑ"PÔ"PˆDÔÐÐð	Qð 	Qr   NFr   Úhidden_statesÚattention_maskÚposition_biasÚoutput_attentionsÚreturnc                 óF  — |                      ¦   «         \  }}}|€^|                      ||¦  «        }|                     d¦  «                             |ddd¦  «                             || j        z  ||¦  «        }|                     |j        dd…         | j        dfz   ¦  «        }	|	                     dddd¦  «        }	|                      |	¦  «        }
|
                     |	j        dd…         dz   ¦  «         	                    d¦  «        }
t          j        |
¦  «                             dd¬¦  «        \  }}||| j        z  d	z
  z  d
z   }|                     || j        z  dd¦  «        |z  }|                     d||f¦  «        }|                      ||||¦  «        \  }}|||fS )z'Attention layer with relative attentionNr   r   éÿÿÿÿr   r   )r   é   ©Údimç      ð?g       @)ÚsizeÚcompute_biasÚ	unsqueezeÚrepeatÚviewr*   ÚshapeÚpermuter@   Úsumr=   ÚsigmoidÚchunkr?   Útorch_multi_head_self_attention)rC   rE   rF   rG   rH   ÚindexÚbszÚtgt_lenÚ_Úgated_hidden_statesÚrelative_position_projÚgate_aÚgate_bÚgate_outputÚgated_position_biasÚattn_outputÚattn_weightss                    r    ÚforwardzWavLMAttention.forwardN   sÐ  € ð (×,Ò,Ñ.Ô.‰ˆˆW�að Ð Ø ×-Ò-¨g°wÑ?Ô?ˆMà×'Ò'¨Ñ*Ô*×1Ò1°#°q¸!¸QÑ?Ô?×DÒDÀSÈ4Ì>ÑEYÐ[bÐdkÑlÔlð ð ,×0Ò0°Ô1DÀSÀbÀSÔ1IÈTÌ^Ð]_ÐL`Ñ1`ÑaÔaÐØ1×9Ò9¸!¸QÀÀ1ÑEÔEÐð "&×!8Ò!8Ð9LÑ!MÔ!MÐØ!7×!<Ò!<Ð=PÔ=VÐWZÐXZÐWZÔ=[Ð^dÑ=dÑ!eÔ!e×!iÒ!iÐjlÑ!mÔ!mÐõ œÐ'=Ñ>Ô>×DÒDÀQÈBÐDÑOÔO‰ˆ�Ø ¨Ô)?Ñ ?À#Ñ EÑFÈÑLˆð *×.Ò.¨s°T´^Ñ/CÀRÈÑKÔKÈmÑ[ÐØ1×6Ò6¸¸GÀWÐ7MÑNÔNÐà$(×$HÒ$HØ˜>Ð+>Ð@Qñ%
ô %
Ñ!ˆ�\ð ˜L¨-Ð7Ð7r   rd   c                 ó¦  — |                      dd¦  «        x}x}}|�|                     d¦  «        nd}dx}	}
d}t          j        |||| j        | j        t          j        dg¦  «        t          j        | j	        j
        | j        j
        | j        j
        f¦  «        |	|
|| j        | j        j        | j        j
        | j        |||d| j	        j        | j        j        | j        j        ¬¦  «        \  }}|                      dd¦  «        }|�E|dd…df                              |j        dd…         | j        fz   |j        dd…         z   ¦  «        }||fS )zCsimple wrapper around torch's multi_head_attention_forward functionr   r   NFT)Úuse_separate_proj_weightÚq_proj_weightÚk_proj_weightÚv_proj_weight)Ú	transposeÚneÚFÚmulti_head_attention_forwardr)   r*   r=   ÚemptyÚcatr:   Úbiasr8   r9   r+   r;   ÚweightÚtrainingÚbroadcast_torU   )rC   rE   rF   rd   rH   ÚqueryÚkeyÚvalueÚkey_padding_maskÚbias_kÚbias_vÚadd_zero_attnre   rf   s                 r    rZ   z.WavLMAttention.torch_multi_head_self_attentionw   sx  € ð ,×5Ò5°a¸Ñ;Ô;Ð;ˆÐ;��eØ3AÐ3M˜>×,Ò,¨QÑ/Ô/Ð/ÐSWÐð Ðˆ�Øˆõ %&Ô$BØØØØŒNØŒNÝŒK˜˜ÑÔÝŒI�t”{Ô'¨¬Ô)9¸4¼;Ô;KÐLÑMÔMØØØØŒLØŒMÔ ØŒMÔØŒMØØØØ%)Øœ+Ô,Øœ+Ô,Øœ+Ô,ð+%
ñ %
ô %
Ñ!ˆ�\ð2 "×+Ò+¨A¨qÑ1Ô1ˆàÐ#ð (¨¨¨¨4¨Ô0×=Ò=ØÔ" 2 A 2Ô&¨$¬.Ð):Ñ:¸\Ô=OÐPQÐPRÐPRÔ=SÑSñô ˆLð ˜LÐ(Ð(r   Úquery_lengthÚ
key_lengthc                 ó‚  — t          j        |t           j        ¬¦  «        d d …d f         }t          j        |t           j        ¬¦  «        d d d …f         }||z
  }|                      |¦  «        }|                     | j        j        j        ¦  «        }|                      |¦  «        }|                     g d¢¦  «        }|S )N)Údtype)r   r   r   )	r=   ÚarangeÚlongÚ_relative_positions_bucketÚtorB   rt   ÚdevicerV   )rC   r~   r   Úcontext_positionÚmemory_positionÚrelative_positionÚrelative_position_bucketÚvaluess           r    rQ   zWavLMAttention.compute_bias®   sµ   € Ý œ<¨½E¼JÐGÑGÔGÈÈÈÈ4ÈÔPÐÝœ, z½¼ÐDÑDÔDÀTÈ1È1È1ÀWÔMˆØ+Ð.>Ñ>ÐØ#'×#BÒ#BÐCTÑ#UÔ#UÐ Ø#;×#>Ò#>¸tÔ?RÔ?YÔ?`Ñ#aÔ#aÐ Ø×$Ò$Ð%=Ñ>Ô>ˆØ—’ 	 	 	Ñ*Ô*ˆØˆr   Úrelative_positionsc                 ó  — | j         dz  }|dk                         t          j        ¦  «        |z  }t          j        |¦  «        }|dz  }||k     }t          j        |                     ¦   «         |z  ¦  «        }|t          j        | j        |z  ¦  «        z  }|||z
  z  }||z                        t          j        ¦  «        }t          j	        |t          j
        ||dz
  ¦  «        ¦  «        }|t          j        |||¦  «        z  }|S )Nr   r   r   )r,   r…   r=   rƒ   ÚabsÚlogÚfloatÚmathr-   ÚminÚ	full_likeÚwhere)rC   rŒ   r,   Úrelative_bucketsÚ	max_exactÚis_smallÚrelative_positions_if_largeÚrelative_position_if_larges           r    r„   z)WavLMAttention._relative_positions_bucket¸   s  € ØÔ&¨!Ñ+ˆà.°Ò2×6Ò6µu´zÑBÔBÀ[ÑPÐÝ"œYÐ'9Ñ:Ô:Ðà 1Ñ$ˆ	Ø%¨	Ò1ˆå&+¤iÐ0B×0HÒ0HÑ0JÔ0JÈYÑ0VÑ&WÔ&WÐ#Ø&AÅDÄHÈTÔM^ÐajÑMjÑDkÔDkÑ&kÐ#Ø&AÀ[ÐS\ÑE\Ñ&]Ð#Ø&/Ð2MÑ&M×%QÒ%QÕRWÔR\Ñ%]Ô%]Ð"Ý%*¤YØ&­¬Ð8RÐT_ÐbcÑTcÑ(dÔ(dñ&
ô &
Ð"ð 	�EœK¨Ð2DÐF`ÑaÔaÑaÐØÐr   )r&   r'   r(   T©NNFr   )r   r   r   Ú__doc__Úintr�   Úboolr2   r=   ÚTensorÚtuplerg   ÚFloatTensorÚ
LongTensorÚ
BoolTensorrZ   rQ   r„   Ú__classcell__©rD   s   @r    r%   r%   '   sæ  ø€ € € € € ØGÐGð  #ØØØ+/ð"Qð "Qàð"Qð ð"Qð ˜‘ð	"Qð
 ð"Qð ð"Qð %)ð"Qð "Qð "Qð "Qð "Qð "QðN /3Ø-1Ø"'Øð'8ð '8à”|ð'8ð œ tÑ+ð'8ð ”| dÑ*ð	'8ð
  ð'8ð 
ˆuŒ|˜Uœ\¨DÑ0°%¸¼Ô2EÈÑ2LÐLÔ	Mð'8ð '8ð '8ð '8ðR5)àÔ(ð5)ð Ô(¨5Ô+;Ñ;ð5)ð #Ô.ð	5)ð
  ð5)ð 
ˆuÔ  %Ô"3Ð3Ô	4ð5)ð 5)ð 5)ð 5)ðn¨ð ¸#ð À%ÔBSð ð ð ð ð ¸UÔ=Nð  ÐSXÔSdð  ð  ð  ð  ð  ð  ð  ð  r   r%   c                   ó   — e Zd ZdS )ÚWavLMFeedForwardNr   r   r   r    r¦   r¦   Í   r!   r   r¦   c                   ó2   ‡ — e Zd Zd	dedefˆ fd„Zd
d„Zˆ xZS )ÚWavLMEncoderLayerTÚconfigr.   c                 ó¦  •— t          ¦   «                              ¦   «          t          |j        |j        |j        |j        |j        |¬¦  «        | _        t          j
        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t!          |¦  «        | _        t          j        |j        |j        ¬¦  «        | _        d S ©N)r)   r*   r+   r,   r-   r.   ©Úeps©r1   r2   r%   Úhidden_sizeÚnum_attention_headsÚattention_dropoutr,   Úmax_bucket_distanceÚ	attentionr6   ÚDropoutÚhidden_dropoutr+   Ú	LayerNormÚlayer_norm_epsÚ
layer_normr¦   Úfeed_forwardÚfinal_layer_norm©rC   r©   r.   rD   s      €r    r2   zWavLMEncoderLayer.__init__Ò   óµ   ø€ Ý‰Œ×ÒÑÔÐÝ'ØÔ(ØÔ0ØÔ,ØÔ*ØÔ3Ø'Að
ñ 
ô 
ˆŒõ ”z &Ô"7Ñ8Ô8ˆŒÝœ, vÔ'9¸vÔ?TÐUÑUÔUˆŒÝ,¨VÑ4Ô4ˆÔÝ "¤¨VÔ-?ÀVÔEZÐ [Ñ [Ô [ˆÔÐÐr   NFr   c                 ó  — |}|                       |||||¬¦  «        \  }}}|                      |¦  «        }||z   }|                      |¦  «        }||                      |¦  «        z   }|                      |¦  «        }||f}|r||fz  }|S )N©rF   rG   rH   r[   )r³   r+   r¸   r¹   rº   )	rC   rE   rF   rG   rH   r[   Úattn_residualrf   Úoutputss	            r    rg   zWavLMEncoderLayer.forwardá   s²   € Ø%ˆØ59·^²^ØØ)Ø'Ø/Øð 6Dñ 6
ô 6
Ñ2ˆ�| ]ð Ÿš ]Ñ3Ô3ˆØ%¨Ñ5ˆàŸš¨Ñ6Ô6ˆà%¨×(9Ò(9¸-Ñ(HÔ(HÑHˆØ×-Ò-¨mÑ<Ô<ˆà  -Ð0ˆàð 	'Ø˜�Ñ&ˆGàˆr   ©Trš   ©r   r   r   r   r�   r2   rg   r£   r¤   s   @r    r¨   r¨   Ñ   sm   ø€ € € € € ð\ð \˜{ð \Èð \ð \ð \ð \ð \ð \ðð ð ð ð ð ð ð r   r¨   c                   ó2   ‡ — e Zd Zddedefˆ fd„Zd	d„Zˆ xZS )
Ú WavLMEncoderLayerStableLayerNormTr©   r.   c                 ó¦  •— t          ¦   «                              ¦   «          t          |j        |j        |j        |j        |j        |¬¦  «        | _        t          j
        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t!          |¦  «        | _        t          j        |j        |j        ¬¦  «        | _        d S r«   r®   r»   s      €r    r2   z)WavLMEncoderLayerStableLayerNorm.__init__û   r¼   r   NFc                 ó  — |}|                       |¦  «        }|                      ||||¬¦  «        \  }}}|                      |¦  «        }||z   }||                      |                      |¦  «        ¦  «        z   }||f}|r||fz  }|S )N)rF   rG   rH   )r¸   r³   r+   r¹   rº   )rC   rE   rF   rG   rH   r¿   rf   rÀ   s           r    rg   z(WavLMEncoderLayerStableLayerNorm.forward
  s«   € Ø%ˆØŸš¨Ñ6Ô6ˆØ59·^²^ØØ)Ø'Ø/ð	 6Dñ 6
ô 6
Ñ2ˆ�| ]ð Ÿš ]Ñ3Ô3ˆØ%¨Ñ5ˆØ%¨×(9Ò(9¸$×:OÒ:OÐP]Ñ:^Ô:^Ñ(_Ô(_Ñ_ˆà  -Ð0ˆàð 	'Ø˜�Ñ&ˆGàˆr   rÁ   )NNFrÂ   r¤   s   @r    rÄ   rÄ   ú   sm   ø€ € € € € ð\ð \˜{ð \Èð \ð \ð \ð \ð \ð \ðð ð ð ð ð ð ð r   rÄ   c                   ó.   ‡ — e Zd Zˆ fd„Z	 	 	 	 dd„Zˆ xZS )ÚWavLMEncoderc                 ó‚  •‡— t          ¦   «                              ¦   «          ‰| _        t          ‰¦  «        | _        t          j        ‰j        ‰j        ¬¦  «        | _	        t          j
        ‰j        ¦  «        | _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nr¬   c                 ó:   •— g | ]}t          ‰|d k    ¬¦  «        ‘ŒS ©r   )r.   )r¨   ©Ú.0Úir©   s     €r    ú
<listcomp>z)WavLMEncoder.__init__.<locals>.<listcomp>'  s,   ø€ ÐuÐuÐuÐPQÕ˜vÀ1ÈÂ6ÐKÑKÔKÐuÐuÐur   F©r1   r2   r©   r   Úpos_conv_embedr6   r¶   r¯   r·   r¸   r´   rµ   r+   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayersÚgradient_checkpointing©rC   r©   rD   s    `€r    r2   zWavLMEncoder.__init__   s¨   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ:¸6ÑBÔBˆÔÝœ, vÔ'9¸vÔ?TÐUÑUÔUˆŒÝ”z &Ô"7Ñ8Ô8ˆŒÝ”mØuÐuÐuÐuÕUZÐ[aÔ[sÑUtÔUtÐuÑuÔuñ
ô 
ˆŒð ',ˆÔ#Ð#Ð#r   NFTc                 óÖ  — |rdnd }|rdnd }|�;|                      d¦  «                             dd|j        d         ¦  «        }d|| <   |                      |¦  «        }	||	z   }|                      |¦  «        }|                      |¦  «        }t          ¦   «         pt          | ¦  «        }
d }t          | j	        ¦  «        D ]q\  }}|r||fz   }t          j        g ¦  «        }| j        o|dk    o|| j        j        k     }|r|
r ||||||¬¦  «        }|d d…         \  }}|rd}|r||d         fz   }Œr|r||fz   }|st          d„ |||fD ¦   «         ¦  «        S t!          |||¬	¦  «        S )
Nr   rK   r   r   r   r¾   ©NNNc              3   ó   K  — | ]}|®|V — Œ	d S ©Nr   ©rÍ   Úvs     r    ú	<genexpr>z'WavLMEncoder.forward.<locals>.<genexpr>a  ó(   è è € ÐmÐm˜qÐ_`Ð_l˜Ð_lÐ_lÐ_lÐ_lÐmÐmr   ©Úlast_hidden_staterE   Ú
attentions)rR   rS   rU   rÑ   r¸   r+   r   r   Ú	enumeraterÕ   r=   Úrandru   r©   Ú	layerdroprŸ   r   ©rC   rE   rF   rH   Úoutput_hidden_statesÚreturn_dictÚall_hidden_statesÚall_self_attentionsÚexpand_attention_maskÚposition_embeddingsÚsynced_gpusrG   rÎ   ÚlayerÚdropout_probabilityÚskip_the_layerÚlayer_outputss                    r    rg   zWavLMEncoder.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à"×1Ò1°-Ñ@Ô@ÐØ%Ð(;Ñ;ˆØŸš¨Ñ6Ô6ˆØŸš ]Ñ3Ô3ˆå0Ñ2Ô2ÐRÕ6LÈTÑ6RÔ6RˆØˆå! $¤+Ñ.Ô.ð 	Pð 	P‰HˆAˆuØ#ð IØ$5¸Ð8HÑ$HÐ!õ #(¤*¨R¡.¤.Ðà!œ]Ðf¨q°1ªuÐfÐ:MÐPTÔP[ÔPeÒ:eˆNØ!ð 
A [ð 
Aà % Ø!Ø#1Ø"/Ø&7Øð!ñ !ô !�ð 0=¸R¸a¸RÔ/@Ñ,�˜}àð 3Ø 2�à ð PØ&9¸]È1Ô=MÐ<OÑ&OÐ#øàð 	EØ 1°]Ð4DÑ DÐàð 	nÝÐmÐm ]Ð4EÐGZÐ$[ÐmÑmÔmÑmÔmÐmÝØ+Ø+Ø*ð
ñ 
ô 
ð 	
r   ©NFFT©r   r   r   r2   rg   r£   r¤   s   @r    rÈ   rÈ     sZ   ø€ € € € € ð	,ð 	,ð 	,ð 	,ð 	,ð ØØ"Øð;
ð ;
ð ;
ð ;
ð ;
ð ;
ð ;
ð ;
r   rÈ   c                   ó.   ‡ — e Zd Zˆ fd„Z	 	 	 	 dd„Zˆ xZS )ÚWavLMEncoderStableLayerNormc                 ó‚  •‡— t          ¦   «                              ¦   «          ‰| _        t          ‰¦  «        | _        t          j        ‰j        ‰j        ¬¦  «        | _	        t          j
        ‰j        ¦  «        | _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nr¬   c                 ó:   •— g | ]}t          ‰|d k    ¬¦  «        ‘ŒS rË   )rÄ   rÌ   s     €r    rÏ   z8WavLMEncoderStableLayerNorm.__init__.<locals>.<listcomp>q  s=   ø€ ð ð ð àõ 1°ÐUVÐZ[ÒU[Ð]Ñ]Ô]ðð ð r   FrÐ   r×   s    `€r    r2   z$WavLMEncoderStableLayerNorm.__init__j  sµ   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ:¸6ÑBÔBˆÔÝœ, vÔ'9¸vÔ?TÐUÑUÔUˆŒÝ”z &Ô"7Ñ8Ô8ˆŒÝ”mðð ð ð å˜vÔ7Ñ8Ô8ðñ ô ñ
ô 
ˆŒð ',ˆÔ#Ð#Ð#r   NFTc                 óÔ  — |rdnd }|rdnd }|�;|                      d¦  «                             dd|j        d         ¦  «        }d|| <   |                      |¦  «        }	||	z   }|                      |¦  «        }t          ¦   «         pt          | ¦  «        }
d }t          | j        ¦  «        D ]p\  }}|r||fz   }t          j
        g ¦  «        }| j        o|dk    o|| j        j        k     }|r|
r |||||¬¦  «        }|d d…         \  }}|rd}|r||d         fz   }Œq|                      |¦  «        }|r||fz   }|st          d„ |||fD ¦   «         ¦  «        S t!          |||¬	¦  «        S )
Nr   rK   r   r   r   )rF   rH   rG   rÙ   c              3   ó   K  — | ]}|®|V — Œ	d S rÛ   r   rÜ   s     r    rÞ   z6WavLMEncoderStableLayerNorm.forward.<locals>.<genexpr>®  rß   r   rà   )rR   rS   rU   rÑ   r+   r   r   rã   rÕ   r=   rä   ru   r©   rå   r¸   rŸ   r   ræ   s                    r    rg   z#WavLMEncoderStableLayerNorm.forwardx  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à"×1Ò1°-Ñ@Ô@ÐØ%Ð(;Ñ;ˆØŸš ]Ñ3Ô3ˆå0Ñ2Ô2ÐRÕ6LÈTÑ6RÔ6RˆØˆå! $¤+Ñ.Ô.ð 	Pð 	P‰HˆAˆuØ#ð IØ$5¸Ð8HÑ$HÐ!õ #(¤*¨R¡.¤.Ðà!œ]Ðf¨q°1ªuÐfÐ:MÐPTÔP[ÔPeÒ:eˆNØ!ð 	A [ð 	Að !& Ø!Ø#1Ø&7Ø"/ð	!ñ !ô !�ð 0=¸R¸a¸RÔ/@Ñ,�˜}àð 3Ø 2�à ð PØ&9¸]È1Ô=MÐ<OÑ&OÐ#øàŸš¨Ñ6Ô6ˆàð 	EØ 1°]Ð4DÑ DÐàð 	nÝÐmÐm ]Ð4EÐGZÐ$[ÐmÑmÔmÑmÔmÐmÝØ+Ð;LÐYlð
ñ 
ô 
ð 	
r   rò   ró   r¤   s   @r    rõ   rõ   i  sZ   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð" ØØ"Øð9
ð 9
ð 9
ð 9
ð 9
ð 9
ð 9
ð 9
r   rõ   c                   ó>   ‡ — e Zd ZdZˆ fd„Zed„ ¦   «         Zd„ Zˆ xZS )ÚWavLMGumbelVectorQuantizerz°
    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 concatenation.r   rK   r   )r1   r2   Únum_codevector_groupsÚ
num_groupsÚnum_codevectors_per_groupÚnum_varsÚcodevector_dimr4   r6   r<   r=   r    Úcodevectorsr7   Úconv_dimÚweight_projÚtemperaturer×   s     €r    r2   z#WavLMGumbelVectorQuantizer.__init__º  sï   ø€ Ý‰Œ×ÒÑÔÐØ Ô6ˆŒØÔ8ˆŒàÔ  4¤?Ñ2°aÒ7Ð7Ýð%¨&Ô*?ð %ð %Ø6:´oð%ð %ð %ñô ð õ œ<ÝÔ˜a ¤°4´=Ñ!@À&ÔBWÐ[_Ô[jÑBjÑkÔkñ
ô 
ˆÔõ œ9 V¤_°RÔ%8¸$¼/ÈDÌMÑ:YÑZÔZˆÔð ˆÔÐÐr   c                 óÎ   — |                       d¬¦  «        }t          j        t          j        t          j        ||¦  «        d¬¦  «         ¦  «                             ¦   «         }|S )Nr   rM   rK   )Úmeanr=   ÚexprW   Úxlogy)ÚprobsÚmarginal_probsÚ
perplexitys      r    Ú_compute_perplexityz.WavLMGumbelVectorQuantizer._compute_perplexityÏ  sU   € àŸš¨˜Ñ*Ô*ˆÝ”Y¥¤	­%¬+°nÀnÑ*UÔ*UÐ[]Ð ^Ñ ^Ô ^Ð^Ñ_Ô_×cÒcÑeÔeˆ
ØÐr   c                 óú  — |j         \  }}}|                      |¦  «        }|                     ||z  | j        z  d¦  «        }| j        r©t
          j                             |                     ¦   «         | j	        d¬¦  «        }| 
                    |¦  «        }t          j        |                     ||z  | j        d¦  «                             ¦   «         d¬¦  «        }|                      |¦  «        }n‚|                     d¬¦  «        } |j        |j         Ž                      d|                     dd¦  «        d¦  «        }|                     ||z  | j        d¦  «        }|                      |¦  «        }|                     ||z  d¦  «        }|                     d¦  «        | j        z  }	|	                     ||z  | j        | j        d¦  «        }
|
                     d¦  «                             ||d¦  «        }
|
|fS )NrK   T)ÚtauÚhardrM   r   rO   éþÿÿÿ)rU   r  rT   rþ   ru   r6   Ú
functionalÚgumbel_softmaxr�   r  Útype_asr=   Úsoftmaxr  ÚargmaxÚ	new_zerosÚscatter_rR   r  r   rW   )rC   rE   Ú
batch_sizeÚsequence_lengthr¯   Úcodevector_probsÚcodevector_soft_distr  Úcodevector_idxÚcodevectors_per_groupr  s              r    rg   z"WavLMGumbelVectorQuantizer.forwardÕ  s  € Ø3@Ô3FÑ0ˆ
�O [ð ×(Ò(¨Ñ7Ô7ˆØ%×*Ò*¨:¸Ñ+GÈ$Ì/Ñ+YÐ[]Ñ^Ô^ˆàŒ=ð 	Då!œ}×;Ò;¸M×<OÒ<OÑ<QÔ<QÐW[ÔWgÐnrÐ;ÑsÔsÐØ/×7Ò7¸ÑFÔFÐõ $)¤=Ø×"Ò" :°Ñ#?ÀÄÐRTÑUÔU×[Ò[Ñ]Ô]Ðceð$ñ $ô $Ð ð ×1Ò1Ð2FÑGÔGˆJˆJð +×1Ò1°bÐ1Ñ9Ô9ˆNØ6˜}Ô6¸Ô8KÐL×UÒUØ�N×'Ò'¨¨AÑ.Ô.°ñ ô  Ðð  0×4Ò4°ZÀ/Ñ5QÐSWÔSbÐdfÑgÔgÐà×1Ò1Ð2BÑCÔCˆ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Ð&Ð&r   )	r   r   r   r›   r2   Ústaticmethodr  rg   r£   r¤   s   @r    rû   rû   ´  sl   ø€ € € € € ðð ð
ð ð ð ð ð* ðð ñ „\ðð
"'ð "'ð "'ð "'ð "'ð "'ð "'r   rû   c                   óx   — e Zd ZU eed<   dZdZdZdZdZ	dZ
dZ ej        ¦   «         d„ ¦   «         Zd„ Zd	„ Zd
„ ZdS )ÚWavLMPreTrainedModelr©   ÚwavlmÚinput_valuesÚaudioTFc           
      ó2  — t          j        | |¦  «         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          |t,          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_weightsÚ
isinstancerû   ÚinitÚnormal_r  rt   Úzeros_rs   Úuniform_r  r   Úconvr‘   ÚsqrtÚkernel_sizeÚin_channelsÚ	constant_r#   Ú
projectionÚin_featuresr6   ÚConv1dÚkaiming_normal_Úgroups)rC   ÚmoduleÚks      r    r)  z"WavLMPreTrainedModel._init_weights  sñ  € õ 	Ô% d¨FÑ3Ô3Ð3å�fÕ8Ñ9Ô9ð 	6ÝŒL˜Ô+Ô2¸À!ÐDÑDÔDÐDÝŒK˜Ô*Ô/Ñ0Ô0Ð0ÝŒM˜&Ô,Ñ-Ô-Ð-Ð-Ð-Ý˜Õ <Ñ=Ô=ð 	6ÝŒLØ”Ô"ØØ�œ	 ! v¤{Ô'>¸qÔ'AÀFÄKÔD[Ñ'[Ñ"\Ñ]Ô]Ñ]ðñ ô ð õ
 ŒN˜6œ;Ô+¨QÑ/Ô/Ð/Ð/Ð/Ý˜Õ 6Ñ7Ô7ð 		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ð 'Ð&r   c                 ó    — t          d¦  «        ‚©NzNot needed for WavLM©ÚAttributeError©rC   s    r    Ú_get_adaptersz"WavLMPreTrainedModel._get_adapters  ó   € ÝÐ3Ñ4Ô4Ð4r   c                 ó    — t          d¦  «        ‚r<  r=  r?  s    r    Úinit_adapter_layersz(WavLMPreTrainedModel.init_adapter_layers"  rA  r   c                 ó    — t          d¦  «        ‚r<  r=  r?  s    r    Úload_adapterz!WavLMPreTrainedModel.load_adapter%  rA  r   N)r   r   r   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnr=   Úno_gradr)  r@  rC  rE  r   r   r    r!  r!  ú  s˜   € € € € € € ØÐÐÑØÐØ$€OØÐØ&*Ð#Ø ÐØ€NØÐà€U„]�_„_ð6ð 6ñ „_ð6ð45ð 5ð 5ð5ð 5ð 5ð5ð 5ð 5ð 5ð 5r   r!  c                   ó   — e Zd ZdS )Ú
WavLMModelNr   r   r   r    rP  rP  ,  r!   r   rP  c                   ó   — e Zd ZdS )ÚWavLMForCTCNr   r   r   r    rR  rR  0  r!   r   rR  c                   ó   — e Zd ZdS )ÚWavLMForSequenceClassificationNr   r   r   r    rT  rT  4  r!   r   rT  c                   ó   — e Zd ZdS )Ú WavLMForAudioFrameClassificationNr   r   r   r    rV  rV  8  r!   r   rV  c                   ó   — e Zd ZdS )ÚWavLMForXVectorNr   r   r   r    rX  rX  <  r!   r   rX  )rV  rR  rT  rX  rP  r!  )8r‘   r=   Útorch.nnr6   Útorch.nn.functionalr  ro   Ú r   r+  Úintegrations.deepspeedr   Úintegrations.fsdpr   Úmodeling_layersr   Úmodeling_outputsr   r	   Úmodeling_utilsr
   Úutilsr   Úwav2vec2.modeling_wav2vec2r   r   r   r   r   r   r   r   r   Úconfiguration_wavlmr   Ú
get_loggerr   Úloggerr   r#   ÚModuler%   r¦   r¨   rÄ   rÈ   rõ   rû   r!  ÚWavLMBaseModelOutputrP  rR  rT  rV  rX  Ú__all__r   r   r    ú<module>ri     s+  ðØ €€€à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø @Ð @Ð @Ð @Ð @Ð @Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð -Ð ,Ð ,Ð ,Ð ,Ð ,ð 
ˆÔ	˜HÑ	%Ô	%€ð	ð 	ð 	ð 	ð 	Ð#Bñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð6ñ 	ô 	ð 	ðc ð c ð c ð c ð c �R”Yñ c ô c ð c ðL	ð 	ð 	ð 	ð 	Ð*ñ 	ô 	ð 	ð&ð &ð &ð &ð &Ð2ñ &ô &ð &ðR"ð "ð "ð "ð "Ð'Añ "ô "ð "ðJG
ð G
ð G
ð G
ð G
�2”9ñ G
ô G
ð G
ðTH
ð H
ð H
ð H
ð H
 "¤)ñ H
ô H
ð H
ðVC'ð C'ð C'ð C'ð C' ¤ñ C'ô C'ð C'ðL,5ð ,5ð ,5ð ,5ð ,5˜?Ð,Cñ ,5ô ,5ð ,5ð^ /Ð ð	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�.ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð%Fñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð'Jñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð(ñ 	ô 	ð 	ðð ð €€€r   