§
    ‚Štj ã                   ó6  — d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	 ddl
mZ ddlmZ ddlmZmZ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m Z m!Z!m"Z"m#Z# ddl$m%Z%m&Z& ddl'm(Z(m)Z) ddl*m+Z+m,Z,  e)j-        e.¦  «        Z/dZ0dej1        de2de2fd„Z3	 d�dej1        de2dej1        dz  fd„Z4	 	 d‚de5e2e2f         de6de2dej7        dz  de2dej8        fd „Z9 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j        j=        ¦  «        ZA G d/„ d0ej=        ¦  «        ZB G d1„ d2ej=        ¦  «        ZC G d3„ d4ej=        ¦  «        ZD G d5„ d6ej=        ¦  «        ZE G d7„ d8ej=        ¦  «        ZF G d9„ d:ej=        ¦  «        ZG G d;„ d<ej=        ¦  «        ZH G d=„ d>ej=        e%¦  «        ZI G d?„ d@ej=        e%¦  «        ZJ G dA„ dBej=        e%¦  «        ZK G dC„ dDej=        ¦  «        ZL G dE„ dFej=        ¦  «        ZM G dG„ dHe¦  «        ZN G dI„ dJe¦  «        ZOe( G dK„ dLe&¦  «        ¦   «         ZP G dM„ dNeP¦  «        ZQ G dO„ dPeP¦  «        ZR G dQ„ dReP¦  «        ZS G dS„ dTeP¦  «        ZT G dU„ dVeP¦  «        ZU G dW„ dXeP¦  «        ZV G dY„ dZeP¦  «        ZW G d[„ d\eP¦  «        ZX G d]„ d^ej=        ¦  «        ZY G d_„ d`ej=        ¦  «        ZZ e(da¬b¦  «         G dc„ ddeP¦  «        ¦   «         Z[ e(de¬b¦  «         G df„ dgePe¦  «        ¦   «         Z\	 	 	 	 	 	 	 	 dƒdlePdej]        dmej]        dz  dej7        dz  dne6doe6dpe6dqej=        dz  dre^dse^dej]        e5ej]        ej]        f         z  fdt„Z_ e(du¬b¦  «         G dv„ dweP¦  «        ¦   «         Z` e(dx¬b¦  «         G dy„ dzeP¦  «        ¦   «         Za G d{„ d|ej=        ¦  «        Zb e(d}¬b¦  «         G d~„ de&¦  «        ¦   «         Zcg d€¢ZddS )„zPyTorch SpeechT5 model.é    N)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚL1Lossé   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCacheÚEncoderDecoderCache)ÚGenerationMixin)Úis_deepspeed_zero3_enabled)Úis_fsdp_managed_module)Úcreate_bidirectional_maskÚcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚ)BaseModelOutputWithPastAndCrossAttentionsÚSeq2SeqLMOutputÚSeq2SeqModelOutputÚSeq2SeqSpectrogramOutput)ÚEmbeddingAccessMixinÚPreTrainedModel)Úauto_docstringÚloggingé   )ÚSpeechT5ConfigÚSpeechT5HifiGanConfigÚ	input_idsÚpad_token_idÚdecoder_start_token_idc                 óô   — |                       | j        ¦  «        }| dd…dd…f                              ¦   «         |dd…dd…f<   ||dd…df<   |€t          d¦  «        ‚|                     |dk    |¦  «         |S )z1
    Shift input ids one token to the right.
    Néÿÿÿÿr   r   z1self.model.config.pad_token_id has to be defined.iœÿÿÿ)Ú	new_zerosÚshapeÚcloneÚ
ValueErrorÚmasked_fill_)r   r    r!   Úshifted_input_idss       úl/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/speecht5/modeling_speecht5.pyÚshift_tokens_rightr+   4   s˜   € ð "×+Ò+¨I¬OÑ<Ô<ÐØ(¨¨¨¨C¨R¨C¨Ô0×6Ò6Ñ8Ô8Ð�a�a�a˜˜˜�eÑØ4Ð�a�a�a˜�dÑàÐÝÐLÑMÔMÐMà×"Ò"Ð#4¸Ò#<¸lÑKÔKÐKàÐó    Úinput_valuesÚreduction_factorÚattention_maskc                 ó  — |dk    r&| dd…|dz
  d|…f         } |�|dd…|dz
  d|…f         }|                       | j        ¦  «        }| dd…dd…f                              ¦   «         |dd…dd…f<   |                     |dk    d¦  «         ||fS )zw
    Shift input spectrograms one timestep to the right. Also applies the reduction factor to the sequence length.
    r   Nr#   ç      YÀç        )r$   r%   r&   r(   )r-   r.   r/   Úshifted_input_valuess       r*   Úshift_spectrograms_rightr4   D   sÍ   € ð ˜!ÒÐØ# A A AÐ'7¸!Ñ';Ð'OÐ?OÐ'OÐ$OÔPˆØÐ%Ø+¨A¨A¨AÐ/?À!Ñ/CÐ/WÐGWÐ/WÐ,WÔXˆNà'×1Ò1°,Ô2DÑEÔEÐØ".¨q¨q¨q°#°2°#¨vÔ"6×"<Ò"<Ñ">Ô">Ð˜˜˜˜A˜B˜B˜Ñð ×%Ò%Ð&:¸fÒ&DÀcÑJÔJÐJà Ð/Ð/r,   r%   Ú	mask_probÚmask_lengthÚ	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Úepsilonr6   r5   r7   Úsequence_lengths     €€€€€r*   Ú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àÐr,   Nr#   c                 ó   •— g | ]}‰‘ŒS © rD   )Ú.0Ú_rA   s     €r*   ú
<listcomp>z)_compute_mask_indices.<locals>.<listcomp>“   s   ø€ Ð9Ð9Ð9 !ˆoÐ9Ð9Ð9r,   ©Údtyper   F)Úreplace)r'   ÚnpÚrandomÚrandÚitemÚdetachÚsumÚtolistÚrangeÚzerosÚboolÚchoiceÚarangeÚlenÚconcatenateÚonesÚint32ÚappendÚarrayÚbroadcast_toÚreshaper=   Úput_along_axis)r%   r5   r6   r/   r7   Ú
batch_sizerB   Úinput_lengthsÚspec_aug_maskÚspec_aug_mask_idxsÚmax_num_masked_spanr>   r?   Úspec_aug_mask_idxÚdummy_mask_idxÚoffsetsr@   rA   s    `` `           @@r*   Ú_compute_mask_indicesrh   Z   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Ñ?Ô?Ð?àÐr,   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚSpeechT5NoLayerNormConvLayerr   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      €r*   rq   z%SpeechT5NoLayerNormConvLayer.__init__Ó   s�   ø€ Ý‰Œ×ÒÑÔÐØ<DÀqºL¸L˜6œ?¨8°a©<Ô8Ð8ÈaˆÔØ"œO¨HÔ5ˆÔå”IØÔØÔØÔ*¨8Ô4ØÔ% hÔ/ØÔ!ð
ñ 
ô 
ˆŒ	õ ! Ô!?Ô@ˆŒˆˆr,   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S ©N)ry   r{   ©r}   Úhidden_statess     r*   Úforwardz$SpeechT5NoLayerNormConvLayer.forwardá   s*   € ØŸ	š	 -Ñ0Ô0ˆØŸš¨Ñ6Ô6ˆØÐr,   ©r   ©Ú__name__Ú
__module__Ú__qualname__rq   r…   Ú__classcell__©r€   s   @r*   rj   rj   Ò   sR   ø€ € € € € ðAð Að Að Að Að Aðð ð ð ð ð ð r,   rj   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚSpeechT5LayerNormConvLayerr   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   rl   T)Úelementwise_affine)rp   rq   rr   rs   rt   r   ru   rv   rw   rx   ry   Ú	LayerNormÚ
layer_normr	   rz   r{   r|   s      €r*   rq   z#SpeechT5LayerNormConvLayer.__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ˆŒÝ  Ô!?Ô@ˆŒˆˆr,   c                 óÜ   — |                       |¦  «        }|                     dd¦  «        }|                      |¦  «        }|                     dd¦  «        }|                      |¦  «        }|S )Néþÿÿÿr#   )ry   Ú	transposer’   r{   rƒ   s     r*   r…   z"SpeechT5LayerNormConvLayer.forwardø   se   € ØŸ	š	 -Ñ0Ô0ˆà%×/Ò/°°BÑ7Ô7ˆØŸš¨Ñ6Ô6ˆØ%×/Ò/°°BÑ7Ô7ˆàŸš¨Ñ6Ô6ˆØÐr,   r†   r‡   rŒ   s   @r*   rŽ   rŽ   è   sR   ø€ € € € € ðAð Að Að Að Að Aðð ð ð ð ð ð r,   rŽ   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚSpeechT5GroupNormConvLayerr   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   rl   T)Ú
num_groupsÚnum_channelsÚaffine)rp   rq   rr   rs   rt   r   ru   rv   rw   rx   ry   r	   rz   r{   Ú	GroupNormr’   r|   s      €r*   rq   z#SpeechT5GroupNormConvLayer.__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ˆŒˆˆr,   c                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S r‚   )ry   r’   r{   rƒ   s     r*   r…   z"SpeechT5GroupNormConvLayer.forward  s;   € ØŸ	š	 -Ñ0Ô0ˆØŸš¨Ñ6Ô6ˆØŸš¨Ñ6Ô6ˆØÐr,   r†   r‡   rŒ   s   @r*   r—   r—     sR   ø€ € € € € ðrð rð rð rð rð rð ð ð ð ð ð ð r,   r—   c            	       óî   ‡ — e Zd ZdZddedededz  fˆ fd„Zddedededz  fd„Zeddedededz  fd	„¦   «         Z e	j
        ¦   «         dde	j        defd„¦   «         Z	 dde	j        dededz  fd„Zˆ xZS )Ú%SpeechT5SinusoidalPositionalEmbeddingzDThis module produces sinusoidal positional embeddings of any length.NÚnum_positionsÚembedding_dimÚpadding_idxc                 ó¾   •— t          ¦   «                              ¦   «          d| _        || _        || _        || _        |                      || j        z   ||¦  «         d S ©Né   )rp   rq   Úoffsetr    r¡   r¢   Úmake_weights)r}   r    r¡   r¢   r€   s       €r*   rq   z.SpeechT5SinusoidalPositionalEmbedding.__init__   s]   ø€ Ý‰Œ×ÒÑÔÐØˆŒØ*ˆÔØ*ˆÔØ&ˆÔØ×Ò˜-¨$¬+Ñ5°}ÀkÑRÔRÐRÐRÐRr,   Únum_embeddingsc                 óÚ   — |                       |||¦  «        }t          | d¦  «        r+|                     | j        j        | j        j        ¬¦  «        }|                      d|d¬¦  «         d S )NÚweights©rI   ÚdeviceF©Ú
persistent)Úget_embeddingÚhasattrÚtorª   rI   r¬   Úregister_buffer)r}   r¨   r¡   r¢   Úemb_weightss        r*   r§   z2SpeechT5SinusoidalPositionalEmbedding.make_weights(  sl   € Ø×(Ò(¨¸ÈÑTÔTˆÝ�4˜Ñ#Ô#ð 	_à%Ÿ.š.¨t¬|Ô/AÈ$Ì,ÔJ]˜.Ñ^Ô^ˆKà×Ò˜Y¨ÀÐÑFÔFÐFÐFÐFr,   c                 óð  — |dz  }t          j        d¦  «        |dz
  z  }t          j        t          j        |t          j        ¬¦  «                             ¦   «         | z  ¦  «        }t          j        | t          j        ¬¦  «                             ¦   «                              d¦  «        |                     d¦  «        z  }t          j        t          j	        |¦  «        t          j
        |¦  «        gd¬¦  «                             | d¦  «        }|dz  dk    r+t          j        |t          j        | d¦  «        gd¬¦  «        }|�	d||dd…f<   |                     t          j        ¦   «         ¦  «        S )	zÁ
        Build sinusoidal embeddings. This matches the implementation in tensor2tensor, but differs slightly from the
        description in Section 3.5 of "Attention Is All You Need".
        r¥   i'  r   rH   r   ©Údimr#   N)ÚmathÚlogÚtorchÚexprV   Úint64ÚfloatÚ	unsqueezeÚcatÚsinÚcosÚviewrS   r±   Úget_default_dtype)r¨   r¡   r¢   Úhalf_dimÚembs        r*   r¯   z3SpeechT5SinusoidalPositionalEmbedding.get_embedding0  s?  € ð ! AÑ%ˆÝŒh�u‰oŒo ¨A¡Ñ.ˆÝŒi�œ XµU´[ÐAÑAÔA×GÒGÑIÔIÈSÈDÑPÑQÔQˆÝŒl˜>µ´Ð=Ñ=Ô=×CÒCÑEÔE×OÒOÐPQÑRÔRÐUX×UbÒUbÐcdÑUeÔUeÑeˆÝŒi�œ 3™œ­¬°3©¬Ð8¸aÐ@Ñ@Ô@×EÒEÀnÐVXÑYÔYˆØ˜1Ñ Ò!Ð!å”)˜S¥%¤+¨n¸aÑ"@Ô"@ÐAÀqÐIÑIÔIˆCØÐ"Ø"#ˆC�˜Q˜Q˜Q�ÑØ�vŠv•eÔ-Ñ/Ô/Ñ0Ô0Ð0r,   r   r   Úpast_key_values_lengthc                 óê  — |                      ¦   «         \  }}|                      || j        |¦  «                             |j        ¦  «        }| j        dz   |z   }|| j                              d¦  «        k    r)|                      || j        z   | j        | j        ¦  «         | j         	                    d| 
                    d¦  «        ¦  «         
                    ||d¦  «                             ¦   «         S )Nr   r   r#   )ÚsizeÚ"create_position_ids_from_input_idsr¢   r±   r¬   rª   r§   r¦   r¡   Úindex_selectrÁ   rO   )r}   r   rÅ   ÚbszÚseq_lenÚposition_idsÚmax_poss          r*   r…   z-SpeechT5SinusoidalPositionalEmbedding.forwardB  sß   € à —~’~Ñ'Ô'‰ˆˆWà×>Ò>¸yÈ$ÔJZÐ\rÑsÔs×vÒvØÔñ
ô 
ˆð
 Ô" QÑ&¨Ñ0ˆØ�T”\×&Ò& qÑ)Ô)Ò)Ð)Ø×Ò˜g¨¬Ñ3°TÔ5GÈÔIYÑZÔZÐZàŒ|×(Ò(¨¨L×,=Ò,=¸bÑ,AÔ,AÑBÔB×GÒGÈÈWÐVXÑYÔY×`Ò`ÑbÔbÐbr,   c                 óÜ   — |                      |¦  «                             ¦   «         }t          j        |d¬¦  «                             |¦  «        |z   |z  }|                     ¦   «         |z   S )a  
        Replace non-padding symbols with their position numbers. Position numbers begin at padding_idx+1. Padding
        symbols are ignored. This is modified from fairseq's `utils.make_positions`.

        Args:
            x: torch.Tensor x:
        Returns: torch.Tensor
        r   rµ   )Úner<   r¹   ÚcumsumÚtype_asÚlong)r}   r   r¢   rÅ   ÚmaskÚincremental_indicess         r*   rÈ   zHSpeechT5SinusoidalPositionalEmbedding.create_position_ids_from_input_idsQ  sg   € ð �|Š|˜KÑ(Ô(×,Ò,Ñ.Ô.ˆÝ$œ|¨D°aÐ8Ñ8Ô8×@Ò@ÀÑFÔFÐI_Ñ_ÐcgÑgÐØ"×'Ò'Ñ)Ô)¨KÑ7Ð7r,   r‚   r†   )rˆ   r‰   rŠ   Ú__doc__r<   rq   r§   Ústaticmethodr¯   r¹   Úno_gradÚTensorr…   rÈ   r‹   rŒ   s   @r*   rŸ   rŸ     sl  ø€ € € € € ØNÐNðSð S cð S¸#ð SÈCÐRVÉJð Sð Sð Sð Sð Sð SðGð G¨3ð G¸sð GÐQTÐW[ÑQ[ð Gð Gð Gð Gð ð1ð 1 cð 1¸#ð 1ÈCÐRVÉJð 1ð 1ð 1ñ „\ð1ð" €U„]�_„_ðcð c ¤ð cÀsð cð cð cñ „_ðcð _`ð8ð 8Øœð8Ø47ð8ØQTÐW[ÑQ[ð8ð 8ð 8ð 8ð 8ð 8ð 8ð 8r,   rŸ   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚSpeechT5PositionalConvEmbeddingc                 óÊ  •— 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¥   )rm   ÚpaddingÚgroupsÚweight_normr   )Úmodifier_rankÚweight)Únamer¶   Úparametrizations)rp   rq   r   ru   Úhidden_sizeÚnum_conv_pos_embeddingsÚnum_conv_pos_embedding_groupsry   ÚutilsrÞ   r°   râ   r   Ú	deepspeedÚzeroÚGatheredParametersrà   Ú	original0Ú	original1Úweight_gÚweight_vÚregister_external_parameterÚSpeechT5SamePadLayerrÜ   r	   rz   r{   )r}   r~   rÞ   rç   rì   rí   r€   s         €r*   rq   z(SpeechT5PositionalConvEmbedding.__init__d  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•   ry   rÜ   r{   rƒ   s     r*   r…   z'SpeechT5PositionalConvEmbedding.forward…  se   € Ø%×/Ò/°°1Ñ5Ô5ˆàŸ	š	 -Ñ0Ô0ˆØŸš ]Ñ3Ô3ˆØŸš¨Ñ6Ô6ˆà%×/Ò/°°1Ñ5Ô5ˆØÐr,   r‡   rŒ   s   @r*   rÚ   rÚ   c  sM   ø€ € € € € ðAð Að Að Að AðBð ð ð ð ð ð r,   rÚ   c                   ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )Ú SpeechT5ScaledPositionalEncodingu[   
    Scaled positional encoding, see Â§3.2 in https://huggingface.co/papers/1809.08895
    éˆ  c                 óL  •— t          j        ||¦  «        }t          j        d|¦  «                             d¦  «        }t          j        t          j        d|dt           j        ¬¦  «                             ¦   «         t          j        d¦  «        |z   z  ¦  «        }t          j	        |                     ¦   «         |z  ¦  «        |d d …dd d…f<   t          j
        |                     ¦   «         |z  ¦  «        |d d …dd d…f<   |                     d¦  «        }t          ¦   «                              ¦   «          |                      d|d¬¦  «         t          j        |¬	¦  «        | _        || _        || _        t          j        t          j        d
¦  «        ¦  «        | _        d S )Nr   r   r¥   rH   ç     ˆÃ@ÚpeFr­   ©Úpç      ð?)r¹   rS   rV   r½   rº   r»   r¼   r·   r¸   r¿   rÀ   rp   rq   r²   r   ÚDropoutÚdropoutr¶   Úmax_lenÚ	ParameterÚtensorÚalpha)r}   rü   r¶   rý   r÷   ÚpositionÚdiv_termr€   s          €r*   rq   z)SpeechT5ScaledPositionalEncoding.__init__•  s_  ø€ ÝŒ[˜ #Ñ&Ô&ˆÝ”<  7Ñ+Ô+×5Ò5°aÑ8Ô8ˆÝ”9�Uœ\¨!¨S°!½5¼;ÐGÑGÔG×MÒMÑOÔOÕTXÔT\Ð]dÑTeÔTeÐhkÑTkÐRlÑlÑmÔmˆÝ”i §¢Ñ 0Ô 0°8Ñ ;Ñ<Ô<ˆˆ1ˆ1ˆ1ˆaˆd�ˆdˆ7‰Ý”i §¢Ñ 0Ô 0°8Ñ ;Ñ<Ô<ˆˆ1ˆ1ˆ1ˆaˆd�ˆdˆ7‰Ø�\Š\˜!‰_Œ_ˆÝ‰Œ×ÒÑÔÐØ×Ò˜T 2°%ÐÑ8Ô8Ð8Ý”z GÐ,Ñ,Ô,ˆŒØˆŒØˆŒÝ”\¥%¤,¨sÑ"3Ô"3Ñ4Ô4ˆŒ
ˆ
ˆ
r,   c                 ó’   — || j         | j        d d …d |                     d¦  «        …f         z  z   }|                      |¦  «        }|S )Nr   )r   r÷   rÇ   rü   )r}   rÄ   s     r*   r…   z(SpeechT5ScaledPositionalEncoding.forward£  sG   € Ø�D”J ¤¨¨¨¨M¨c¯hªh°q©k¬k¨MÐ)9Ô!:Ñ:Ñ:ˆØ�lŠl˜3ÑÔˆØˆ
r,   )rô   )rˆ   r‰   rŠ   rÕ   rq   r…   r‹   rŒ   s   @r*   ró   ró   �  sV   ø€ € € € € ðð ð5ð 5ð 5ð 5ð 5ð 5ðð ð ð ð ð ð r,   ró   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )Ú"SpeechT5RelativePositionalEncodingéè  c                 ó´   •— t          ¦   «                              ¦   «          || _        || _        t          j                             d|z  |¦  «        | _        d S r¤   )rp   rq   r¶   Ú
max_lengthr¹   r   Ú	EmbeddingÚpe_k)r}   r¶   r  r€   s      €r*   rq   z+SpeechT5RelativePositionalEncoding.__init__ª  sH   ø€ Ý‰Œ×ÒÑÔÐØˆŒØ$ˆŒÝ”H×&Ò& q¨:¡~°sÑ;Ô;ˆŒ	ˆ	ˆ	r,   c                 ó˜  — |j         d         }t          j        d|¦  «                             |j        t          j        ¬¦  «        }|d d …d f         |d d d …f         z
  }t          j        || j         k     | j         |¦  «        }t          j        || j        k    | j        dz
  |¦  «        }|| j        z   }|                      |¦  «        S )Nr   r   ©r¬   rI   )	r%   r¹   rV   r±   r¬   rÒ   Úwherer  r
  )r}   r„   rË   Úpos_seqs       r*   r…   z*SpeechT5RelativePositionalEncoding.forward°  s¿   € ØÔ% aÔ(ˆÝ”,˜q 'Ñ*Ô*×-Ò-°]Ô5IÕQVÔQ[Ð-Ñ\Ô\ˆØ˜!˜!˜!˜T˜'Ô" W¨T°1°1°1¨WÔ%5Ñ5ˆå”+˜g¨¬Ð(8Ò8¸4¼?Ð:JÈGÑTÔTˆÝ”+˜g¨¬Ò8¸$¼/ÈAÑ:MÈwÑWÔWˆØ˜DœOÑ+ˆà�yŠy˜Ñ!Ô!Ð!r,   )r  r‡   rŒ   s   @r*   r  r  ©  sL   ø€ € € € € ð<ð <ð <ð <ð <ð <ð	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"r,   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   )rp   rq   Únum_pad_remove)r}   rä   r€   s     €r*   rq   zSpeechT5SamePadLayer.__init__¾  s:   ø€ Ý‰Œ×ÒÑÔÐØ#:¸QÑ#>À!Ò#CÐ#C˜a˜aÈˆÔÐÐr,   c                 óJ   — | j         dk    r|d d …d d …d | j          …f         }|S ©Nr   )r  rƒ   s     r*   r…   zSpeechT5SamePadLayer.forwardÂ  s;   € ØÔ Ò"Ð"Ø)¨!¨!¨!¨Q¨Q¨QÐ0F°4Ô3FÐ2FÐ0FÐ*FÔGˆMØÐr,   r‡   rŒ   s   @r*   rï   rï   ½  sL   ø€ € € € € ðKð Kð Kð Kð Kðð ð ð ð ð ð r,   rï   c                   ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )ÚSpeechT5FeatureEncoderz.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  )rj   ©rE   Úir~   s     €r*   rG   z3SpeechT5FeatureEncoder.__init__.<locals>.<listcomp>Ð  s>   ø€ ð Nð Nð NØIJÕ,¨V¸aÀ!¹eÐDÑDÔDðNð Nð Nr,   r   Úlayerc                 ó2   •— g | ]}t          ‰|¬ ¦  «        ‘ŒS )r  )rŽ   r  s     €r*   rG   z3SpeechT5FeatureEncoder.__init__.<locals>.<listcomp>Ô  s4   ø€ ð ð ð ØCDÕ*¨6¸AÐ>Ñ>Ô>ðð ð r,   z`config.feat_extract_norm` is z), but has to be one of ['group', 'layer']FT)rp   rq   Úfeat_extract_normr—   rR   Únum_feat_extract_layersr'   r   Ú
ModuleListÚconv_layersÚgradient_checkpointingÚ_requires_grad)r}   r~   r!  r€   s    ` €r*   rq   zSpeechT5FeatureEncoder.__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ˆÔØ&+ˆÔ#Ø"ˆÔÐÐr,   c                 óP   — |                       ¦   «         D ]	}d|_        Œ
d| _        d S )NF)Ú
parametersÚrequires_gradr#  )r}   Úparams     r*   Ú_freeze_parametersz)SpeechT5FeatureEncoder._freeze_parametersß  s4   € Ø—_’_Ñ&Ô&ð 	(ð 	(ˆEØ"'ˆEÔÐØ#ˆÔÐÐr,   c                 ór   — |d d …d f         }| j         r| j        rd|_        | j        D ]} ||¦  «        }Œ|S ©NT)r#  Útrainingr&  r!  )r}   r-   r„   Ú
conv_layers       r*   r…   zSpeechT5FeatureEncoder.forwardä  s[   € Ø$ Q Q Q¨ WÔ-ˆð Ôð 	/ 4¤=ð 	/Ø*.ˆMÔ'àÔ*ð 	6ð 	6ˆJØ&˜J }Ñ5Ô5ˆMˆMàÐr,   )rˆ   r‰   rŠ   rÕ   rq   r(  r…   r‹   rŒ   s   @r*   r  r  É  s\   ø€ € € € € Ø8Ð8ð#ð #ð #ð #ð #ð&$ð $ð $ð

ð 
ð 
ð 
ð 
ð 
ð 
r,   r  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚSpeechT5FeatureProjectionc                 ó.  •— t          ¦   «                              ¦   «          t          j        |j        d         |j        ¬¦  «        | _        t          j        |j        d         |j        ¦  «        | _	        t          j
        |j        ¦  «        | _        d S )Nr#   ©Úeps)rp   rq   r   r‘   rr   Úlayer_norm_epsr’   ÚLinearrã   Ú
projectionrû   Úfeat_proj_dropoutrü   ©r}   r~   r€   s     €r*   rq   z"SpeechT5FeatureProjection.__init__ó  sn   ø€ Ý‰Œ×ÒÑÔÐÝœ, v¤°rÔ':ÀÔ@UÐVÑVÔVˆŒÝœ) F¤O°BÔ$7¸Ô9KÑLÔLˆŒÝ”z &Ô":Ñ;Ô;ˆŒˆˆr,   c                 óˆ   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }||fS r‚   )r’   r4  rü   )r}   r„   Únorm_hidden_statess      r*   r…   z!SpeechT5FeatureProjection.forwardù  sC   € à!Ÿ_š_¨]Ñ;Ô;ÐØŸšÐ(:Ñ;Ô;ˆØŸš ]Ñ3Ô3ˆØÐ0Ð0Ð0r,   r‡   rŒ   s   @r*   r.  r.  ò  sG   ø€ € € € € ð<ð <ð <ð <ð <ð1ð 1ð 1ð 1ð 1ð 1ð 1r,   r.  c                   óâ   ‡ — e Zd Zˆ fd„Zd„ Z	 	 ddej        dej        dz  dej        dz  fd„Z	de
dej        fd	„Zd
ej        e
z  fd„Z	 	 ddej        dej        dz  dej        dz  fd„Zˆ xZS )ÚSpeechT5SpeechEncoderPrenetc                 óÞ  •— t          ¦   «                              ¦   «          || _        t          |¦  «        | _        t          |¦  «        | _        |j        dk    s|j        dk    rBt          j
        t          j        |j        ¦  «                             ¦   «         ¦  «        | _        t!          |¦  «        | _        t%          |j        |j        z   dz   |j        |j        ¦  «        | _        d S )Nr2   r   )rp   rq   r~   r  Úfeature_encoderr.  Úfeature_projectionÚmask_time_probÚmask_feature_probr   rþ   r¹   rØ   rã   Úuniform_Úmasked_spec_embedrÚ   Úpos_conv_embedrŸ   Úmax_speech_positionsr    Úpos_sinusoidal_embedr6  s     €r*   rq   z$SpeechT5SpeechEncoderPrenet.__init__  sÏ   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ5°fÑ=Ô=ˆÔÝ";¸FÑ"CÔ"CˆÔð Ô  3Ò&Ð&¨&Ô*BÀSÒ*HÐ*HÝ%'¤\µ%´,¸vÔ?QÑ2RÔ2R×2[Ò2[Ñ2]Ô2]Ñ%^Ô%^ˆDÔ"å=¸fÑEÔEˆÔÝ$IØÔ'¨&Ô*=Ñ=ÀÑAØÔØÔñ%
ô %
ˆÔ!Ð!Ð!r,   c                 ó8   — | j                              ¦   «          d S r‚   )r<  r(  ©r}   s    r*   Úfreeze_feature_encoderz2SpeechT5SpeechEncoderPrenet.freeze_feature_encoder  s   € ØÔ×/Ò/Ñ1Ô1Ð1Ð1Ð1r,   Nr-   r/   Úmask_time_indicesc                 ó(  — |                       |¦  «        }|                     dd¦  «        }|�!|                      |j        d         |¦  «        }|                      |¦  «        \  }}|                      |||¬¦  «        }|                      |¦  «        }||z   }|�(|                     d¦  «                             ¦   «         }n3t          j
        |j        d d…         t          j        |j        ¬¦  «        }|                      |¦  «        }||z   }||fS )Nr   r¥   )rH  r/   r«   )r<  r•   Ú"_get_feature_vector_attention_maskr%   r=  Ú_mask_hidden_statesrB  rÏ   rÒ   r¹   rS   r¬   rD  )	r}   r-   r/   rH  Úextract_featuresr„   Úpositional_conv_embeddingÚpadding_maskÚ positional_sinusoidal_embeddingss	            r*   r…   z#SpeechT5SpeechEncoderPrenet.forward  s/  € ð  ×/Ò/°Ñ=Ô=ÐØ+×5Ò5°a¸Ñ;Ô;ÐàÐ%à!×DÒDØ Ô& qÔ)Øñô ˆNð
 +/×*AÒ*AÐBRÑ*SÔ*SÑ'ˆÐ'Ø×0Ò0ØÐ->È~ð 1ñ 
ô 
ˆð %)×$7Ò$7¸Ñ$FÔ$FÐ!Ø%Ð(AÑAˆàÐ%Ø)×,Ò,¨QÑ/Ô/×4Ò4Ñ6Ô6ˆLˆLå œ; }Ô':¸2¸A¸2Ô'>ÅeÄjÐYfÔYmÐnÑnÔnˆLà+/×+DÒ+DÀ\Ñ+RÔ+RÐ(Ø%Ð(HÑHˆà˜nÐ,Ð,r,   Úfeature_vector_lengthc                 ó  — |                      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 )Nr#   rµ   r   r«   r   ©r¬   )rÐ   Ú _get_feat_extract_output_lengthsr±   r¹   rÒ   r%   rS   rI   r¬   rV   ÚfliprT   )r}   rP  r/   Únon_padded_lengthsÚoutput_lengthsr`   s         r*   rJ  z>SpeechT5SpeechEncoderPrenet._get_feature_vector_attention_mask9  sþ   € ð ,×2Ò2°rÐ2Ñ:Ô:¸1¸1¸1¸b¸5ÔAÐØ×>Ò>Ð?QÑRÔR×UÒUÕV[ÔV`ÑaÔaˆØ#Ô)¨!Ô,ˆ
åœØÐ.Ð/°~Ô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ˆØÐr,   ra   c                 óz   — d„ }t          | j        j        | j        j        ¦  «        D ]\  }} ||||¦  «        }Œ|S )zH
        Computes the output length of the convolutional layers
        c                 ó<   — t          j        | |z
  |d¬¦  «        dz   S )NÚfloor)Úrounding_moder   )r¹   Údiv)r>   rm   rn   s      r*   Ú_conv_out_lengthzVSpeechT5SpeechEncoderPrenet._get_feat_extract_output_lengths.<locals>._conv_out_lengthN  s&   € õ ”9˜\¨KÑ7¸ÈwÐWÑWÔWÐZ[Ñ[Ð[r,   )Úzipr~   rv   rw   )r}   ra   r\  rm   rn   s        r*   rS  z<SpeechT5SpeechEncoderPrenet._get_feat_extract_output_lengthsI  s\   € ð
	\ð 	\ð 	\õ
 $' t¤{Ô'>ÀÄÔ@WÑ#XÔ#Xð 	Qð 	QÑˆK˜Ø,Ð,¨]¸KÈÑPÔPˆMˆMàÐr,   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   )r5   r6   r/   r7   r  )r5   r6   r7   r#   )Úgetattrr~   rÇ   rA  r±   rI   r>  r+  rh   Úmask_time_lengthÚmask_time_min_masksr¹   rÿ   r¬   rT   r?  Úmask_feature_lengthÚmask_feature_min_masksÚexpand)r}   r„   rH  r/   r`   rA   rã   Úmask_feature_indicess           r*   rK  z/SpeechT5SpeechEncoderPrenet._mask_hidden_statesY  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Ð.Ñ/àÐr,   ©NN)rˆ   r‰   rŠ   rq   rG  r¹   rØ   Ú
LongTensorÚFloatTensorr…   r<   rJ  rS  rK  r‹   rŒ   s   @r*   r:  r:    s1  ø€ € € € € ð
ð 
ð 
ð 
ð 
ð"2ð 2ð 2ð 37Ø6:ð	 -ð  -à”lð -ð Ô(¨4Ñ/ð -ð !Ô,¨tÑ3ð	 -ð  -ð  -ð  -ðFÈð Ð]bÔ]mð ð ð ð ð ¸eÔ>NÐQTÑ>Tð ð ð ð ð& 7;Ø26ð	,ð ,àÔ(ð,ð !Ô,¨tÑ3ð,ð Ô(¨4Ñ/ð	,ð ,ð ,ð ,ð ,ð ,ð ,ð ,r,   r:  c                   óR   ‡ — e Zd Zˆ fd„Zd„ Z	 ddej        dej        dz  fd„Zˆ xZS )ÚSpeechT5SpeechDecoderPrenetc                 ó°  •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        t          j        ‰j	        ‰j
        ¦  «        | _        t          ‰j        ‰j
        ‰j        ¦  «        | _        t          j        ‰j        ‰j
        z   ‰j
        ¦  «        | _        d S )Nc                 óh   •— g | ].}t          j        |d k    r‰j        n‰j        ‰j        ¦  «        ‘Œ/S r†   )r   r3  Únum_mel_binsÚspeech_decoder_prenet_unitsr  s     €r*   rG   z8SpeechT5SpeechDecoderPrenet.__init__.<locals>.<listcomp>Ž  sS   ø€ ð ð ð ð
 õ	 ”	Ø+,°ª6¨6�FÔ'Ð'°vÔ7YØÔ6ñô ðð ð r,   )rp   rq   r~   r   r   rR   Úspeech_decoder_prenet_layersÚlayersr3  ro  rã   Úfinal_layerró   Úpositional_dropoutrC  Úencode_positionsÚspeaker_embedding_dimÚspeaker_embeds_layerr6  s    `€r*   rq   z$SpeechT5SpeechDecoderPrenet.__init__‰  sÒ   øø€ Ý‰Œ×ÒÑÔÐØˆŒå”mðð ð ð õ
 ˜vÔBÑCÔCðñ ô ñ
ô 
ˆŒõ œ9 VÔ%GÈÔI[Ñ\Ô\ˆÔÝ @ØÔ%ØÔØÔ'ñ!
ô !
ˆÔõ
 %'¤I¨fÔ.JÈVÔM_Ñ._ÐagÔasÑ$tÔ$tˆÔ!Ð!Ð!r,   c                 óú   — t          j        |d         |¬¦  «        }|                     d¦  «                             |                     d¦  «        dd¦  «        }t          j        |dk    |d¦  «        dz  d|z
  z  S )Nr   rø   r   )r¹   Ú	bernoullir½   ÚrepeatrÇ   r  )r}   Úinputs_embedsrù   rÓ   Ú	all_maskss        r*   Ú_consistent_dropoutz/SpeechT5SpeechDecoderPrenet._consistent_dropoutŸ  sr   € ÝŒ˜}¨QÔ/°1Ð5Ñ5Ô5ˆØ—N’N 1Ñ%Ô%×,Ò,¨]×-?Ò-?ÀÑ-BÔ-BÀAÀqÑIÔIˆ	ÝŒ{˜9¨š>¨=¸!Ñ<Ô<¸qÑ@ÀAÈÁEÑJÐJr,   Nr-   Úspeaker_embeddingsc                 óR  — |}| j         D ]J}t          j                              ||¦  «        ¦  «        }|                      || j        j        ¦  «        }ŒK|                      |¦  «        }|                      |¦  «        }|�¦t          j         	                    |¦  «        }| 
                    d¦  «                             d|                     d¦  «        d¦  «        }t          j        ||gd¬¦  «        }t          j                             |                      |¦  «        ¦  «        }|S )Nr   r#   rµ   )rq  r   Ú
functionalÚrelur|  r~   Úspeech_decoder_prenet_dropoutrr  rt  Ú	normalizer½   re  rÇ   r¹   r¾   rv  )r}   r-   r}  rz  r  s        r*   r…   z#SpeechT5SpeechDecoderPrenet.forward¤  s  € ð %ˆØ”[ð 	oð 	oˆEÝœM×.Ò.¨u¨u°]Ñ/CÔ/CÑDÔDˆMØ ×4Ò4°]ÀDÄKÔDmÑnÔnˆMˆMà×(Ò(¨Ñ7Ô7ˆØ×-Ò-¨mÑ<Ô<ˆàÐ)Ý!#¤×!8Ò!8Ð9KÑ!LÔ!LÐØ!3×!=Ò!=¸aÑ!@Ô!@×!GÒ!GÈÈM×L^ÒL^Ð_`ÑLaÔLaÐceÑ!fÔ!fÐÝ!œI }Ð6HÐ&IÈrÐRÑRÔRˆMÝœM×.Ò.¨t×/HÒ/HÈÑ/WÔ/WÑXÔXˆMàÐr,   r‚   )	rˆ   r‰   rŠ   rq   r|  r¹   rØ   r…   r‹   rŒ   s   @r*   rk  rk  ˆ  sˆ   ø€ € € € € ðuð uð uð uð uð,Kð Kð Kð 37ðð à”lðð "œL¨4Ñ/ðð ð ð ð ð ð ð r,   rk  c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚSpeechT5BatchNormConvLayerr   c                 óÔ  •— t          ¦   «                              ¦   «          |dk    r|j        }n|j        }||j        dz
  k    r|j        }n|j        }t          j        |||j        d|j        dz
  dz  d¬¦  «        | _        t          j	        |¦  «        | _
        ||j        dz
  k     rt          j        ¦   «         | _        nd | _        t          j        |j        ¦  «        | _        d S )Nr   r   r¥   F)rm   rn   rÜ   ro   )rp   rq   rn  Úspeech_decoder_postnet_unitsÚspeech_decoder_postnet_layersr   ru   Úspeech_decoder_postnet_kernelry   ÚBatchNorm1dÚ
batch_normÚTanhr{   rû   Úspeech_decoder_postnet_dropoutrü   )r}   r~   r   rs   rt   r€   s        €r*   rq   z#SpeechT5BatchNormConvLayer.__init__½  sç   ø€ Ý‰Œ×ÒÑÔÐà�qŠ=ˆ=Ø Ô-ˆKˆKà Ô=ˆKà�vÔ;¸aÑ?Ò?Ð?Ø!Ô.ˆLˆLà!Ô>ˆLå”IØØØÔ<ØØÔ9¸AÑ=À!ÑCØð
ñ 
ô 
ˆŒ	õ œ.¨Ñ6Ô6ˆŒà�fÔ:¸QÑ>Ò>Ð>Ý œg™iœiˆDŒOˆOà"ˆDŒOå”z &Ô"GÑHÔHˆŒˆˆr,   c                 ó¼   — |                       |¦  «        }|                      |¦  «        }| j        �|                      |¦  «        }|                      |¦  «        }|S r‚   )ry   rŠ  r{   rü   rƒ   s     r*   r…   z"SpeechT5BatchNormConvLayer.forwardÛ  sT   € ØŸ	š	 -Ñ0Ô0ˆØŸš¨Ñ6Ô6ˆØŒ?Ð&Ø ŸOšO¨MÑ:Ô:ˆMØŸš ]Ñ3Ô3ˆØÐr,   r†   r‡   rŒ   s   @r*   r„  r„  ¼  sR   ø€ € € € € ðIð Ið Ið Ið Ið Ið<ð ð ð ð ð ð r,   r„  c                   óJ   ‡ — e Zd Zˆ fd„Zdej        fd„Zdej        fd„Zˆ xZS )ÚSpeechT5SpeechDecoderPostnetc                 óf  •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ‰j        ‰j        ‰j        z  ¦  «        | _        t          j        ‰j        ‰j        ¦  «        | _	        t          j
        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS rD   )r„  r  s     €r*   rG   z9SpeechT5SpeechDecoderPostnet.__init__.<locals>.<listcomp>í  s$   ø€ ÐhÐhÐh°qÕ'¨°Ñ2Ô2ÐhÐhÐhr,   )rp   rq   r~   r   r3  rã   rn  r.   Úfeat_outÚprob_outr   rR   r‡  rq  r6  s    `€r*   rq   z%SpeechT5SpeechDecoderPostnet.__init__å  s”   øø€ Ý‰Œ×ÒÑÔÐØˆŒåœ	 &Ô"4°fÔ6IÈFÔLcÑ6cÑdÔdˆŒÝœ	 &Ô"4°fÔ6MÑNÔNˆŒå”mØhÐhÐhÐh½EÀ&ÔBfÑ<gÔ<gÐhÑhÔhñ
ô 
ˆŒˆˆr,   r„   c                 ó<  — |                       |¦  «                             |                     d¦  «        d| j        j        ¦  «        }|                      |¦  «        }|                      |¦  «                             |                     d¦  «        d¦  «        }|||fS )Nr   r#   )r’  rÁ   rÇ   r~   rn  Úpostnetr“  )r}   r„   Úoutputs_before_postnetÚoutputs_after_postnetÚlogitss        r*   r…   z$SpeechT5SpeechDecoderPostnet.forwardð  s�   € Ø!%§¢¨}Ñ!=Ô!=×!BÒ!BÀ=×CUÒCUÐVWÑCXÔCXÐZ\Ð^bÔ^iÔ^vÑ!wÔ!wÐØ $§¢Ð-CÑ DÔ DÐØ—’˜}Ñ-Ô-×2Ò2°=×3EÒ3EÀaÑ3HÔ3HÈ"ÑMÔMˆØ%Ð'<¸fÐDÐDr,   c                 óŠ   — |                      dd¦  «        }| j        D ]} ||¦  «        }Œ||                      dd¦  «        z   S rñ   )r•   rq  )r}   r„   Úlayer_outputr  s       r*   r•  z$SpeechT5SpeechDecoderPostnet.postnetö  sT   € Ø$×.Ò.¨q°!Ñ4Ô4ˆØ”[ð 	/ð 	/ˆEØ ˜5 Ñ.Ô.ˆLˆLØ˜|×5Ò5°a¸Ñ;Ô;Ñ;Ð;r,   )	rˆ   r‰   rŠ   rq   r¹   rØ   r…   r•  r‹   rŒ   s   @r*   r�  r�  ä  sw   ø€ € € € € ð	
ð 	
ð 	
ð 	
ð 	
ðE U¤\ð Eð Eð Eð Eð< U¤\ð <ð <ð <ð <ð <ð <ð <ð <r,   r�  c                   ó4   ‡ — e Zd Zˆ fd„Zdej        fd„Zˆ xZS )ÚSpeechT5TextEncoderPrenetc                 óô   •— t          ¦   «                              ¦   «          || _        t          j        |j        |j        |j        ¦  «        | _        t          |j
        |j        |j        ¦  «        | _        d S r‚   )rp   rq   r~   r   r	  Ú
vocab_sizerã   r    Úembed_tokensró   rs  Úmax_text_positionsrt  r6  s     €r*   rq   z"SpeechT5TextEncoderPrenet.__init__þ  sj   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝœL¨Ô):¸FÔ<NÐPVÔPcÑdÔdˆÔÝ @ØÔ%ØÔØÔ%ñ!
ô !
ˆÔÐÐr,   r   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S r‚   )rŸ  rt  )r}   r   rz  s      r*   r…   z!SpeechT5TextEncoderPrenet.forward  s.   € Ø×)Ò)¨)Ñ4Ô4ˆØ×-Ò-¨mÑ<Ô<ˆØÐr,   )rˆ   r‰   rŠ   rq   r¹   rØ   r…   r‹   rŒ   s   @r*   rœ  rœ  ý  sU   ø€ € € € € ð
ð 
ð 
ð 
ð 
ð ¤ð ð ð ð ð ð ð ð r,   rœ  c                   óX   ‡ — e Zd Zˆ fd„Z	 	 ddej        dej        dz  dedz  fd„Zˆ xZ	S )ÚSpeechT5TextDecoderPrenetc                 ó”  •— t          ¦   «                              ¦   «          || _        t          j        |j        ¦  «        | _        |j        rt          j	        |j
        ¦  «        nd| _        t          j        |j        |j
        |j        ¦  «        | _        t!          |j        |j        z   dz   |j
        |j        ¦  «        | _        d S )Nrú   r   )rp   rq   r~   r   rû   rs  rü   Úscale_embeddingr·   Úsqrtrã   Úembed_scaler	  rž  r    rŸ  rŸ   r   Úembed_positionsr6  s     €r*   rq   z"SpeechT5TextDecoderPrenet.__init__  s®   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”z &Ô";Ñ<Ô<ˆŒØ<BÔ<RÐ[�4œ9 VÔ%7Ñ8Ô8Ð8ÐX[ˆÔåœL¨Ô):¸FÔ<NÐPVÔPcÑdÔdˆÔåDØÔ%¨Ô(;Ñ;¸aÑ?ØÔØÔñ 
ô  
ˆÔÐÐr,   Nr   r/   Úpast_key_valuesc                 óX  — |�1|                      ¦   «         }|                     d|d         ¦  «        }nt          d¦  «        ‚|€dn|                     ¦   «         }|                      ||¦  «        }|                      |¦  «        | j        z  }||z  }|                      |¦  «        }||fS )Nr#   z'You have to specify `decoder_input_ids`r   )rÇ   rÁ   r'   Úget_seq_lengthr¨  rŸ  r§  rü   )r}   r   r/   r©  Úinput_shaperÅ   Ú	positionsrz  s           r*   r…   z!SpeechT5TextDecoderPrenet.forward  s³   € ð Ð Ø#Ÿ.š.Ñ*Ô*ˆKØ!Ÿš r¨;°r¬?Ñ;Ô;ˆIˆIåÐFÑGÔGÐGà&5Ð&=  À?×CaÒCaÑCcÔCcÐØ×(Ò(¨Ð4JÑKÔKˆ	à×)Ò)¨)Ñ4Ô4°tÔ7GÑGˆØ˜Ñ"ˆØŸš ]Ñ3Ô3ˆà˜nÐ,Ð,r,   rg  )
rˆ   r‰   rŠ   rq   r¹   rØ   rh  r
   r…   r‹   rŒ   s   @r*   r£  r£    sƒ   ø€ € € € € ð
ð 
ð 
ð 
ð 
ð" 37Ø(,ð	-ð -à”<ð-ð Ô(¨4Ñ/ð-ð  ™ð	-ð -ð -ð -ð -ð -ð -ð -r,   r£  c                   ó@   ‡ — e Zd Zˆ fd„Zdej        fd„Zd„ Zd„ Zˆ xZ	S )ÚSpeechT5TextDecoderPostnetc                 ó¢   •— t          ¦   «                              ¦   «          || _        t          j        |j        |j        d¬¦  «        | _        d S )NF©ro   )rp   rq   r~   r   r3  rã   rž  Úlm_headr6  s     €r*   rq   z#SpeechT5TextDecoderPostnet.__init__4  sB   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”y Ô!3°VÔ5FÈUÐSÑSÔSˆŒˆˆr,   r„   c                 ó,   — |                       |¦  «        S r‚   ©r²  rƒ   s     r*   r…   z"SpeechT5TextDecoderPostnet.forward9  s   € Ø�|Š|˜MÑ*Ô*Ð*r,   c                 ó   — | j         S r‚   r´  rF  s    r*   Úget_output_embeddingsz0SpeechT5TextDecoderPostnet.get_output_embeddings<  s   € ð Œ|Ðr,   c                 ó   — || _         d S r‚   r´  ©r}   Únew_embeddingss     r*   Úset_output_embeddingsz0SpeechT5TextDecoderPostnet.set_output_embeddingsA  s   € Ø%ˆŒˆˆr,   )
rˆ   r‰   rŠ   rq   r¹   rØ   r…   r¶  rº  r‹   rŒ   s   @r*   r¯  r¯  3  sx   ø€ € € € € ðTð Tð Tð Tð Tð
+ U¤\ð +ð +ð +ð +ðð ð ð
&ð &ð &ð &ð &ð &ð &r,   r¯  c                   ó   ‡ — e Zd ZdZ	 	 	 	 ddedededz  d	edz  d
edz  dedz  fˆ fd„Z	 	 	 	 	 ddej	        dej	        dz  de
dz  dej	        dz  dej	        dz  dedeej	        ej	        dz  e
dz  f         fd„Zˆ xZS )ÚSpeechT5Attentionz“
    Multi-headed attention from 'Attention Is All You Need' paper with relative position bias (see
    https://aclanthology.org/N18-2074.pdf)
    r2   FTNÚ	embed_dimÚ	num_headsrü   Ú
is_decoderro   Ú	layer_idxc                 óü  •— 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).g      à¿r±  )rp   rq   r½  r¾  rü   Úhead_dimr'   Úscalingr¿  rÀ  r   r3  Úk_projÚv_projÚq_projÚout_proj)r}   r½  r¾  rü   r¿  ro   rÀ  r€   s          €r*   rq   zSpeechT5Attention.__init__K  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ˆŒˆˆr,   r„   Úkey_value_statesr©  r/   Úposition_biasÚoutput_attentionsr8   c                 ó¾
  — |du}|                      ¦   «         \  }	}
}|                      |¦  «        | j        z  }d}|�Ht          |t          ¦  «        r1|j                             | j        ¦  «        }|r|j        }n
|j	        }n|}|r|n|}|r3|�1|r/|j
        | j                 j        }|j
        | j                 j        }nÝ|                      |¦  «        }|                      |¦  «        }|                     |	d| j        | j        ¦  «                             dd¦  «        }|                     |	d| j        | j        ¦  «                             dd¦  «        }|�E|                     ||| j        ¦  «        \  }}|r$t          |t          ¦  «        rd|j        | j        <   |	| j        z  d| j        f}|                     |	|
| j        | j        ¦  «                             dd¦  «        } |j        |Ž } |j        |Ž } |j        |Ž }|                      d¦  «        }t+          j        ||                     dd¦  «        ¦  «        }|                      ¦   «         |	| j        z  |
|fk    r2t/          d|	| j        z  |
|f› d|                      ¦   «         › �¦  «        ‚|�Ñ|                     ¦   «                              |	| j        z  d| j        ¦  «                             d	d¦  «        }t+          j        ||                     d
d¦  «        ¦  «        }|                     d	d¦  «                             |	| j        z  |                      d	¦  «        |                      d¦  «        ¦  «        }||z  }|�†|                      ¦   «         |	d|
|fk    r+t/          d|	d|
|f› d|                      ¦   «         › �¦  «        ‚|                     |	| j        |
|¦  «        |z   }|                     |	| j        z  |
|¦  «        }t4          j                             |d¬¦  «        }|r=|                     |	| j        |
|¦  «        }|                     |	| j        z  |
|¦  «        }nd}t4          j                             || j        | j        ¬¦  «        }t+          j        ||¦  «        }|                      ¦   «         |	| j        z  |
| j        fk    r5t/          d|	| j        |
| j        f› d|                      ¦   «         › �¦  «        ‚|                     |	| j        |
| j        ¦  «        }|                     dd¦  «        }|                     |	|
| j        ¦  «        }|                       |¦  «        }||fS )z#Input shape: Batch x Time x ChannelNFr#   r   r¥   Tz$Attention weights should be of size z	, but is r   r”   z!Attention mask should be of size rµ   )rù   r+  z `attn_output` should be of size )!rÇ   rÆ  rÃ  Ú
isinstancer   Ú
is_updatedÚgetrÀ  Úcross_attention_cacheÚself_attention_cacherq  ÚkeysÚvaluesrÄ  rÅ  rÁ   r¾  rÂ  r•   Úupdater^   r¹   Úbmmr'   Ú
contiguousÚmatmulr   r  Úsoftmaxrü   r+  r½  rÇ  )r}   r„   rÈ  r©  r/   rÉ  rÊ  ÚkwargsÚis_cross_attentionrÊ   Útgt_lenrF   Úquery_statesrÍ  Úcurr_past_key_valuesÚcurrent_statesÚ
key_statesÚvalue_statesÚ
proj_shapeÚsrc_lenÚattn_weightsÚ	reshape_qÚrel_pos_biasÚattn_weights_reshapedÚ
attn_probsÚattn_outputs                             r*   r…   zSpeechT5Attention.forwardh  s©  € ð .°TÐ9Ðà'×,Ò,Ñ.Ô.‰ˆˆW�að —{’{ =Ñ1Ô1°D´LÑ@ˆàˆ
ØÐ&Ý˜/Õ+>Ñ?Ô?ð 7Ø,Ô7×;Ò;¸D¼NÑKÔK�
Ø%ð Pà+:Ô+PÐ(Ð(à+:Ô+OÐ(Ð(à'6Ð$à-?ÐRÐ)Ð)À]ˆØð 	F /Ð"=À*Ð"=à-Ô4°T´^ÔDÔIˆJØ/Ô6°t´~ÔFÔMˆLˆLàŸš ^Ñ4Ô4ˆJØŸ;š; ~Ñ6Ô6ˆLØ#Ÿš¨¨b°$´.À$Ä-ÑPÔP×ZÒZÐ[\Ð^_Ñ`Ô`ˆJØ'×,Ò,¨S°"°d´nÀdÄmÑTÔT×^Ò^Ð_`ÐbcÑdÔdˆLàÐ*à+?×+FÒ+FÀzÐS_ÐaeÔaoÑ+pÔ+pÑ(�
˜Là%ð F­*°_ÕFYÑ*ZÔ*Zð FØAE�OÔ.¨t¬~Ñ>à˜DœNÑ*¨B°´Ð>ˆ
Ø#×(Ò(¨¨g°t´~ÀtÄ}ÑUÔU×_Ò_Ð`aÐcdÑeÔeˆØ+�|Ô+¨ZÐ8ˆØ'�ZÔ'¨Ð4ˆ
Ø+�|Ô+¨ZÐ8ˆà—/’/ !Ñ$Ô$ˆÝ”y ¨z×/CÒ/CÀAÀqÑ/IÔ/IÑJÔJˆà×ÒÑÔ 3¨¬Ñ#7¸À'Ð"JÒJÐJÝð*¸¸d¼nÑ8LÈgÐW^Ð7_ð *ð *Ø ×%Ò%Ñ'Ô'ð*ð *ñô ð ð Ð$Ø$×/Ò/Ñ1Ô1×6Ò6°s¸T¼^Ñ7KÈRÐQUÔQ^Ñ_Ô_×iÒiÐjkÐmnÑoÔoˆIÝ œ<¨	°=×3JÒ3JÈ2ÈrÑ3RÔ3RÑSÔSˆLØ'×1Ò1°!°QÑ7Ô7×<Ò<Ø�d”nÑ$ m×&8Ò&8¸Ñ&;Ô&;¸]×=OÒ=OÐPQÑ=RÔ=Rñô ˆLð ˜LÑ(ˆLàÐ%Ø×"Ò"Ñ$Ô$¨¨a°¸'Ð(BÒBÐBÝ Øt¸¸aÀÈ'Ð8RÐtÐtÐ]k×]pÒ]pÑ]rÔ]rÐtÐtñô ð ð (×,Ò,¨S°$´.À'È7ÑSÔSÐVdÑdˆLØ'×,Ò,¨S°4´>Ñ-AÀ7ÈGÑTÔTˆLå”}×,Ò,¨\¸rÐ,ÑBÔBˆàð 	)ð
 %1×$5Ò$5°c¸4¼>È7ÐT[Ñ$\Ô$\Ð!Ø0×5Ò5°c¸D¼NÑ6JÈGÐU\Ñ]Ô]ˆLˆLà$(Ð!å”]×*Ò*¨<¸4¼<ÐRVÔR_Ð*Ñ`Ô`ˆ
å”i 
¨LÑ9Ô9ˆà×ÒÑÔ #¨¬Ñ"6¸ÀÄÐ!OÒOÐOÝð)°C¸¼ÈÐRVÔR_Ð3`ð )ð )Ø×$Ò$Ñ&Ô&ð)ð )ñô ð ð
 "×&Ò& s¨D¬N¸GÀTÄ]ÑSÔSˆØ!×+Ò+¨A¨qÑ1Ô1ˆð "×)Ò)¨#¨w¸¼ÑGÔGˆà—m’m KÑ0Ô0ˆàÐ1Ð1Ð1r,   )r2   FTN)NNNNF)rˆ   r‰   rŠ   rÕ   r<   r¼   rT   rq   r¹   rØ   r
   Útupler…   r‹   rŒ   s   @r*   r¼  r¼  E  sd  ø€ € € € € ðð ð !$Ø"'Ø Ø!%ðCð CàðCð ðCð ˜‘ð	Cð
 ˜4‘KðCð �T‰kðCð ˜$‘;ðCð Cð Cð Cð Cð Cð@ 15Ø(,Ø.2Ø-1Ø"'ðr2ð r2à”|ðr2ð  œ,¨Ñ-ðr2ð  ™ð	r2ð
 œ tÑ+ðr2ð ”| dÑ*ðr2ð  ðr2ð 
ˆuŒ|˜Uœ\¨DÑ0°%¸$±,Ð>Ô	?ðr2ð r2ð r2ð r2ð r2ð r2ð r2ð r2r,   r¼  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚSpeechT5FeedForwardc                 ó¸  •— t          ¦   «                              ¦   «          t          j        |j        ¦  «        | _        t          j        |j        |¦  «        | _        t          |j
        t          ¦  «        rt          |j
                 | _        n|j
        | _        t          j        ||j        ¦  «        | _        t          j        |j        ¦  «        | _        d S r‚   )rp   rq   r   rû   Úactivation_dropoutÚintermediate_dropoutr3  rã   Úintermediate_denserÌ  Ú
hidden_actÚstrr	   Úintermediate_act_fnÚoutput_denseÚhidden_dropoutÚoutput_dropout)r}   r~   Úintermediate_sizer€   s      €r*   rq   zSpeechT5FeedForward.__init__Þ  s¬   ø€ Ý‰Œ×ÒÑÔÐÝ$&¤J¨vÔ/HÑ$IÔ$IˆÔ!å"$¤)¨FÔ,>Ð@QÑ"RÔ"RˆÔÝ�fÔ'­Ñ-Ô-ð 	9Ý'-¨fÔ.?Ô'@ˆDÔ$Ð$à'-Ô'8ˆDÔ$åœIÐ&7¸Ô9KÑLÔLˆÔÝ œj¨Ô)>Ñ?Ô?ˆÔÐÐr,   c                 óØ   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|S r‚   )rî  rñ  rí  rò  rô  rƒ   s     r*   r…   zSpeechT5FeedForward.forwardë  sg   € Ø×/Ò/°Ñ>Ô>ˆØ×0Ò0°Ñ?Ô?ˆØ×1Ò1°-Ñ@Ô@ˆà×)Ò)¨-Ñ8Ô8ˆØ×+Ò+¨MÑ:Ô:ˆØÐr,   r‡   rŒ   s   @r*   rê  rê  Ý  sL   ø€ € € € € ð@ð @ð @ð @ð @ðð ð ð ð ð ð r,   rê  c            	       ón   ‡ — e Zd Zdefˆ fd„Z	 	 	 d
dej        dej        dz  dej        dz  defd	„Zˆ xZ	S )ÚSpeechT5EncoderLayerr~   c                 óš  •— t          ¦   «                              ¦   «          t          |j        |j        |j        d¬¦  «        | _        t          j        |j	        ¦  «        | _
        t          j        |j        |j        ¬¦  «        | _        t          ||j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        d S )NF)r½  r¾  rü   r¿  r0  )rp   rq   r¼  rã   Úencoder_attention_headsÚattention_dropoutÚ	attentionr   rû   ró  rü   r‘   r2  r’   rê  Úencoder_ffn_dimÚfeed_forwardÚfinal_layer_normr6  s     €r*   rq   zSpeechT5EncoderLayer.__init__ö  s®   ø€ Ý‰Œ×ÒÑÔÐÝ*ØÔ(ØÔ4ØÔ,Øð	
ñ 
ô 
ˆŒõ ”z &Ô"7Ñ8Ô8ˆŒÝœ, vÔ'9¸vÔ?TÐUÑUÔUˆŒÝ/°¸Ô8NÑOÔOˆÔÝ "¤¨VÔ-?ÀVÔEZÐ [Ñ [Ô [ˆÔÐÐr,   NFr„   r/   rÉ  rÊ  c                 ó  — |}|                       ||||¬¦  «        \  }}|                      |¦  «        }||z   }|                      |¦  «        }||                      |¦  «        z   }|                      |¦  «        }|f}|r||fz  }|S )aÙ  
        Args:
            hidden_states (`torch.FloatTensor`):
                input to the layer of shape `(batch, seq_len, hidden_size)`
            attention_mask (`torch.FloatTensor`):
                attention mask of size `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very
                large negative values.
            position_bias (`torch.FloatTensor`):
                relative position embeddings of size `(seq_len, seq_len, hidden_size // encoder_attention_heads)`
            output_attentions (`bool`, *optional*):
                Whether or not to return the attentions tensors of all attention layers. See `attentions` under
                returned tensors for more detail.
        )r„   r/   rÉ  rÊ  )rü  rü   r’   rþ  rÿ  )r}   r„   r/   rÉ  rÊ  Úresidualrâ  Úoutputss           r*   r…   zSpeechT5EncoderLayer.forward  s¬   € ð( !ˆØ&*§n¢nØ'Ø)Ø'Ø/ð	 '5ñ '
ô '
Ñ#ˆ�|ð Ÿš ]Ñ3Ô3ˆØ  =Ñ0ˆàŸš¨Ñ6Ô6ˆØ%¨×(9Ò(9¸-Ñ(HÔ(HÑHˆØ×-Ò-¨mÑ<Ô<ˆà Ð"ˆàð 	'Ø˜�Ñ&ˆGàˆr,   )NNF)
rˆ   r‰   rŠ   r   rq   r¹   rØ   rT   r…   r‹   rŒ   s   @r*   rø  rø  õ  s¥   ø€ € € € € ð\˜~ð \ð \ð \ð \ð \ð \ð  /3Ø-1Ø"'ð(ð (à”|ð(ð œ tÑ+ð(ð ”| dÑ*ð	(ð
  ð(ð (ð (ð (ð (ð (ð (ð (r,   rø  c                   ó¤   ‡ — e Zd Zddefˆ fd„Z	 	 	 	 	 	 ddej        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  fd„Z	ˆ xZ
S )ÚSpeechT5DecoderLayerNr~   c                 ó6  •— t          ¦   «                              ¦   «          t          |j        |j        |j        d|¬¦  «        | _        t          j        |j	        ¦  «        | _
        t          j        |j        |j        ¬¦  «        | _        t          |j        |j        |j        d|¬¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t!          ||j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        d S )NT)r½  r¾  rü   r¿  rÀ  r0  )rü   r¿  rÀ  )rp   rq   r¼  rã   Údecoder_attention_headsrû  Ú	self_attnr   rû   ró  rü   r‘   r2  Úself_attn_layer_normÚencoder_attnÚencoder_attn_layer_normrê  Údecoder_ffn_dimrþ  rÿ  )r}   r~   rÀ  r€   s      €r*   rq   zSpeechT5DecoderLayer.__init__/  s   ø€ Ý‰Œ×ÒÑÔÐÝ*ØÔ(ØÔ4ØÔ,ØØð
ñ 
ô 
ˆŒõ ”z &Ô"7Ñ8Ô8ˆŒÝ$&¤L°Ô1CÈÔI^Ð$_Ñ$_Ô$_ˆÔ!å-ØÔØÔ*ØÔ,ØØð
ñ 
ô 
ˆÔõ (*¤|°FÔ4FÈFÔLaÐ'bÑ'bÔ'bˆÔ$å/°¸Ô8NÑOÔOˆÔÝ "¤¨VÔ-?ÀVÔEZÐ [Ñ [Ô [ˆÔÐÐr,   FTr„   r/   Úencoder_hidden_statesÚencoder_attention_maskr©  rÊ  Ú	use_cachec                 ó¶  — |}	|                       ||||¬¦  «        \  }}
|                      |¦  «        }|	|z   }|                      |¦  «        }d}|�N|}	|                      |||||¬¦  «        \  }}|                      |¦  «        }|	|z   }|                      |¦  «        }||                      |¦  «        z   }|                      |¦  «        }|f}|r||
|fz  }|S )aÊ  
        Args:
            hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, hidden_size)`
            attention_mask (`torch.FloatTensor`): attention mask of size
                `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values.
            encoder_hidden_states (`torch.FloatTensor`):
                cross attention input to the layer of shape `(batch, seq_len, hidden_size)`
            encoder_attention_mask (`torch.FloatTensor`): encoder attention mask of size
                `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values.
            past_key_values (`Cache`): cached past key and value projection states
            output_attentions (`bool`, *optional*):
                Whether or not to return the attentions tensors of all attention layers. See `attentions` under
                returned tensors for more detail.
        )r„   r©  r/   rÊ  N)r„   rÈ  r/   r©  rÊ  )r  rü   r  r	  r
  rþ  rÿ  )r}   r„   r/   r  r  r©  rÊ  r  rØ  r  Úself_attn_weightsÚcross_attn_weightsr  s                r*   r…   zSpeechT5DecoderLayer.forwardG  s+  € ð2 !ˆð ,0¯>ª>Ø'Ø+Ø)Ø/ð	 ,:ñ ,
ô ,
Ñ(ˆÐ(ð Ÿš ]Ñ3Ô3ˆØ  =Ñ0ˆØ×1Ò1°-Ñ@Ô@ˆð "ÐØ Ð,Ø$ˆHà04×0AÒ0AØ+Ø!6Ø5Ø /Ø"3ð 1Bñ 1ô 1Ñ-ˆMÐ-ð !ŸLšL¨Ñ7Ô7ˆMØ$ }Ñ4ˆMØ ×8Ò8¸ÑGÔGˆMð &¨×(9Ò(9¸-Ñ(HÔ(HÑHˆØ×-Ò-¨mÑ<Ô<ˆà Ð"ˆàð 	?ØÐ)Ð+=Ð>Ñ>ˆGàˆr,   r‚   )NNNNFT)rˆ   r‰   rŠ   r   rq   r¹   rØ   r
   rT   r…   r‹   rŒ   s   @r*   r  r  .  så   ø€ € € € € ð\ð \˜~ð \ð \ð \ð \ð \ð \ð6 /3Ø59Ø6:Ø(,Ø).Ø!%ð?ð ?à”|ð?ð œ tÑ+ð?ð  %œ|¨dÑ2ð	?ð
 !&¤¨tÑ 3ð?ð  ™ð?ð   $™;ð?ð ˜$‘;ð?ð ?ð ?ð ?ð ?ð ?ð ?ð ?r,   r  c                   ót   ‡ — e Zd ZU eed<   dZdZdZdZ e	j
        ¦   «         dej        fˆ fd„¦   «         Zˆ xZS )ÚSpeechT5PreTrainedModelr~   Úspeecht5r-   ÚaudioTÚmodulec           
      óè  •— t          ¦   «                              |¦  «         t          |t          ¦  «        rwt	          j        |j        j        ddt          j	        d|j        j
        d         |j        j        z  z  ¦  «        z  ¬¦  «         t	          j        |j        j        d¦  «         �nt          |t          ¦  «        �rZt	          j        |j        ¦  «         |j        |j        }}t'          j        ||¦  «        }t'          j        d|¦  «                             d¦  «        }t'          j        t'          j        d|dt&          j        ¬¦  «                             ¦   «         t          j        d¦  «        |z   z  ¦  «        }t'          j        |                     ¦   «         |z  ¦  «        |dd…ddd…f<   t'          j        |                     ¦   «         |z  ¦  «        |dd…ddd…f<   |                     d¦  «        }t	          j        |j        |¦  «         �n¨t          |t>          ¦  «        rgt          j	        d|j         j!        z  ¦  «        }t	          j"        |j         j        | |¬¦  «         t	          j"        |j         j        | |¬¦  «         �n,t          |tF          j$        ¦  «        rmt	          j%        |j        ¦  «         |j        �Lt          j	        |j&        |j        |j
        d         z  z  ¦  «        }t	          j"        |j        | |¬¦  «         n¥t          |tN          ¦  «        rI| (                    |j)        |j*        z   |j+        |j,        ¦  «        }t	          j        |j-        |¦  «         nGt          |t\          ¦  «        r2t	          j/        |j0        ¦  «         t	          j        |j1        ¦  «         te          |d	¦  «        rt	          j"        |j3        ¦  «         dS dS )
zInitialize the weightsr   r¥   r   )ÚmeanÚstdrH   rö   N)ÚaÚbrA  )4rp   Ú_init_weightsrÌ  rÚ   ÚinitÚnormal_ry   rà   r·   r¦  rm   Úin_channelsÚ	constant_ro   ró   Úones_r   r¶   rý   r¹   rS   rV   r½   rº   r»   r¼   r¸   r¿   rÀ   Úcopy_r÷   r.  r4  Úin_featuresr@  r   ru   Úkaiming_normal_rÝ   rŸ   r¯   r    r¦   r¡   r¢   rª   ÚSpeechT5HifiGanÚzeros_r  Úscaler°   rA  )
r}   r  r¶   rý   r÷   r  r  Úkr³   r€   s
            €r*   r  z%SpeechT5PreTrainedModel._init_weights‘  sr  ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ=Ñ>Ô>ð !	%ÝŒLØ”Ô"ØØ�œ	 ! v¤{Ô'>¸qÔ'AÀFÄKÔD[Ñ'[Ñ"\Ñ]Ô]Ñ]ðñ ô ð õ
 ŒN˜6œ;Ô+¨QÑ/Ô/Ð/Ñ/Ý˜Õ @ÑAÔAñ 	%ÝŒJ�v”|Ñ$Ô$Ð$Ø!œ: v¤~�ˆCÝ”˜W cÑ*Ô*ˆBÝ”| A wÑ/Ô/×9Ò9¸!Ñ<Ô<ˆHÝ”y¥¤¨a°°a½u¼{Ð!KÑ!KÔ!K×!QÒ!QÑ!SÔ!SÕX\ÔX`ÐahÑXiÔXiÐloÑXoÐVpÑ!pÑqÔqˆHÝœ) H§N¢NÑ$4Ô$4°xÑ$?Ñ@Ô@ˆBˆqˆqˆq�!�$�Q�$ˆw‰KÝœ) H§N¢NÑ$4Ô$4°xÑ$?Ñ@Ô@ˆBˆqˆqˆq�!�$�Q�$ˆw‰KØ—’˜a‘”ˆBÝŒJ�v”y "Ñ%Ô%Ð%Ñ%Ý˜Õ 9Ñ:Ô:ð 	%Ý”	˜!˜fÔ/Ô;Ñ;Ñ<Ô<ˆAÝŒM˜&Ô+Ô2°q°b¸AÐ>Ñ>Ô>Ð>ÝŒM˜&Ô+Ô0°Q°B¸!Ð<Ñ<Ô<Ð<Ñ<Ý˜¥¤	Ñ*Ô*ð 	%ÝÔ  ¤Ñ/Ô/Ð/ØŒ{Ð&Ý”I˜fœm¨vÔ/AÀFÔDVÐWXÔDYÑ/YÑZÑ[Ô[�Ý”˜fœk¨a¨R°1Ð5Ñ5Ô5Ð5øÝ˜Õ EÑFÔFð 	%Ø ×.Ò.ØÔ$ v¤}Ñ4°fÔ6JÈFÔL^ñô ˆKõ ŒJ�v”~ {Ñ3Ô3Ð3Ð3Ý˜¥Ñ0Ô0ð 	%ÝŒK˜œÑ$Ô$Ð$ÝŒJ�v”|Ñ$Ô$Ð$å�6Ð.Ñ/Ô/ð 	4ÝŒM˜&Ô2Ñ3Ô3Ð3Ð3Ð3ð	4ð 	4r,   )rˆ   r‰   rŠ   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingr¹   r×   r   ÚModuler  r‹   rŒ   s   @r*   r  r  ‰  s}   ø€ € € € € € àÐÐÑØ"ÐØ$€OØÐØ&*Ð#à€U„]�_„_ð'4 B¤Ið '4ð '4ð '4ð '4ð '4ñ „_ð'4ð '4ð '4ð '4ð '4r,   r  c                   ó„   ‡ — e Zd ZdZdefˆ fd„Z	 	 	 	 ddej        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 )ÚSpeechT5Encoderzu
    Transformer encoder consisting of *config.encoder_layers* layers. Each layer is a [`SpeechT5EncoderLayer`].
    r~   c                 óÜ  •‡— t          ¦   «                              ‰¦  «         t          j        ‰j        ‰j        ¬¦  «        | _        t          j        ‰j        ¦  «        | _	        ‰j
        | _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        t!          ‰j        ‰j        z  ‰j        ¦  «        | _        d| _        |                      ¦   «          d S )Nr0  c                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS rD   )rø  )rE   rF   r~   s     €r*   rG   z,SpeechT5Encoder.__init__.<locals>.<listcomp>Ç  s"   ø€ Ð$hÐ$hÐ$hÀaÕ%9¸&Ñ%AÔ%AÐ$hÐ$hÐ$hr,   F)rp   rq   r   r‘   rã   r2  r’   rû   ró  rü   Úencoder_layerdropÚ	layerdropr   rR   Úencoder_layersrq  r  rú  Úencoder_max_relative_positionr¨  r"  Ú	post_initr6  s    `€r*   rq   zSpeechT5Encoder.__init__Á  sÏ   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ýœ, vÔ'9¸vÔ?TÐUÑUÔUˆŒÝ”z &Ô"7Ñ8Ô8ˆŒØÔ1ˆŒå”mÐ$hÐ$hÐ$hÐ$hÍ5ÐQWÔQfÑKgÔKgÐ$hÑ$hÔ$hÑiÔiˆŒåAØÔ &Ô"@Ñ@À&ÔBfñ 
ô  
ˆÔð ',ˆÔ#ð 	�ŠÑÔÐÐÐr,   Nr„   r/   rÊ  Úoutput_hidden_statesÚreturn_dictr8   c                 ó¾  — |�|n| j         j        }|�|n| j         j        }|�|n| j         j        }t	          | j         ||¬¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }t          ¦   «         pt          | ¦  «        }|rdnd}	|rdnd}
t          | j        ¦  «        D ]b\  }}|r|	|fz   }	d}| j        rt          j        g ¦  «        }|| j        k     }|r|r |||||¬¦  «        }|d         }|rd}|r|
|d         fz   }
Œc|r|	|fz   }	|st!          d	„ ||	|
fD ¦   «         ¦  «        S t#          ||	|
¬
¦  «        S )a«  
        Args:
            hidden_states (`torch.FloatTensor` of shape `(batch_size, sequence_length, feature_size)`):
                Features extracted from the speech or text input by the encoder prenet.
            attention_mask (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*):
                Mask to avoid performing convolution and attention on padding token indices. Mask values selected in
                `[0, 1]`:

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

                [What are attention masks?](../glossary#attention-mask)
            output_attentions (`bool`, *optional*):
                Whether or not to return the attentions tensors of all attention layers. See `attentions` under
                returned tensors for more detail.
            output_hidden_states (`bool`, *optional*):
                Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors
                for more detail.
            return_dict (`bool`, *optional*):
                Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
        N)r~   rz  r/   rD   F)r/   rÉ  rÊ  r   rg  r   c              3   ó   K  — | ]}|®|V — Œ	d S r‚   rD   ©rE   Úvs     r*   ú	<genexpr>z*SpeechT5Encoder.forward.<locals>.<genexpr>$  s(   è è € ÐmÐm˜qÐ_`Ð_l˜Ð_lÐ_lÐ_lÐ_lÐmÐmr,   ©Úlast_hidden_stater„   Ú
attentions)r~   rÊ  r8  r9  r   r’   rü   r¨  r   r   Ú	enumeraterq  r+  r¹   rM   r4  rè  r   )r}   r„   r/   rÊ  r8  r9  rØ  rÉ  Úsynced_gpusÚall_hidden_statesÚall_self_attentionsÚidxÚencoder_layerÚskip_the_layerÚdropout_probabilityÚlayer_outputss                   r*   r…   zSpeechT5Encoder.forwardÒ  s  € ð< 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆå2Ø”;Ø'Ø)ð
ñ 
ô 
ˆð Ÿš¨Ñ6Ô6ˆØŸš ]Ñ3Ô3ˆà×,Ò,¨]Ñ;Ô;ˆå0Ñ2Ô2ÐRÕ6LÈTÑ6RÔ6Rˆà"6Ð@˜B˜B¸DÐØ$5Ð?˜b˜b¸4Ðå"+¨D¬KÑ"8Ô"8ð 	Pð 	PÑˆC�Ø#ð IØ$5¸Ð8HÑ$HÐ!ð #ˆNØŒ}ð FÝ&+¤j°¡n¤nÐ#Ø!4°t´~Ò!E�à!ð 1 [ð 1à - Ø!Ø#1Ø"/Ø&7ð	!ñ !ô !�ð !.¨aÔ 0�àð -Ø ,�à ð PØ&9¸]È1Ô=MÐ<OÑ&OÐ#øàð 	EØ 1°]Ð4DÑ DÐàð 	nÝÐmÐm ]Ð4EÐGZÐ$[ÐmÑmÔmÑmÔmÐmåØ+Ø+Ø*ð
ñ 
ô 
ð 	
r,   ©NNNN©rˆ   r‰   rŠ   rÕ   r   rq   r¹   ri  rØ   rT   rè  r   r…   r‹   rŒ   s   @r*   r0  r0  ¼  sÙ   ø€ € € € € ðð ð˜~ð ð ð ð ð ð ð( /3Ø)-Ø,0Ø#'ðX
ð X
àÔ(ðX
ð œ tÑ+ðX
ð   $™;ð	X
ð
 # T™kðX
ð ˜D‘[ðX
ð 
�Ñ	 ðX
ð X
ð X
ð X
ð X
ð X
ð X
ð X
r,   r0  c                   ó„   ‡ — e Zd ZdZdefˆ fd„Z	 	 	 	 ddej        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 )ÚSpeechT5EncoderWithSpeechPrenetzŒ
    Wrapper around SpeechT5Encoder that applies SpeechT5SpeechEncoderPrenet to convert the audio waveform data to
    hidden features.
    r~   c                 óÂ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        |                      ¦   «          d S r‚   )rp   rq   r:  Úprenetr0  Úwrapped_encoderr7  r6  s     €r*   rq   z(SpeechT5EncoderWithSpeechPrenet.__init__3  óR   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý1°&Ñ9Ô9ˆŒÝ.¨vÑ6Ô6ˆÔð 	�ŠÑÔÐÐÐr,   Nr-   r/   rÊ  r8  r9  r8   c                 ól   — |                       ||¦  «        \  }}|                      |||||¬¦  «        }|S ©N)r„   r/   rÊ  r8  r9  ©rP  rQ  ©	r}   r-   r/   rÊ  r8  r9  rØ  r„   r  s	            r*   r…   z'SpeechT5EncoderWithSpeechPrenet.forward;  sL   € ð )-¯ª°LÀ.Ñ(QÔ(QÑ%ˆ�~à×&Ò&Ø'Ø)Ø/Ø!5Ø#ð 'ñ 
ô 
ˆð ˆr,   rK  rL  rŒ   s   @r*   rN  rN  -  sÊ   ø€ € € € € ðð ð
˜~ð ð ð ð ð ð ð /3Ø)-Ø,0Ø#'ðð àÔ'ðð œ tÑ+ðð   $™;ð	ð
 # T™kðð ˜D‘[ðð 
�Ñ	 ðð ð ð ð ð ð ð r,   rN  c                   ó�   ‡ — e Zd ZdZdefˆ fd„Zd„ Zd„ Z	 	 	 	 ddej	        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 )ÚSpeechT5EncoderWithTextPrenetz|
    Wrapper around SpeechT5Encoder that applies SpeechT5TextEncoderPrenet to convert the input_ids to hidden features.
    r~   c                 óÂ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        |                      ¦   «          d S r‚   )rp   rq   rœ  rP  r0  rQ  r7  r6  s     €r*   rq   z&SpeechT5EncoderWithTextPrenet.__init__V  óR   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý/°Ñ7Ô7ˆŒÝ.¨vÑ6Ô6ˆÔð 	�ŠÑÔÐÐÐr,   c                 ó4   — | j                              ¦   «         S r‚   ©rP  Úget_input_embeddingsrF  s    r*   r]  z2SpeechT5EncoderWithTextPrenet.get_input_embeddings^  ó   € ØŒ{×/Ò/Ñ1Ô1Ð1r,   c                 ó:   — | j                              |¦  «         d S r‚   ©rP  Úset_input_embeddings©r}   Úvalues     r*   ra  z2SpeechT5EncoderWithTextPrenet.set_input_embeddingsa  ó   € ØŒ×(Ò(¨Ñ/Ô/Ð/Ð/Ð/r,   Nr-   r/   rÊ  r8  r9  r8   c                 ód   — |                       |¦  «        }|                      |||||¬¦  «        }|S rT  rU  rV  s	            r*   r…   z%SpeechT5EncoderWithTextPrenet.forwardd  sE   € ð Ÿš LÑ1Ô1ˆà×&Ò&Ø'Ø)Ø/Ø!5Ø#ð 'ñ 
ô 
ˆð ˆr,   rK  )rˆ   r‰   rŠ   rÕ   r   rq   r]  ra  r¹   ri  rØ   rT   rè  r   r…   r‹   rŒ   s   @r*   rX  rX  Q  sè   ø€ € € € € ðð ð˜~ð ð ð ð ð ð ð2ð 2ð 2ð0ð 0ð 0ð /3Ø)-Ø,0Ø#'ðð àÔ'ðð œ tÑ+ðð   $™;ð	ð
 # T™kðð ˜D‘[ðð 
�Ñ	 ðð ð ð ð ð ð ð r,   rX  c                   ó„   ‡ — e Zd ZdZdefˆ fd„Z	 	 	 	 ddej        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 )ÚSpeechT5EncoderWithoutPrenetúŒ
    This wrapper class is a helper class to correctly load pretrained checkpoints when used in combination with
    [`SpeechT5Model`].
    r~   c                 óš   •— t          ¦   «                              |¦  «         t          |¦  «        | _        |                      ¦   «          d S r‚   )rp   rq   r0  rQ  r7  r6  s     €r*   rq   z%SpeechT5EncoderWithoutPrenet.__init__€  óC   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý.¨vÑ6Ô6ˆÔð 	�ŠÑÔÐÐÐr,   Nr-   r/   rÊ  r8  r9  r8   c                 ó6   — |                       |||||¬¦  «        S rT  )rQ  )r}   r-   r/   rÊ  r8  r9  rØ  s          r*   r…   z$SpeechT5EncoderWithoutPrenet.forward‡  s0   € ð ×#Ò#Ø&Ø)Ø/Ø!5Ø#ð $ñ 
ô 
ð 	
r,   rK  rL  rŒ   s   @r*   rg  rg  z  sÊ   ø€ € € € € ðð ð
˜~ð ð ð ð ð ð ð /3Ø)-Ø,0Ø#'ð
ð 
àÔ'ð
ð œ tÑ+ð
ð   $™;ð	
ð
 # T™kð
ð ˜D‘[ð
ð 
�Ñ	 ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r,   rg  c                   óÐ   ‡ — e Zd ZdZdefˆ fd„Z	 	 	 	 	 	 	 	 	 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
dz  de
dz  deez  fd„Zˆ xZS )ÚSpeechT5Decoderzt
    Transformer decoder consisting of *config.decoder_layers* layers. Each layer is a [`SpeechT5DecoderLayer`]
    r~   c                 ó  •‡— t          ¦   «                              ‰¦  «         ‰j        | _        t	          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _	        |  
                    ¦   «          d S )Nc                 ó2   •— g | ]}t          ‰|¬ ¦  «        ‘ŒS ))rÀ  )r  r  s     €r*   rG   z,SpeechT5Decoder.__init__.<locals>.<listcomp>¢  s(   ø€ Ð$uÐ$uÐ$uÐSTÕ%9¸&ÈAÐ%NÑ%NÔ%NÐ$uÐ$uÐ$ur,   F)rp   rq   Údecoder_layerdropr4  r   r   rR   Údecoder_layersrq  r"  r7  r6  s    `€r*   rq   zSpeechT5Decoder.__init__ž  sy   øø€ Ý‰Œ×Ò˜Ñ Ô Ð ØÔ1ˆŒå”mÐ$uÐ$uÐ$uÐ$uÕX]Ð^dÔ^sÑXtÔXtÐ$uÑ$uÔ$uÑvÔvˆŒà&+ˆÔ#ð 	�ŠÑÔÐÐÐr,   Nr„   r/   r  r  r©  r  rÊ  r8  r9  r8   c
           
      óš  — |�|n| j         j        }|�|n| j         j        }|�|n| j         j        }|	�|	n| j         j        }	| j        r%| j        r|rt                               d¦  «         d}|r8|€6t          t          | j         ¬¦  «        t          | j         ¬¦  «        ¦  «        }t          | j         |||¬¦  «        }|�|�t          | j         |||¬¦  «        }t          ¦   «         pt          | ¦  «        }|rdnd}|rdnd}|r|�dnd}t          | j        ¦  «        D ]p\  }}|r||fz   }d}| j        rt#          j        g ¦  «        }|| j        k     }|r|sŒ: ||||||||¬¦  «        }|d	         }|r||d
         fz   }|�||d         fz   }Œq|r||fz   }|	st)          d„ |||||fD ¦   «         ¦  «        S t+          |||||¬¦  «        S )aQ  
        Args:
            hidden_states (`torch.FloatTensor` of shape `(batch_size, sequence_length, feature_size)`):
                Features extracted from the speech or text input by the decoder prenet.
            attention_mask (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
                Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`:

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

                [What are attention masks?](../glossary#attention-mask)
            encoder_hidden_states (`torch.FloatTensor` of shape `(batch_size, encoder_sequence_length, hidden_size)`, *optional*):
                Sequence of hidden-states at the output of the last layer of the encoder. Used in the cross-attention
                of the decoder.
            encoder_attention_mask (`torch.LongTensor` of shape `(batch_size, encoder_sequence_length)`, *optional*):
                Mask to avoid performing cross-attention on padding tokens indices of encoder input_ids. Mask values
                selected in `[0, 1]`:

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

                [What are attention masks?](../glossary#attention-mask)
            past_key_values (`Cache`, *optional*, returned when `use_cache=True` is passed or when `config.use_cache=True`):
                It is a [`~cache_utils.Cache`] instance. For more details, see our [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache).

                Contains pre-computed hidden-states (key and values in the self-attention blocks and in the
                cross-attention blocks) that can be used (see `past_key_values` input) to speed up sequential decoding.

                If `past_key_values` are used, the user can optionally input only the last `decoder_input_ids` (those
                that don't have their past key value states given to this model) of shape `(batch_size, 1)` instead of
                all `decoder_input_ids` of shape `(batch_size, sequence_length)`.
            inputs_embeds (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`, *optional*):
                Optionally, instead of passing `input_ids` you can choose to directly pass an embedded representation.
                This is useful if you want more control over how to convert `input_ids` indices into associated vectors
                than the model's internal embedding lookup matrix.
            output_attentions (`bool`, *optional*):
                Whether or not to return the attentions tensors of all attention layers. See `attentions` under
                returned tensors for more detail.
            output_hidden_states (`bool`, *optional*):
                Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors
                for more detail.
            return_dict (`bool`, *optional*):
                Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
        NzZ`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`...F)r~   )r~   rz  r/   r©  )r~   rz  r/   r  rD   )r  r©  rÊ  r  r   r   r¥   c              3   ó   K  — | ]}|®|V — Œ	d S r‚   rD   r<  s     r*   r>  z*SpeechT5Decoder.forward.<locals>.<genexpr>*  s0   è è € ð ð àØ�=ð à �=�=�=ðð r,   )r@  r©  r„   rA  Úcross_attentions)r~   rÊ  r8  r  r9  r"  r+  ÚloggerÚwarning_oncer   r   r   r   r   r   rB  rq  r¹   rM   r4  rè  r   )r}   r„   r/   r  r  r©  r  rÊ  r8  r9  rØ  rC  rD  rE  Úall_cross_attentionsrF  Údecoder_layerrH  rI  rJ  s                       r*   r…   zSpeechT5Decoder.forward©  sà  € ðr 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð "+Ð!6�I�I¸D¼KÔ<Qˆ	Ø%0Ð%<�k�kÀ$Ä+ÔBYˆàÔ&ð 	"¨4¬=ð 	"Øð "Ý×#Ò#Øpñô ð ð "�	àð 	v˜Ð0Ý1µ,ÀdÄkÐ2RÑ2RÔ2RÕT`ÐhlÔhsÐTtÑTtÔTtÑuÔuˆOå+Ø”;Ø'Ø)Ø+ð	
ñ 
ô 
ˆð !Ð,Ð1GÐ1SÝ%>Ø”{Ø+Ø5Ø&;ð	&ñ &ô &Ð"õ 1Ñ2Ô2ÐRÕ6LÈTÑ6RÔ6Rˆð #7Ð@˜B˜B¸DÐØ$5Ð?˜b˜b¸4ÐØ&7ÐhÐ<QÐ<]˜r˜rÐdhÐå"+¨D¬KÑ"8Ô"8ð 	Vð 	VÑˆC�Ø#ð IØ$5¸Ð8HÑ$HÐ!ð #ˆNØŒ}ð FÝ&+¤j°¡n¤nÐ#Ø!4°t´~Ò!E�Øð  kð Øà)˜MØØØ%Ø'=Ø /Ø"3Ø#ðñ ô ˆMð *¨!Ô,ˆMØ ð VØ&9¸]È1Ô=MÐ<OÑ&OÐ#à(Ð4Ø+?À=ÐQRÔCSÐBUÑ+UÐ(øàð 	EØ 1°]Ð4DÑ DÐàð 	Ýð ð à'¨Ð:KÐM`ÐbvÐwðñ ô ñ ô ð õ 9Ø+Ø+Ø+Ø*Ø1ð
ñ 
ô 
ð 	
r,   ©	NNNNNNNNN©rˆ   r‰   rŠ   rÕ   r   rq   r¹   ri  rh  r
   rT   rè  r   r…   r‹   rŒ   s   @r*   rm  rm  ™  s3  ø€ € € € € ðð ð	˜~ð 	ð 	ð 	ð 	ð 	ð 	ð 37Ø26Ø:>Ø:>Ø(,Ø!%Ø)-Ø,0Ø#'ðM
ð M
àÔ(¨4Ñ/ðM
ð Ô(¨4Ñ/ðM
ð  %Ô0°4Ñ7ð	M
ð
 !&Ô 0°4Ñ 7ðM
ð  ™ðM
ð ˜$‘;ðM
ð   $™;ðM
ð # T™kðM
ð ˜D‘[ðM
ð 
Ð:Ñ	:ðM
ð M
ð M
ð M
ð M
ð M
ð M
ð M
r,   rm  c                   óæ   ‡ — e Zd ZdZdefˆ fd„Z	 	 	 	 	 	 	 	 	 	 ddej        dz  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dz  dedz  deez  fd„Zˆ xZS )ÚSpeechT5DecoderWithSpeechPrenetzˆ
    Wrapper around SpeechT5Decoder that applies SpeechT5SpeechDecoderPrenet to convert log-mel filterbanks to hidden
    features.
    r~   c                 óÂ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        |                      ¦   «          d S r‚   )rp   rq   rk  rP  rm  Úwrapped_decoderr7  r6  s     €r*   rq   z(SpeechT5DecoderWithSpeechPrenet.__init__?  rR  r,   Nr-   r/   r  r  r}  r©  r  rÊ  r8  r9  r8   c                 ón   — |                       ||¦  «        }|                      ||||||||	|
¬¦	  «	        }|S ©N)	r„   r/   r  r  r©  r  rÊ  r8  r9  ©rP  r~  )r}   r-   r/   r  r  r}  r©  r  rÊ  r8  r9  rØ  Údecoder_hidden_statesr  s                 r*   r…   z'SpeechT5DecoderWithSpeechPrenet.forwardG  sU   € ð !%§¢¨LÐ:LÑ MÔ MÐà×&Ò&Ø/Ø)Ø"7Ø#9Ø+ØØ/Ø!5Ø#ð 'ñ 

ô 

ˆð ˆr,   )
NNNNNNNNNN)rˆ   r‰   rŠ   rÕ   r   rq   r¹   ri  rh  rØ   r
   rT   rè  r   r…   r‹   rŒ   s   @r*   r|  r|  9  s4  ø€ € € € € ðð ð
˜~ð ð ð ð ð ð ð 26Ø26Ø:>Ø:>Ø26Ø(,Ø!%Ø)-Ø,0Ø#'ðð àÔ'¨$Ñ.ðð Ô(¨4Ñ/ðð  %Ô0°4Ñ7ð	ð
 !&Ô 0°4Ñ 7ðð "œL¨4Ñ/ðð  ™ðð ˜$‘;ðð   $™;ðð # T™kðð ˜D‘[ðð 
Ð:Ñ	:ðð ð ð ð ð ð ð r,   r|  c                   óÜ   ‡ — e Zd ZdZdefˆ fd„Zd„ Zd„ Z	 	 	 	 	 	 	 	 	 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dz  dedz  deez  fd„Zˆ xZS )ÚSpeechT5DecoderWithTextPrenetz{
    Wrapper around SpeechT5Decoder that applies SpeechT5TextDecoderPrenet to convert input tokens to hidden features.
    r~   c                 óÂ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        |                      ¦   «          d S r‚   )rp   rq   r£  rP  rm  r~  r7  r6  s     €r*   rq   z&SpeechT5DecoderWithTextPrenet.__init__k  rZ  r,   c                 ó4   — | j                              ¦   «         S r‚   r\  rF  s    r*   r]  z2SpeechT5DecoderWithTextPrenet.get_input_embeddingss  r^  r,   c                 ó:   — | j                              |¦  «         d S r‚   r`  rb  s     r*   ra  z2SpeechT5DecoderWithTextPrenet.set_input_embeddingsv  rd  r,   Nr-   r/   r  r  r©  r  rÊ  r8  r9  r8   c
                 óv   — |                       |||¦  «        \  }}|                      |||||||||	¬¦	  «	        }|S r€  r�  )r}   r-   r/   r  r  r©  r  rÊ  r8  r9  rØ  r‚  r  s                r*   r…   z%SpeechT5DecoderWithTextPrenet.forwardy  s\   € ð 15·²¸LÈ.ÐZiÑ0jÔ0jÑ-Ð˜~à×&Ò&Ø/Ø)Ø"7Ø#9Ø+ØØ/Ø!5Ø#ð 'ñ 

ô 

ˆð ˆr,   ry  )rˆ   r‰   rŠ   rÕ   r   rq   r]  ra  r¹   ri  rh  r
   rT   rè  r   r…   r‹   rŒ   s   @r*   r„  r„  f  s>  ø€ € € € € ðð ð˜~ð ð ð ð ð ð ð2ð 2ð 2ð0ð 0ð 0ð
 26Ø26Ø:>Ø:>Ø(,Ø!%Ø)-Ø,0Ø#'ðð àÔ'¨$Ñ.ðð Ô(¨4Ñ/ðð  %Ô0°4Ñ7ð	ð
 !&Ô 0°4Ñ 7ðð  ™ðð ˜$‘;ðð   $™;ðð # T™kðð ˜D‘[ðð 
Ð:Ñ	:ðð ð ð ð ð ð ð r,   r„  c                   óÐ   ‡ — e Zd ZdZdefˆ fd„Z	 	 	 	 	 	 	 	 	 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
dz  de
dz  deez  fd„Zˆ xZS )ÚSpeechT5DecoderWithoutPrenetrh  r~   c                 óš   •— t          ¦   «                              |¦  «         t          |¦  «        | _        |                      ¦   «          d S r‚   )rp   rq   rm  r~  r7  r6  s     €r*   rq   z%SpeechT5DecoderWithoutPrenet.__init__�  rj  r,   Nr-   r/   r  r  r©  r  rÊ  r8  r9  r8   c
                 óB   — |                       |||||||||	¬¦	  «	        }|S r€  )r~  )r}   r-   r/   r  r  r©  r  rÊ  r8  r9  rØ  r  s               r*   r…   z$SpeechT5DecoderWithoutPrenet.forward¤  s@   € ð ×&Ò&Ø&Ø)Ø"7Ø#9Ø+ØØ/Ø!5Ø#ð 'ñ 

ô 

ˆð ˆr,   ry  rz  rŒ   s   @r*   rŠ  rŠ  —  s   ø€ € € € € ðð ð
˜~ð ð ð ð ð ð ð 26Ø26Ø:>Ø:>Ø(,Ø!%Ø)-Ø,0Ø#'ðð àÔ'¨$Ñ.ðð Ô(¨4Ñ/ðð  %Ô0°4Ñ7ð	ð
 !&Ô 0°4Ñ 7ðð  ™ðð ˜$‘;ðð   $™;ðð # T™kðð ˜D‘[ðð 
Ð:Ñ	:ðð ð ð ð ð ð ð r,   rŠ  c                   ó„   ‡ — e Zd ZdZdefˆ fd„Zdej        dej        dej        dej	        fd„Z
d	„ Zed
„ ¦   «         Zˆ xZS )Ú$SpeechT5GuidedMultiheadAttentionLosszè
    Guided attention loss from the paper [Efficiently Trainable Text-to-Speech System Based on Deep Convolutional
    Networks with Guided Attention](https://huggingface.co/papers/1710.08969), adapted for multi-head attention.
    r~   c                 óx   •— t          ¦   «                              ¦   «          |j        | _        |j        | _        d S r‚   )rp   rq   Úguided_attention_loss_sigmaÚsigmaÚguided_attention_loss_scaler'  r6  s     €r*   rq   z-SpeechT5GuidedMultiheadAttentionLoss.__init__Å  s1   ø€ Ý‰Œ×ÒÑÔÐØÔ7ˆŒ
ØÔ7ˆŒ
ˆ
ˆ
r,   rA  Úinput_masksÚoutput_masksr8   c                 óV  — |                       |||j        ¦  «        }|                     d¦  «        |                     d¦  «        z  }|                     |j        ¦  «                             d¦  «        }||z  }t	          j        |                     |¦  «        ¦  «        }| j        |z  S )aY  
        Compute the attention loss.

        Args:
            attentions (`torch.FloatTensor` of shape `(batch_size, layers * heads, output_sequence_length, input_sequence_length)`):
                Batch of multi-head attention weights
            input_masks (`torch.BoolTensor` of shape `(batch_size, input_sequence_length)`):
                Input attention mask as booleans.
            output_masks (`torch.BoolTensor` of shape `(batch_size, output_sequence_length)`):
                Target attention mask as booleans.

        Returns:
            `torch.Tensor` with the loss value
        r#   r”   r   )Ú_make_guided_attention_masksr¬   r½   r±   r¹   r  Úmasked_selectr'  )r}   rA  r“  r”  Úguided_attn_masksÚmasksÚlossesÚlosss           r*   r…   z,SpeechT5GuidedMultiheadAttentionLoss.forwardÊ  sœ   € ð" !×=Ò=¸kÈ<ÐYcÔYjÑkÔkÐØ×&Ò& rÑ*Ô*¨[×-BÒ-BÀ2Ñ-FÔ-FÑFˆØ—’˜Ô*Ñ+Ô+×5Ò5°aÑ8Ô8ˆà" ZÑ/ˆÝŒz˜&×.Ò.¨uÑ5Ô5Ñ6Ô6ˆØŒz˜DÑ Ð r,   c                 ó’  — |                      d¦  «        }|                      d¦  «        }t          j        t          |¦  «        |j        d         |j        d         f|¬¦  «        }t          t          ||¦  «        ¦  «        D ]/\  }\  }}	|                      ||	| j        |¦  «        ||d |	…d |…f<   Œ0| 	                    d¦  «        S )Nr#   r   rR  )
rP   r¹   rS   rW   r%   rB  r]  Ú_make_guided_attention_maskr‘  r½   )
r}   r“  r”  r¬   ra   rV  r˜  rF  ÚilenÚolens
             r*   r–  zASpeechT5GuidedMultiheadAttentionLoss._make_guided_attention_masksã  sÕ   € Ø#Ÿš¨Ñ+Ô+ˆØ%×)Ò)¨"Ñ-Ô-ˆå!œK­¨[Ñ)9Ô)9¸<Ô;MÈaÔ;PÐR]ÔRcÐdeÔRfÐ(gÐpvÐwÑwÔwÐå!*­3¨}¸nÑ+MÔ+MÑ!NÔ!Nð 	tð 	tÑˆC‘�$˜Ø37×3SÒ3SÐTXÐZ^Ð`dÔ`jÐlrÑ3sÔ3sÐ˜c 5 D 5¨%¨4¨%Ð/Ñ0Ð0à ×*Ò*¨1Ñ-Ô-Ð-r,   c                 ó0  — t          j        t          j        | |¬¦  «        t          j        ||¬¦  «        d¬¦  «        \  }}|                     ¦   «         |z  }|                     ¦   «         | z  }dt          j        ||z
  dz   d|dz  z  z  ¦  «        z
  S )NrR  Úxy)Úindexingrú   r¥   )r¹   ÚmeshgridrV   r¼   rº   )r>   Úoutput_lengthr‘  r¬   Úgrid_yÚgrid_xs         r*   r�  z@SpeechT5GuidedMultiheadAttentionLoss._make_guided_attention_maskî  s—   € åœÝŒL˜¨fÐ5Ñ5Ô5ÝŒL˜¨vÐ6Ñ6Ô6Øð
ñ 
ô 
‰ˆ�ð
 —’‘” -Ñ/ˆØ—’‘” ,Ñ.ˆØ•U”Y &¨6¡/°aÑ!7Ð8¸AÀÈÁ¹NÑKÑLÔLÑLÐLr,   )rˆ   r‰   rŠ   rÕ   r   rq   r¹   ri  Ú
BoolTensorrØ   r…   r–  rÖ   r�  r‹   rŒ   s   @r*   rŽ  rŽ  ¿  s¾   ø€ € € € € ðð ð
8˜~ð 8ð 8ð 8ð 8ð 8ð 8ð
!ØÔ+ð!Ø:?Ô:Jð!ØZ_ÔZjð!à	Œð!ð !ð !ð !ð2	.ð 	.ð 	.ð ðMð Mñ „\ðMð Mð Mð Mð Mr,   rŽ  c                   óœ   ‡ — e Zd ZdZdefˆ fd„Z	 ddej        dej        dej        dej        d	ej        d
ej        dz  dej	        fd„Z
ˆ xZS )ÚSpeechT5SpectrogramLossz;
    Loss computation used by SpeechT5ForTextToSpeech.
    r~   c                 ó>  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        |j        | _        t          ¦   «         | _        t          t          j	        d¦  «        ¬¦  «        | _
        | j        rt          |¦  «        | _        d S d S )Ng      @)Ú
pos_weight)rp   rq   Úuse_guided_attention_lossÚguided_attention_loss_num_headsr.   r   Úl1_criterionr   r¹   rÿ   Úbce_criterionrŽ  Úattn_criterionr6  s     €r*   rq   z SpeechT5SpectrogramLoss.__init__ÿ  s‘   ø€ Ý‰Œ×ÒÑÔÐØ)/Ô)IˆÔ&Ø/5Ô/UˆÔ,Ø &Ô 7ˆÔå"™HœHˆÔÝ.½%¼,ÀsÑ:KÔ:KÐLÑLÔLˆÔàÔ)ð 	OÝ"FÀvÑ"NÔ"NˆDÔÐÐð	Oð 	Or,   Nr/   r–  r—  r˜  Úlabelsrt  r8   c                 ób  ‡ — |dk    }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }‰                      ||¦  «        ‰                      ||¦  «        z   }|d d …d d …df         }	t          j        |	 dz  t          j        |	                     d¦  «        d¦  «                             |	j        ¦  «        gd¬¦  «        }
|
d d …dd …f                               |	¦  «        }
|                      |	¦  «        }‰                      ||
¦  «        }||z   }‰ j	        rzt          j        ˆ fd„|D ¦   «         d¬¦  «        }|dk    }|d d …d d …df         }‰ j
        dk    r|d d …‰ j
        dz
  d ‰ j
        …f         }‰                      |||¦  «        }||z  }|S )Nr1   r   rú   r   rµ   c                 ó6   •— g | ]}|d d …d ‰j         …f         ‘ŒS r‚   )r­  )rE   Úxr}   s     €r*   rG   z3SpeechT5SpectrogramLoss.forward.<locals>.<listcomp>,  s0   ø€ ÐeÐeÐeÈq˜a   Ð#I TÔ%IÐ#IÐ IÔJÐeÐeÐer,   )r—  r®  r¹   r¾   rY   rÇ   r±   r¬   r¯  r¬  r.   r°  )r}   r/   r–  r—  r˜  r±  rt  rN  Úl1_lossr™  Ústop_labelsÚbce_lossr›  Úattnr“  r”  Ú	attn_losss   `                r*   r…   zSpeechT5SpectrogramLoss.forward  sé  ø€ ð  Ò'ˆð ×%Ò% lÑ3Ô3ˆØ!7×!EÒ!EÀlÑ!SÔ!SÐØ 5× CÒ CÀLÑ QÔ QÐð ×#Ò#Ð$9¸6ÑBÔBÀT×EVÒEVÐWmÐouÑEvÔEvÑvˆð ˜Q˜Q˜Q    1˜WÔ%ˆÝ”i % ¨#¡­u¬z¸%¿*º*ÀQ¹-¼-ÈÑ/KÔ/K×/NÒ/NÈuÌ|Ñ/\Ô/\Ð ]ÐcdÐeÑeÔeˆØ! ! ! ! Q R R %Ô(×6Ò6°uÑ=Ô=ˆØ×%Ò% eÑ,Ô,ˆð ×%Ò% f¨kÑ:Ô:ˆð ˜Ñ!ˆð Ô)ð 	Ý”9ÐeÐeÐeÐeÐTdÐeÑeÔeÐklÐmÑmÔmˆDØ(¨AÒ-ˆKØ'¨¨¨¨1¨1¨1¨a¨Ô0ˆLØÔ$ qÒ(Ð(Ø+¨A¨A¨A¨tÔ/DÀqÑ/HÐ/aÈDÔLaÐ/aÐ,aÔb�Ø×+Ò+¨D°+¸|ÑLÔLˆIØ�IÑˆDàˆr,   r‚   )rˆ   r‰   rŠ   rÕ   r   rq   r¹   rh  ri  rØ   r…   r‹   rŒ   s   @r*   r©  r©  ú  sÐ   ø€ € € € € ðð ð
O˜~ð 
Oð 
Oð 
Oð 
Oð 
Oð 
Oð& 6:ð)ð )àÔ(ð)ð !&Ô 1ð)ð  %Ô0ð	)ð
 Ô!ð)ð Ô!ð)ð  Ô+¨dÑ2ð)ð 
Œð)ð )ð )ð )ð )ð )ð )ð )r,   r©  zv
    The bare SpeechT5 Encoder-Decoder Model outputting raw hidden-states without any specific pre- or post-nets.
    ©Úcustom_introc                   óv  ‡ — e Zd Z	 	 ddedej        dz  dej        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j        dz  dej        dz  deeej                          dz  dedz  dedz  dej        dz  dedz  dedz  dedz  deej                 ez  fd„¦   «         Zˆ xZS )ÚSpeechT5ModelNr~   ÚencoderÚdecoderc                 óà   •— t          ¦   «                              |¦  «         || _        |€t          |¦  «        n|| _        |€t          |¦  «        n|| _        |                      ¦   «          dS )z·
        encoder (`PreTrainedModel`, *optional*):
            The encoder model to use.
        decoder (`PreTrainedModel`, *optional*):
            The decoder model to use.
        N)rp   rq   r~   rg  r¾  rŠ  r¿  r7  )r}   r~   r¾  r¿  r€   s       €r*   rq   zSpeechT5Model.__init__=  sp   ø€ õ 	‰Œ×Ò˜Ñ Ô Ð ØˆŒØ?F¸Õ3°FÑ;Ô;Ð;ÐT[ˆŒØ?F¸Õ3°FÑ;Ô;Ð;ÐT[ˆŒð 	�ŠÑÔÐÐÐr,   c                 óÜ   — t          | j        t          ¦  «        r| j                             ¦   «         S t          | j        t
          ¦  «        r| j                             ¦   «         S t          ‚r‚   )rÌ  r¾  rX  r]  r¿  r„  ÚNotImplementedErrorrF  s    r*   r]  z"SpeechT5Model.get_input_embeddingsQ  sZ   € Ý�d”lÕ$AÑBÔBð 	7Ø”<×4Ò4Ñ6Ô6Ð6Ý�d”lÕ$AÑBÔBð 	7Ø”<×4Ò4Ñ6Ô6Ð6Ý!Ð!r,   c                 óÚ   — t          | j        t          ¦  «        r| j                             |¦  «         t          | j        t
          ¦  «        r| j                             |¦  «         d S d S r‚   )rÌ  r¾  rX  ra  r¿  r„  rb  s     r*   ra  z"SpeechT5Model.set_input_embeddingsX  sh   € Ý�d”lÕ$AÑBÔBð 	5ØŒL×-Ò-¨eÑ4Ô4Ð4Ý�d”lÕ$AÑBÔBð 	5ØŒL×-Ò-¨eÑ4Ô4Ð4Ð4Ð4ð	5ð 	5r,   c                 óz   — t          | j        t          ¦  «        r | j        j                             ¦   «          dS 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¾  rN  rP  rG  rF  s    r*   rG  z$SpeechT5Model.freeze_feature_encoder^  s@   € õ
 �d”lÕ$CÑDÔDð 	9ØŒLÔ×6Ò6Ñ8Ô8Ð8Ð8Ð8ð	9ð 	9r,   r-   r/   Údecoder_input_valuesÚdecoder_attention_maskÚencoder_outputsr©  r  r}  rÊ  r8  r9  r8   c                 ó.  — |	�|	n| j         j        }	|
�|
n| j         j        }
|�|n| j         j        }|�|n| j         j        }|€|                      |||	|
|¬¦  «        }ne|rct          |t          ¦  «        sNt          |d         t          |¦  «        dk    r|d         ndt          |¦  «        dk    r|d         nd¬¦  «        }|�Lt          | j        t          ¦  «        r2| j        j
                             |d         j        d         |¦  «        }n|}t          | j        t          ¦  «        rd|i}ni } | j        d
|||d         ||||	|
|dœ	|¤Ž}|s||z   S t          |j        |j        |j        |j        |j        |j        |j        |j        ¬	¦  «        S )a‹  
        input_values (`torch.Tensor` of shape `(batch_size, sequence_length)`):
            Depending on which encoder is being used, the `input_values` are either: float values of the input raw
            speech waveform, or indices of input sequence tokens in the vocabulary, or hidden states.
        decoder_input_values (`torch.Tensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Depending on which decoder is being used, the `decoder_input_values` are either: float values of log-mel
            filterbank features extracted from the raw speech waveform, or indices of decoder input sequence tokens in
            the vocabulary, or hidden states.
        decoder_attention_mask (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_values`. Causal mask will
            also be used by default.

            If you want to change padding behavior, you should read [`SpeechT5Decoder._prepare_decoder_attention_mask`]
            and modify to your needs. See diagram 1 in [the paper](https://huggingface.co/papers/1910.13461) for more
            information on the default strategy.
        speaker_embeddings (`torch.FloatTensor` of shape `(batch_size, config.speaker_embedding_dim)`, *optional*):
            Tensor containing the speaker embeddings.
        N)r-   r/   rÊ  r8  r9  r   r   r¥   r?  r}  )	r-   r/   r  r  r©  r  rÊ  r8  r9  )r@  r©  r‚  Údecoder_attentionsrt  Úencoder_last_hidden_stater  Úencoder_attentionsrD   )r~   rÊ  r8  r  r9  r¾  rÌ  r   rW   rN  rP  rJ  r%   r¿  r|  r   r@  r©  r„   rA  rt  )r}   r-   r/   rÆ  rÇ  rÈ  r©  r  r}  rÊ  r8  r9  rØ  r  Údecoder_argsÚdecoder_outputss                   r*   r…   zSpeechT5Model.forwardf  s!  € ðD 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð "+Ð!6�I�I¸D¼KÔ<Qˆ	Ø%0Ð%<�k�kÀ$Ä+ÔBYˆð Ð"Ø"ŸlšlØ)Ø-Ø"3Ø%9Ø'ð +ñ ô ˆOˆOð ð 	¥¨O½_Ñ!MÔ!Mð 	Ý-Ø"1°!Ô"4Ý47¸Ñ4HÔ4HÈ1Ò4LÐ4L˜o¨aÔ0Ð0ÐRVÝ14°_Ñ1EÔ1EÈÒ1IÐ1I˜?¨1Ô-Ð-Ètðñ ô ˆOð Ð%­*°T´\ÕCbÑ*cÔ*cÐ%Ø%)¤\Ô%8×%[Ò%[Ø Ô"Ô(¨Ô+¨^ñ&ô &Ð"Ð"ð &4Ð"å�d”lÕ$CÑDÔDð 	Ø0Ð2DÐEˆLˆLàˆLà&˜$œ,ð 
Ø-Ø1Ø"1°!Ô"4Ø#9Ø+ØØ/Ø!5Ø#ð
ð 
ð ð
ð 
ˆð ð 	5Ø" _Ñ4Ð4å!Ø-Ô?Ø+Ô;Ø"1Ô"?Ø.Ô9Ø,Ô=Ø&5Ô&GØ"1Ô"?Ø.Ô9ð	
ñ 	
ô 	
ð 		
r,   rg  ©NNNNNNNNNNN)rˆ   r‰   rŠ   r   r   r.  rq   r]  ra  rG  r   r¹   rØ   rh  rè  ri  r
   rT   r   r…   r‹   rŒ   s   @r*   r½  r½  7  sÎ  ø€ € € € € ð %)Ø$(ð	ð àðð ”˜TÑ!ðð ”˜TÑ!ð	ð ð ð ð ð ð("ð "ð "ð5ð 5ð 5ð9ð 9ð 9ð ð -1Ø26Ø48Ø:>ØBFØ(,Ø!%Ø7;Ø)-Ø,0Ø#'ð_
ð _
à”l TÑ)ð_
ð Ô(¨4Ñ/ð_
ð $œl¨TÑ1ð	_
ð
 !&Ô 0°4Ñ 7ð_
ð ˜u UÔ%6Ô7Ô8¸4Ñ?ð_
ð  ™ð_
ð ˜$‘;ð_
ð "Ô-°Ñ4ð_
ð   $™;ð_
ð # T™kð_
ð ˜D‘[ð_
ð 
ˆuÔ Ô	!Ð$6Ñ	6ð_
ð _
ð _
ñ „^ð_
ð _
ð _
ð _
ð _
r,   r½  zB
    SpeechT5 Model with a speech encoder and a text decoder.
    c                   ó:  ‡ — e Zd ZddiZdefˆ fd„Z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
j        dz  deee
j                          dz  dedz  de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 )ÚSpeechT5ForSpeechToTextz#text_decoder_postnet.lm_head.weightz+speecht5.decoder.prenet.embed_tokens.weightr~   c                 ó@  •— t          ¦   «                              |¦  «         |j        €t          d| j        › d�¦  «        ‚t          |¦  «        }t          |¦  «        }t          |||¦  «        | _        t          |¦  «        | _
        |                      ¦   «          d S )NúYou are trying to instantiate a    with a configuration that does not define the vocabulary size of the language model head. Please instantiate the model as follows: `SpeechT5ForSpeechToText.from_pretrained(..., vocab_size=vocab_size)`. or define `vocab_size` of your model's configuration.)rp   rq   rž  r'   r€   rN  r„  r½  r  r¯  Útext_decoder_postnetr7  )r}   r~   Úspeech_encoderÚtext_decoderr€   s       €r*   rq   z SpeechT5ForSpeechToText.__init__Ñ  s¥   ø€ Ý‰Œ×Ò˜Ñ Ô Ð àÔÐ$Ýð/°´ð /ð /ð /ñô ð õ 9¸Ñ@Ô@ˆÝ4°VÑ<Ô<ˆÝ% f¨n¸lÑKÔKˆŒå$>¸vÑ$FÔ$FˆÔ!ð 	�ŠÑÔÐÐÐr,   c                 ó\   — |                       ¦   «         j                             ¦   «          dS rÅ  ©Úget_encoderrP  rG  rF  s    r*   rG  z.SpeechT5ForSpeechToText.freeze_feature_encoderå  ó+   € ð
 	×ÒÑÔÔ!×8Ò8Ñ:Ô:Ð:Ð:Ð:r,   c                 ó4   — | j                              ¦   «         S r‚   )rÔ  r¶  rF  s    r*   r¶  z-SpeechT5ForSpeechToText.get_output_embeddingsì  s   € ØÔ(×>Ò>Ñ@Ô@Ð@r,   c                 ó:   — | j                              |¦  «         d S r‚   )rÔ  rº  r¸  s     r*   rº  z-SpeechT5ForSpeechToText.set_output_embeddingsï  s   € ØÔ!×7Ò7¸ÑGÔGÐGÐGÐGr,   Nr-   r/   Údecoder_input_idsrÇ  rÈ  r©  r  rÊ  r8  r9  r±  r8   c                 ó0  — |
�|
n| j         j        }
|�'|€%t          || j         j        | j         j        ¦  «        }|                      |||||||||	d¬¦
  «
        }|                      |d         ¦  «        }d}|�Kt          ¦   «         } ||                     d| j         j	        ¦  «        |                     d¦  «        ¦  «        }|
s|f|dd…         z   }|�|f|z   n|S t          |||j        |j        |j        |j        |j        |j        |j        ¬¦	  «	        S )aâ  
        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 [`SpeechT5Processor`] should be used for padding
            and conversion into a tensor of type `torch.FloatTensor`. See [`SpeechT5Processor.__call__`] for details.
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Indices of decoder input sequence tokens in the vocabulary.

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

            [What are decoder input IDs?](../glossary#decoder-input-ids)

            SpeechT5 uses the `eos_token_id` as the starting token for `decoder_input_ids` generation. If
            `past_key_values` is used, optionally only the last `decoder_input_ids` have to be input (see
            `past_key_values`).
        decoder_attention_mask (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_values`. Causal mask will
            also be used by default.

            If you want to change padding behavior, you should read [`SpeechT5Decoder._prepare_decoder_attention_mask`]
            and modify to your needs. See diagram 1 in [the paper](https://huggingface.co/papers/1910.13461) for more
            information on the default strategy.
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the language modeling loss. Indices should either be in `[0, ..., config.vocab_size]`
            or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored (masked), the loss is
            only computed for the tokens with labels in `[0, ..., config.vocab_size]`.

            Label indices can be obtained using [`SpeechT5Tokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for details.

        Example:

        ```python
        >>> from transformers import SpeechT5Processor, SpeechT5ForSpeechToText
        >>> from datasets import load_dataset

        >>> dataset = load_dataset(
        ...     "hf-internal-testing/librispeech_asr_demo", "clean", split="validation"
        ... )  # doctest: +IGNORE_RESULT
        >>> dataset = dataset.sort("id")
        >>> sampling_rate = dataset.features["audio"].sampling_rate

        >>> processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_asr")
        >>> model = SpeechT5ForSpeechToText.from_pretrained("microsoft/speecht5_asr")

        >>> # audio file is decoded on the fly
        >>> inputs = processor(audio=dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
        >>> predicted_ids = model.generate(**inputs, max_length=100)

        >>> # transcribe speech
        >>> transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
        >>> transcription[0]
        'mister quilter is the apostle of the middle classes and we are glad to welcome his gospel'
        ```

        ```python
        >>> inputs["labels"] = processor(text_target=dataset[0]["text"], return_tensors="pt").input_ids

        >>> # compute loss
        >>> loss = model(**inputs).loss
        >>> round(loss.item(), 2)
        19.68
        ```
        NT)
r-   r/   rÆ  rÇ  rÈ  r©  r  rÊ  r8  r9  r   r#   r   )	r›  r˜  r©  r‚  rÊ  rt  rË  r  rÌ  )r~   r9  r+   r    r!   r  rÔ  r   rÁ   rž  r   r©  r‚  rÊ  rt  rË  r  rÌ  )r}   r-   r/   rÝ  rÇ  rÈ  r©  r  rÊ  r8  r9  r±  rØ  r  r˜  r›  Úloss_fctÚoutputs                     r*   r…   zSpeechT5ForSpeechToText.forwardò  sV  € ðf &1Ð%<�k�kÀ$Ä+ÔBYˆàÐØ Ð(Ý$6Ø˜DœKÔ4°d´kÔ6Xñ%ô %Ð!ð —-’-Ø%Ø)Ø!2Ø#9Ø+Ø+ØØ/Ø!5Øð  ñ 
ô 
ˆð ×*Ò*¨7°1¬:Ñ6Ô6ˆàˆØÐÝ'Ñ)Ô)ˆHØ�8˜FŸKšK¨¨D¬KÔ,BÑCÔCÀVÇ[Â[ÐQSÁ_Ä_ÑUÔUˆDàð 	FØ�Y ¨¨¨¤Ñ,ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEåØØØ#Ô3Ø")Ô"?Ø&Ô9Ø$Ô5Ø&-Ô&GØ")Ô"?Ø&Ô9ð

ñ 

ô 

ð 
	
r,   rÏ  )rˆ   r‰   rŠ   Ú_tied_weights_keysr   rq   rG  r¶  rº  r   r¹   ri  rh  rè  r
   rT   r   r…   r‹   rŒ   s   @r*   rÑ  rÑ  É  s¬  ø€ € € € € ð @ÐAnÐoÐð˜~ð ð ð ð ð ð ð(;ð ;ð ;ðAð Að AðHð Hð Hð ð 26Ø26Ø59Ø:>ØBFØ(,Ø!%Ø)-Ø,0Ø#'Ø*.ð|
ð |
àÔ'¨$Ñ.ð|
ð Ô(¨4Ñ/ð|
ð !Ô+¨dÑ2ð	|
ð
 !&Ô 0°4Ñ 7ð|
ð ˜u UÔ%6Ô7Ô8¸4Ñ?ð|
ð  ™ð|
ð ˜$‘;ð|
ð   $™;ð|
ð # T™kð|
ð ˜D‘[ð|
ð Ô  4Ñ'ð|
ð 
�Ñ	 ð|
ð |
ð |
ñ „^ð|
ð |
ð |
ð |
ð |
r,   rÑ  ç      à?r2   ç      4@FÚmodelr}  Ú	thresholdÚminlenratioÚmaxlenratioÚvocoderÚoutput_cross_attentionsÚreturn_output_lengthsc
           
      óâ  ‡"‡#‡$— |€t          d¦  «        ‚|€&d|| j        j        k                         ¦   «         z
  }
n|}
|                     d¦  «        }| j                             ||
d¬¦  «        }|j        }t          | j        j        t          ¦  «        r6| j        j        j
                             |d         j        d         |
¦  «        }
t          |                     d¦  «        |z  | j        j        z  ¦  «        }t          |                     d¦  «        |z  | j        j        z  ¦  «        }|                     |d| j        j        ¦  «        }g }g }d }d}i Š"	 |dz  }| j        j         
                    ||¦  «        }| j        j                             |d d …dd …f         d ||
|d|d¬¦  «        }|r.|                     t'          j        |j        d¬¦  «        ¦  «         |j                             d¦  «        }|j        }| j                             |¦  «        }|                     || j        j        | j        j        ¦  «        }|                     |¦  «         |d d …dd d …f                              |d| j        j        ¦  «        }t'          j        ||fd¬¦  «        }t'          j        | j                             |¦  «        ¦  «        }||k     r�Œ~||k     rGt'          j        |d¬¦  «        |k    }t'          j        |¦  «        d                              ¦   «         }ntA          tC          |¦  «        ¦  «        }ˆ"fd	„|D ¦   «         }tC          |¦  «        dk    rht'          j"        |¦  «        }| #                    dd¦  «         $                    dd
¦  «        }| j         %                    |¦  «        }|D ]}||         ‰"|<   ŒtC          ‰"¦  «        |k    rn�Œ…ˆ"fd„tA          tC          ‰"¦  «        ¦  «        D ¦   «         }|	s¹|dk    r|d         n*t&          j&        j'        j(         )                    |d¬¦  «        }|� ||¦  «        }n|}|rlt'          j        |d
¬¦  «        }|dk    rL |j        |t          |                     d¦  «        |z  ¦  «        g|                     ¦   «         dd …         ¢R Ž }||f}�n*g Š#tA          |¦  «        D ]0} ‰#                     ||                               d¦  «        ¦  «         Œ1|€0t&          j&        j'        j(         )                    |d¬¦  «        }|‰#f}nKg Š$t&          j&        j'        j(         )                    |d¬¦  «        } ||¦  «        Š$ˆ#ˆ$fd„‰#D ¦   «         }!‰$|!f}|rit'          j        |d
¬¦  «        } |j        |t          |                     d¦  «        |z  ¦  «        g|                     ¦   «         dd …         ¢R Ž }g |¢|‘R }|S )Na  `speaker_embeddings` must be specified. For example, you can use a speaker embeddings by following
                    the code snippet provided in this link:
                    https://huggingface.co/datasets/Matthijs/cmu-arctic-xvectors
                    r   r   T)r-   r/   r9  r#   )r„   r/   r  r  r©  r  rÊ  r9  rµ   c                 ó   •— g | ]}|‰v¯|‘Œ	S rD   rD   ©rE   r  Úresult_spectrograms     €r*   rG   z$_generate_speech.<locals>.<listcomp>Ó  s$   ø€ ÐSÐSÐS !°qÐ@RÐ7RÐ7R˜AÐ7RÐ7RÐ7Rr,   r¥   c                 ó    •— g | ]
}‰|         ‘ŒS rD   rD   rí  s     €r*   rG   z$_generate_speech.<locals>.<listcomp>Ü  s   ø€ ÐRÐRÐR¨aÐ& qÔ)ÐRÐRÐRr,   )Úbatch_firstéýÿÿÿc                 óz   •— g | ]7}t          ‰                     d ¦  «        t          ‰¦  «        z  ¦  «        |z  ‘Œ8S ©r   )r<   rÇ   r=   )rE   r  Úspectrogram_lengthsÚ	waveformss     €€r*   rG   z$_generate_speech.<locals>.<listcomp>ö  sB   ø€ ÐsÐsÐsÐZ[¥ I§N¢N°1Ñ$5Ô$5½Ð<OÑ8PÔ8PÑ$PÑ QÔ QÐTUÑ UÐsÐsÐsr,   )*r'   r~   r    r<   rÇ   r  r¾  r@  rÌ  rN  rP  rJ  r%   r.   r$   rn  r¿  r~  r[   r¹   r¾   rt  Úsqueezer©  Úspeech_decoder_postnetr’  rÁ   Úsigmoidr“  rP   r  rQ   rR   rW   Ústackr•   Úflattenr•  r   ræ   ÚrnnÚpad_sequence)%rä  r-   r}  r/   rå  ræ  rç  rè  ré  rê  r  rÊ   Úencoder_outrË  ÚmaxlenÚminlenÚoutput_sequenceÚspectrogramrt  r©  rF  r‚  Údecoder_outÚlast_decoder_outputÚspectrumÚnew_spectrogramÚprobÚmeet_thresholdsÚmeet_indexesÚspectrogramsÚ
meet_indexr  r  Úwaveform_lengthsrî  rô  rõ  s%                                     @@@r*   Ú_generate_speechr  r  s‹  øøø€ ð Ð!Ýðñ
ô 
ð 	
ð ÐØ!" l°e´lÔ6OÒ&O×%TÒ%TÑ%VÔ%VÑ!VÐÐà!/Ðà
×
Ò
˜AÑ
Ô
€Cà”.×(Ò(Ø!Ø-Øð )ñ ô €Kð !,Ô =Ðõ �%”.Ô(Õ*IÑJÔJð 
Ø!&¤Ô!7Ô!>×!aÒ!aØ˜ŒNÔ  Ô#Ð%;ñ"
ô "
Ðõ Ð*×/Ò/°Ñ2Ô2°[Ñ@À5Ä<ÔC`Ñ`ÑaÔa€FÝÐ*×/Ò/°Ñ2Ô2°[Ñ@À5Ä<ÔC`Ñ`ÑaÔa€Fð 0×9Ò9¸#¸qÀ%Ä,ÔB[Ñ\Ô\€Oà€KØÐØ€OØ
€CØÐð4Øˆq‰ˆð !&¤Ô 6× =Ò =¸oÐOaÑ bÔ bÐà”nÔ,×<Ò<Ø/°°°°2°3°3°Ô7ØØ";Ø#9Ø+ØØ5Øð =ñ 	
ô 	
ˆð #ð 	TØ×#Ò#¥E¤I¨kÔ.JÐPQÐ$RÑ$RÔ$RÑSÔSÐSà)Ô;×CÒCÀAÑFÔFÐØ%Ô5ˆð Ô/×8Ò8Ð9LÑMÔMˆØ—=’=  e¤lÔ&CÀUÄ\ÔE^Ñ_Ô_ˆØ×Ò˜8Ñ$Ô$Ð$ð # 1 1 1 b¨!¨!¨! 8Ô,×1Ò1°#°q¸%¼,Ô:SÑTÔTˆÝœ) _°oÐ$FÈAÐNÑNÔNˆåŒ}˜UÔ9×BÒBÐCVÑWÔWÑXÔXˆà�Š<ˆ<Ùð �VŠ|ˆ|Ý"'¤)¨D°bÐ"9Ñ"9Ô"9¸YÒ"F�Ý$œ{¨?Ñ;Ô;¸AÔ>×EÒEÑGÔG��å$¥S¨¡Y¤YÑ/Ô/�ØSÐSÐSÐS |ÐSÑSÔSˆLÝ�<Ñ Ô  1Ò$Ð$Ý$œ{¨;Ñ7Ô7�Ø+×5Ò5°a¸Ñ;Ô;×CÒCÀAÀqÑIÔI�Ø$Ô;×CÒCÀLÑQÔQ�Ø".ð Nð N�JØ5AÀ*Ô5MÐ& zÑ2Ð2ÝÐ%Ñ&Ô&¨#Ò-Ð-Øñi4ðj SÐRÐRÐRµ5½Ð=OÑ9PÔ9PÑ3QÔ3QÐRÑRÔR€LØ ð  3Ø),°ª¨�l 1”o�oµu´x´~Ô7I×7VÒ7VÐWcÐquÐ7VÑ7vÔ7vˆØÐØ�g˜kÑ*Ô*ˆGˆGà!ˆGØ"ð 	2Ý$œyÐ)9¸qÐAÑAÔAÐØ�QŠwˆwØ#8Ð#3Ô#8Ø�Ð-×2Ò2°1Ñ5Ô5¸Ñ;Ñ<Ô<ð$Ø?O×?TÒ?TÑ?VÔ?VÐWYÐWZÐWZÔ?[ð$ð $ð $Ð ð Ð 0Ð1ˆGùð !ÐÝ�s‘”ð 	@ð 	@ˆAØ×&Ò& |°A¤×';Ò';¸AÑ'>Ô'>Ñ?Ô?Ð?Ð?Øˆ?Ý œ8œ>Ô-×:Ò:¸<ÐUYÐ:ÑZÔZˆLØ#Ð%8Ð9ˆGˆGàˆIÝ œ8œ>Ô-×:Ò:¸<ÐUYÐ:ÑZÔZˆLØ˜ Ñ-Ô-ˆIØsÐsÐsÐsÐsÐ_rÐsÑsÔsÐØ Ð"2Ð3ˆGØ"ð 	3Ý$œyÐ)9¸qÐAÑAÔAÐØ4Ð/Ô4Ø•SÐ)×.Ò.¨qÑ1Ô1°CÑ7Ñ8Ô8ð Ø;K×;PÒ;PÑ;RÔ;RÐSUÐSVÐSVÔ;Wð ð  ð  Ðð 3˜Ð2Ð!1Ð2Ð2ˆGØ€Nr,   zB
    SpeechT5 Model with a text encoder and a speech decoder.
    c                   ó$  ‡ — e Zd ZdZdZdefˆ fd„Ze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eej                          dz  dedz  dedz  dedz  dedz  dedz  dej        dz  dej        dz  dej        dz  deez  fd„¦   «         Z ej        ¦   «         	 	 	 	 	 	 	 	 d"dej        dej        dz  dej        dz  dedededej        dz  dededej        eej        ej        f         z  fd„¦   «         Z ej        ¦   «         	 	 	 	 	 	 	 	 d"dej        dej        dz  dej        dz  dedededej        dz  dededej        eej        ej        f         z  fd „¦   «         Zˆ xZS )#ÚSpeechT5ForTextToSpeech)Útextr   r~   c                 ó@  •— t          ¦   «                              |¦  «         |j        €t          d| j        › d�¦  «        ‚t          |¦  «        }t          |¦  «        }t          |||¦  «        | _        t          |¦  «        | _
        |                      ¦   «          d S )NrÓ  a    with a configuration that does not define the vocabulary size of the language model head. Please instantiate the model as follows: `SpeechT5ForTextToSpeech.from_pretrained(..., vocab_size=vocab_size)`. or define `vocab_size` of your model's configuration.)rp   rq   rž  r'   r€   rX  r|  r½  r  r�  r÷  r7  )r}   r~   Útext_encoderÚspeech_decoderr€   s       €r*   rq   z SpeechT5ForTextToSpeech.__init__
	  s¥   ø€ Ý‰Œ×Ò˜Ñ Ô Ð àÔÐ$Ýð/°´ð /ð /ð /ñô ð õ 5°VÑ<Ô<ˆÝ8¸Ñ@Ô@ˆÝ% f¨l¸NÑKÔKˆŒå&BÀ6Ñ&JÔ&JˆÔ#ð 	�ŠÑÔÐÐÐr,   r8   c                 ó   — dS r*  rD   )Úclss    r*   Úcan_generatez$SpeechT5ForTextToSpeech.can_generate	  s	   € ð
 ˆtr,   Nr/   rÆ  rÇ  rÈ  r©  r  rÊ  r8  r9  r}  r±  r¶  c                 ó  — |
�|
n| j         j        }
|�.|€t          || j         j        |¦  «        \  }}| j         j        rd}|                      ||||||||||	d¬¦  «        }|                      |d         ¦  «        \  }}}d}|�)t          | j         ¦  «        } |||||||j        ¦  «        }|
s|f|dd…         z   }|�|f|z   n|S t          |||j
        |j        |j        |j        |j        |j        |j        ¬¦	  «	        S )ab  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary.

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

            [What are input IDs?](../glossary#input-ids)
        decoder_input_values (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.num_mel_bins)`):
            Float values of input mel spectrogram.

            SpeechT5 uses an all-zero spectrum as the starting token for `decoder_input_values` generation. If
            `past_key_values` is used, optionally only the last `decoder_input_values` have to be input (see
            `past_key_values`).
        decoder_attention_mask (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_values`. Causal mask will
            also be used by default.

            If you want to change padding behavior, you should read [`SpeechT5Decoder._prepare_decoder_attention_mask`]
            and modify to your needs. See diagram 1 in [the paper](https://huggingface.co/papers/1910.13461) for more
            information on the default strategy.
        speaker_embeddings (`torch.FloatTensor` of shape `(batch_size, config.speaker_embedding_dim)`, *optional*):
            Tensor containing the speaker embeddings.
        labels (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.num_mel_bins)`, *optional*):
            Float values of target mel spectrogram. Timesteps set to `-100.0` are ignored (masked) for the loss
            computation. Spectrograms can be obtained using [`SpeechT5Processor`]. See [`SpeechT5Processor.__call__`]
            for details.
        stop_labels (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*):
            Binary tensor indicating the position of the stop token in the sequence.

        Example:

        ```python
        >>> from transformers import SpeechT5Processor, SpeechT5ForTextToSpeech, SpeechT5HifiGan, set_seed
        >>> import torch

        >>> processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_tts")
        >>> model = SpeechT5ForTextToSpeech.from_pretrained("microsoft/speecht5_tts")
        >>> vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan")

        >>> inputs = processor(text="Hello, my dog is cute", return_tensors="pt")
        >>> speaker_embeddings = torch.zeros((1, 512))  # or load xvectors from a file

        >>> set_seed(555)  # make deterministic

        >>> # generate speech
        >>> speech = model.generate(inputs["input_ids"], speaker_embeddings=speaker_embeddings, vocoder=vocoder)
        >>> speech.shape
        torch.Size([15872])
        ```
        NT©r-   r/   rÆ  rÇ  rÈ  r©  r  r}  rÊ  r8  r9  r   r   ©	r›  r  r©  r‚  rÊ  rt  rË  r  rÌ  )r~   r9  r4   r.   r¬  r  r÷  r©  rt  r   r©  r‚  rÊ  rË  r  rÌ  )r}   r   r/   rÆ  rÇ  rÈ  r©  r  rÊ  r8  r9  r}  r±  r¶  rØ  r  r–  r—  r˜  r›  Ú	criterionrà  s                         r*   r…   zSpeechT5ForTextToSpeech.forward%	  s|  € ðJ &1Ð%<�k�kÀ$Ä+ÔBYˆàÐØ#Ð+Ý?WØ˜DœKÔ8Ð:Pñ@ô @Ñ<Ð$Ð&<ð Œ{Ô4ð )Ø$(Ð!à—-’-Ø"Ø)Ø!5Ø#9Ø+Ø+ØØ1Ø/Ø!5Øð  ñ 
ô 
ˆð AE×@[Ò@[Ð\cÐdeÔ\fÑ@gÔ@gÑ=ÐÐ 5°vàˆØÐÝ/°´Ñ<Ô<ˆIØ�9ØØ&Ø%ØØØÔ(ñô ˆDð ð 	FØ+Ð-°¸¸¸´Ñ;ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå'ØØ-Ø#Ô3Ø")Ô"?Ø&Ô9Ø$Ô5Ø&-Ô&GØ")Ô"?Ø&Ô9ð

ñ 

ô 

ð 
	
r,   râ  r2   rã  Frå  ræ  rç  rè  ré  rê  c
                 ó  — |�m|                      d¦  «        }|                      d¦  «        |k    r?|                      d¦  «        dk    r|                     |d¦  «        }nt          d¦  «        ‚t          | |||||||||	¦
  «
        S )aE  
        Converts a sequence of input tokens into a sequence of mel spectrograms, which are subsequently turned into a
        speech waveform using a vocoder.

        Args:
            input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
                Indices of input sequence tokens in the vocabulary.

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

                [What are input IDs?](../glossary#input-ids)
            attention_mask (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
                Attention mask from the tokenizer, required for batched inference to signal to the model where to
                ignore padded tokens from the input_ids.
            speaker_embeddings (`torch.FloatTensor` of shape `(batch_size, config.speaker_embedding_dim)`, *optional*):
                Tensor containing the speaker embeddings.
            threshold (`float`, *optional*, defaults to 0.5):
                The generated sequence ends when the predicted stop token probability exceeds this value.
            minlenratio (`float`, *optional*, defaults to 0.0):
                Used to calculate the minimum required length for the output sequence.
            maxlenratio (`float`, *optional*, defaults to 20.0):
                Used to calculate the maximum allowed length for the output sequence.
            vocoder (`nn.Module`, *optional*):
                The vocoder that converts the mel spectrogram into a speech waveform. If `None`, the output is the mel
                spectrogram.
            output_cross_attentions (`bool`, *optional*, defaults to `False`):
                Whether or not to return the attentions tensors of the decoder's cross-attention layers.
            return_output_lengths (`bool`, *optional*, defaults to `False`):
                Whether or not to return the concrete spectrogram/waveform lengths.

        Returns:
            `tuple(torch.FloatTensor)` comprising various elements depending on the inputs:
            - when `return_output_lengths` is False
                - **spectrogram** (*optional*, returned when no `vocoder` is provided) `torch.FloatTensor` of shape
                `(output_sequence_length, config.num_mel_bins)` -- The predicted log-mel spectrogram.
                - **waveform** (*optional*, returned when a `vocoder` is provided) `torch.FloatTensor` of shape
                `(num_frames,)` -- The predicted speech waveform.
                - **cross_attentions** (*optional*, returned when `output_cross_attentions` is `True`)
                `torch.FloatTensor` of shape `(config.decoder_layers, config.decoder_attention_heads,
                output_sequence_length, input_sequence_length)` -- The outputs of the decoder's cross-attention layers.
            - when `return_output_lengths` is True
                - **spectrograms** (*optional*, returned when no `vocoder` is provided) `torch.FloatTensor` of shape
                `(batch_size, output_sequence_length, config.num_mel_bins)` -- The predicted log-mel spectrograms that
                are padded to the maximum length.
                - **spectrogram_lengths** (*optional*, returned when no `vocoder` is provided) `list[Int]` -- A list of
                all the concrete lengths for each spectrogram.
                - **waveforms** (*optional*, returned when a `vocoder` is provided) `torch.FloatTensor` of shape
                `(batch_size, num_frames)` -- The predicted speech waveforms that are padded to the maximum length.
                - **waveform_lengths** (*optional*, returned when a `vocoder` is provided) `list[Int]` -- A list of all
                the concrete lengths for each waveform.
                - **cross_attentions** (*optional*, returned when `output_cross_attentions` is `True`)
                `torch.FloatTensor` of shape `(batch_size, config.decoder_layers, config.decoder_attention_heads,
                output_sequence_length, input_sequence_length)` -- The outputs of the decoder's cross-attention layers.
        Nr   r   zUThe first dimension of speaker_embeddings must be either 1 or the same as batch_size.©rÇ   ry  r'   r  )r}   r   r/   r}  rå  ræ  rç  rè  ré  rê  rØ  r`   s               r*   Úgeneratez SpeechT5ForTextToSpeech.generate 	  s®   € ðJ Ð)Ø"Ÿš¨Ñ*Ô*ˆJØ!×&Ò& qÑ)Ô)¨ZÒ7Ð7Ø%×*Ò*¨1Ñ-Ô-°Ò2Ð2Ø);×)BÒ)BÀ:ÈqÑ)QÔ)QÐ&Ð&å$Øoñô ð õ  ØØØØØØØØØ#Ø!ñ
ô 
ð 	
r,   c
                 ó  — |�m|                      d¦  «        }
|                      d¦  «        |
k    r?|                      d¦  «        dk    r|                     |
d¦  «        }nt          d¦  «        ‚t          | |||||||||	¦
  «
        S )aÿ  
        Converts a sequence of input tokens into a sequence of mel spectrograms, which are subsequently turned into a
        speech waveform using a vocoder.

        Args:
            input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
                Indices of input sequence tokens in the vocabulary.

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

                [What are input IDs?](../glossary#input-ids)
            speaker_embeddings (`torch.FloatTensor` of shape `(batch_size, config.speaker_embedding_dim)`, *optional*):
                Tensor containing the speaker embeddings.
            attention_mask (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
                Mask to avoid performing convolution and attention on padding token indices. Mask values selected in
                `[0, 1]`:

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

                [What are attention masks?](../glossary#attention-mask)
            threshold (`float`, *optional*, defaults to 0.5):
                The generated sequence ends when the predicted stop token probability exceeds this value.
            minlenratio (`float`, *optional*, defaults to 0.0):
                Used to calculate the minimum required length for the output sequence.
            maxlenratio (`float`, *optional*, defaults to 20.0):
                Used to calculate the maximum allowed length for the output sequence.
            vocoder (`nn.Module`, *optional*, defaults to `None`):
                The vocoder that converts the mel spectrogram into a speech waveform. If `None`, the output is the mel
                spectrogram.
            output_cross_attentions (`bool`, *optional*, defaults to `False`):
                Whether or not to return the attentions tensors of the decoder's cross-attention layers.
            return_output_lengths (`bool`, *optional*, defaults to `False`):
                Whether or not to return the concrete spectrogram/waveform lengths.

        Returns:
            `tuple(torch.FloatTensor)` comprising various elements depending on the inputs:
            - when `return_output_lengths` is False
                - **spectrogram** (*optional*, returned when no `vocoder` is provided) `torch.FloatTensor` of shape
                `(output_sequence_length, config.num_mel_bins)` -- The predicted log-mel spectrogram.
                - **waveform** (*optional*, returned when a `vocoder` is provided) `torch.FloatTensor` of shape
                `(num_frames,)` -- The predicted speech waveform.
                - **cross_attentions** (*optional*, returned when `output_cross_attentions` is `True`)
                `torch.FloatTensor` of shape `(config.decoder_layers, config.decoder_attention_heads,
                output_sequence_length, input_sequence_length)` -- The outputs of the decoder's cross-attention layers.
            - when `return_output_lengths` is True
                - **spectrograms** (*optional*, returned when no `vocoder` is provided) `torch.FloatTensor` of shape
                `(batch_size, output_sequence_length, config.num_mel_bins)` -- The predicted log-mel spectrograms that
                are padded to the maximum length.
                - **spectrogram_lengths** (*optional*, returned when no `vocoder` is provided) `list[Int]` -- A list of
                all the concrete lengths for each spectrogram.
                - **waveforms** (*optional*, returned when a `vocoder` is provided) `torch.FloatTensor` of shape
                `(batch_size, num_frames)` -- The predicted speech waveforms that are padded to the maximum length.
                - **waveform_lengths** (*optional*, returned when a `vocoder` is provided) `list[Int]` -- A list of all
                the concrete lengths for each waveform.
                - **cross_attentions** (*optional*, returned when `output_cross_attentions` is `True`)
                `torch.FloatTensor` of shape `(batch_size, config.decoder_layers, config.decoder_attention_heads,
                output_sequence_length, input_sequence_length)` -- The outputs of the decoder's cross-attention layers.
        Nr   r   zUThe first dimension of speaker_embeddings must be either 1 or the same as batch size.r  )r}   r   r}  r/   rå  ræ  rç  rè  ré  rê  r`   s              r*   Úgenerate_speechz'SpeechT5ForTextToSpeech.generate_speechü	  s®   € ðR Ð)Ø"Ÿš¨Ñ*Ô*ˆJØ!×&Ò& qÑ)Ô)¨ZÒ7Ð7Ø%×*Ò*¨1Ñ-Ô-°Ò2Ð2Ø);×)BÒ)BÀ:ÈqÑ)QÔ)QÐ&Ð&å$Øoñô ð õ  ØØØØØØØØØ#Ø!ñ
ô 
ð 	
r,   ©NNNNNNNNNNNNN©NNrâ  r2   rã  NFF)rˆ   r‰   rŠ   r,  r+  r   rq   ÚclassmethodrT   r  r   r¹   rh  ri  rè  r
   rØ   r   r…   r×   r¼   r   r.  r  r  r‹   rŒ   s   @r*   r  r  	  s   ø€ € € € € ð !ÐØ!€Oð˜~ð ð ð ð ð ð ð( ð˜Tð ð ð ñ „[ðð ð .2Ø26Ø9=Ø:>ØBFØ(,Ø!%Ø)-Ø,0Ø#'Ø7;Ø+/Ø+/ðx
ð x
àÔ# dÑ*ðx
ð Ô(¨4Ñ/ðx
ð $Ô/°$Ñ6ð	x
ð
 !&Ô 0°4Ñ 7ðx
ð ˜u UÔ%6Ô7Ô8¸4Ñ?ðx
ð  ™ðx
ð ˜$‘;ðx
ð   $™;ðx
ð # T™kðx
ð ˜D‘[ðx
ð "Ô-°Ñ4ðx
ð Ô! DÑ(ðx
ð ”\ DÑ(ðx
ð  
Ð)Ñ	)ð!x
ð x
ð x
ñ „^ðx
ðt €U„]�_„_ð 37Ø7;ØØ Ø!Ø$(Ø(-Ø&+ðY
ð Y
àÔ#ðY
ð Ô(¨4Ñ/ðY
ð "Ô-°Ñ4ð	Y
ð
 ðY
ð ðY
ð ðY
ð ”˜TÑ!ðY
ð "&ðY
ð  $ðY
ð 
Ô	˜U 5Ô#4°eÔ6GÐ#GÔHÑ	HðY
ð Y
ð Y
ñ „_ðY
ðv €U„]�_„_ð 8<Ø26ØØ Ø!Ø$(Ø(-Ø&+ð]
ð ]
àÔ#ð]
ð "Ô-°Ñ4ð]
ð Ô(¨4Ñ/ð	]
ð
 ð]
ð ð]
ð ð]
ð ”˜TÑ!ð]
ð "&ð]
ð  $ð]
ð 
Ô	˜U 5Ô#4°eÔ6GÐ#GÔHÑ	Hð]
ð ]
ð ]
ñ „_ð]
ð ]
ð ]
ð ]
ð ]
r,   r  zD
    SpeechT5 Model with a speech encoder and a speech decoder.
    c                   ó  ‡ — e Zd Zdefˆ fd„Z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
e
ej                          dz  d
edz  dedz  dedz  dedz  dedz  dej        dz  dej        dz  dej        dz  de
ez  fd„¦   «         Z ej        ¦   «         	 	 	 	 	 	 	 	 d dej        dej        dz  dej	        dz  dedededej        dz  dededej        fd„¦   «         Zˆ xZS )!ÚSpeechT5ForSpeechToSpeechr~   c                 ó  •— t          ¦   «                              |¦  «         t          |¦  «        }t          |¦  «        }t	          |||¦  «        | _        t          |¦  «        | _        |                      ¦   «          d S r‚   )	rp   rq   rN  r|  r½  r  r�  r÷  r7  )r}   r~   rÕ  r  r€   s       €r*   rq   z"SpeechT5ForSpeechToSpeech.__init__c
  sp   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å8¸Ñ@Ô@ˆÝ8¸Ñ@Ô@ˆÝ% f¨n¸nÑMÔMˆŒå&BÀ6Ñ&JÔ&JˆÔ#ð 	�ŠÑÔÐÐÐr,   c                 ó\   — |                       ¦   «         j                             ¦   «          dS rÅ  rØ  rF  s    r*   rG  z0SpeechT5ForSpeechToSpeech.freeze_feature_encodero
  rÚ  r,   Nr-   r/   rÆ  rÇ  rÈ  r©  r  rÊ  r8  r9  r}  r±  r¶  r8   c                 ó’  — |
�|
n| j         j        }
|� |€t          || j         j        |¦  «        \  }}|                      ||||||||||	d¬¦  «        }|                      |d         ¦  «        \  }}}d}|
s|f|dd…         z   }|�|f|z   n|S t          |||j        |j        |j	        |j
        |j        |j        |j        ¬¦	  «	        S )a­  
        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 [`SpeechT5Processor`] should be used for padding and conversion into
            a tensor of type `torch.FloatTensor`. See [`SpeechT5Processor.__call__`] for details.
        decoder_input_values (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.num_mel_bins)`):
            Float values of input mel spectrogram.

            SpeechT5 uses an all-zero spectrum as the starting token for `decoder_input_values` generation. If
            `past_key_values` is used, optionally only the last `decoder_input_values` have to be input (see
            `past_key_values`).
        decoder_attention_mask (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_values`. Causal mask will
            also be used by default.

            If you want to change padding behavior, you should read [`SpeechT5Decoder._prepare_decoder_attention_mask`]
            and modify to your needs. See diagram 1 in [the paper](https://huggingface.co/papers/1910.13461) for more
            information on the default strategy.
        speaker_embeddings (`torch.FloatTensor` of shape `(batch_size, config.speaker_embedding_dim)`, *optional*):
            Tensor containing the speaker embeddings.
        labels (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.num_mel_bins)`, *optional*):
            Float values of target mel spectrogram. Spectrograms can be obtained using [`SpeechT5Processor`]. See
            [`SpeechT5Processor.__call__`] for details.
        stop_labels (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*):
            Binary tensor indicating the position of the stop token in the sequence.

        Example:

        ```python
        >>> from transformers import SpeechT5Processor, SpeechT5ForSpeechToSpeech, SpeechT5HifiGan, set_seed
        >>> from datasets import load_dataset
        >>> import torch

        >>> dataset = load_dataset(
        ...     "hf-internal-testing/librispeech_asr_demo", "clean", split="validation"
        ... )  # doctest: +IGNORE_RESULT
        >>> dataset = dataset.sort("id")
        >>> sampling_rate = dataset.features["audio"].sampling_rate

        >>> processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_vc")
        >>> model = SpeechT5ForSpeechToSpeech.from_pretrained("microsoft/speecht5_vc")
        >>> vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan")

        >>> # audio file is decoded on the fly
        >>> inputs = processor(audio=dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")

        >>> speaker_embeddings = torch.zeros((1, 512))  # or load xvectors from a file

        >>> set_seed(555)  # make deterministic

        >>> # generate speech
        >>> speech = model.generate_speech(inputs["input_values"], speaker_embeddings, vocoder=vocoder)
        >>> speech.shape
        torch.Size([77824])
        ```
        NTr  r   r   r  )r~   r9  r4   r.   r  r÷  r   r©  r‚  rÊ  rt  rË  r  rÌ  )r}   r-   r/   rÆ  rÇ  rÈ  r©  r  rÊ  r8  r9  r}  r±  r¶  rØ  r  rF   r  r˜  r›  rà  s                        r*   r…   z!SpeechT5ForSpeechToSpeech.forwardv
  s$  € ðX &1Ð%<�k�kÀ$Ä+ÔBYˆàÐØ#Ð+Ý?WØ˜DœKÔ8Ð:Pñ@ô @Ñ<Ð$Ð&<ð —-’-Ø%Ø)Ø!5Ø#9Ø+Ø+ØØ1Ø/Ø!5Øð  ñ 
ô 
ˆð "&×!<Ò!<¸WÀQ¼ZÑ!HÔ!HÑˆˆ;˜àˆàð 	FØ!�^ g¨a¨b¨b¤kÑ1ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå'ØØ#Ø#Ô3Ø")Ô"?Ø&Ô9Ø$Ô5Ø&-Ô&GØ")Ô"?Ø&Ô9ð

ñ 

ô 

ð 
	
r,   râ  r2   rã  Frå  ræ  rç  rè  ré  rê  c
                 ól   — |€t          j        d|j        ¬¦  «        }t          | |||||||||	¦
  «
        S )a'  
        Converts a raw speech waveform into a sequence of mel spectrograms, which are subsequently turned back into a
        speech waveform using a vocoder.

        Args:
            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 [`SpeechT5Processor`] should be used for padding and
                conversion into a tensor of type `torch.FloatTensor`. See [`SpeechT5Processor.__call__`] for details.
            speaker_embeddings (`torch.FloatTensor` of shape `(batch_size, config.speaker_embedding_dim)`, *optional*):
                Tensor containing the speaker embeddings.
            attention_mask (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
                Mask to avoid performing convolution and attention on padding token indices. Mask values selected in
                `[0, 1]`:

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

                [What are attention masks?](../glossary#attention-mask)
            threshold (`float`, *optional*, defaults to 0.5):
                The generated sequence ends when the predicted stop token probability exceeds this value.
            minlenratio (`float`, *optional*, defaults to 0.0):
                Used to calculate the minimum required length for the output sequence.
            maxlenratio (`float`, *optional*, defaults to 20.0):
                Used to calculate the maximum allowed length for the output sequence.
            vocoder (`nn.Module`, *optional*, defaults to `None`):
                The vocoder that converts the mel spectrogram into a speech waveform. If `None`, the output is the mel
                spectrogram.
            output_cross_attentions (`bool`, *optional*, defaults to `False`):
                Whether or not to return the attentions tensors of the decoder's cross-attention layers.
            return_output_lengths (`bool`, *optional*, defaults to `False`):
                Whether or not to return the concrete spectrogram/waveform lengths.

        Returns:
            `tuple(torch.FloatTensor)` comprising various elements depending on the inputs:
            - when `return_output_lengths` is False
                - **spectrogram** (*optional*, returned when no `vocoder` is provided) `torch.FloatTensor` of shape
                `(output_sequence_length, config.num_mel_bins)` -- The predicted log-mel spectrogram.
                - **waveform** (*optional*, returned when a `vocoder` is provided) `torch.FloatTensor` of shape
                `(num_frames,)` -- The predicted speech waveform.
                - **cross_attentions** (*optional*, returned when `output_cross_attentions` is `True`)
                `torch.FloatTensor` of shape `(config.decoder_layers, config.decoder_attention_heads,
                output_sequence_length, input_sequence_length)` -- The outputs of the decoder's cross-attention layers.
            - when `return_output_lengths` is True
                - **spectrograms** (*optional*, returned when no `vocoder` is provided) `torch.FloatTensor` of shape
                `(batch_size, output_sequence_length, config.num_mel_bins)` -- The predicted log-mel spectrograms that
                are padded to the maximum length.
                - **spectrogram_lengths** (*optional*, returned when no `vocoder` is provided) `list[Int]` -- A list of
                all the concrete lengths for each spectrogram.
                - **waveforms** (*optional*, returned when a `vocoder` is provided) `torch.FloatTensor` of shape
                `(batch_size, num_frames)` -- The predicted speech waveforms that are padded to the maximum length.
                - **waveform_lengths** (*optional*, returned when a `vocoder` is provided) `list[Int]` -- A list of all
                the concrete lengths for each waveform.
                - **cross_attentions** (*optional*, returned when `output_cross_attentions` is `True`)
                `torch.FloatTensor` of shape `(batch_size, config.decoder_layers, config.decoder_attention_heads,
                output_sequence_length, input_sequence_length)` -- The outputs of the decoder's cross-attention layers.
        N)r   i   rR  )r¹   rS   r¬   r  )
r}   r-   r}  r/   rå  ræ  rç  rè  ré  rê  s
             r*   r  z)SpeechT5ForSpeechToSpeech.generate_speechì
  sS   € ðT Ð%Ý!&¤¨X¸lÔ>QÐ!RÑ!RÔ!RÐåØØØØØØØØØ#Ø!ñ
ô 
ð 	
r,   r  r   )rˆ   r‰   rŠ   r   rq   rG  r   r¹   ri  rh  rè  r
   rT   rØ   r   r…   r×   r¼   r   r.  r  r‹   rŒ   s   @r*   r#  r#  ]
  s{  ø€ € € € € ð
˜~ð 
ð 
ð 
ð 
ð 
ð 
ð;ð ;ð ;ð ð 26Ø26Ø9=Ø:>ØBFØ(,Ø!%Ø)-Ø,0Ø#'Ø7;Ø+/Ø+/ðs
ð s
àÔ'¨$Ñ.ðs
ð Ô(¨4Ñ/ðs
ð $Ô/°$Ñ6ð	s
ð
 !&Ô 0°4Ñ 7ðs
ð ˜u UÔ%6Ô7Ô8¸4Ñ?ðs
ð  ™ðs
ð ˜$‘;ðs
ð   $™;ðs
ð # T™kðs
ð ˜D‘[ðs
ð "Ô-°Ñ4ðs
ð Ô! DÑ(ðs
ð ”\ DÑ(ðs
ð  
Ð)Ñ	)ð!s
ð s
ð s
ñ „^ðs
ðj €U„]�_„_ð 8<Ø26ØØ Ø!Ø$(Ø(-Ø&+ðW
ð W
àÔ'ðW
ð "Ô-°Ñ4ðW
ð Ô(¨4Ñ/ð	W
ð
 ðW
ð ðW
ð ðW
ð ”˜TÑ!ðW
ð "&ðW
ð  $ðW
ð 
Ô	ðW
ð W
ð W
ñ „_ðW
ð W
ð W
ð W
ð W
r,   r#  c                   ó:   ‡ — e Zd Zd
ˆ fd„	Zdd„Zd„ Zd„ Zd	„ Zˆ xZS )ÚHifiGanResidualBlockr   ©r   r   é   çš™™™™™¹?c                 ód  •‡ ‡‡‡— t          ¦   «                              ¦   «          |‰ _        t          j        ˆˆˆˆ fd„t          t          ‰¦  «        ¦  «        D ¦   «         ¦  «        ‰ _        t          j        ˆˆˆ fd„t          t          ‰¦  «        ¦  «        D ¦   «         ¦  «        ‰ _        d S )Nc                 ó„   •— g | ]<}t          j        ‰‰‰d ‰|         ‰                     ‰‰|         ¦  «        ¬¦  «        ‘Œ=S ©r   )rn   ÚdilationrÜ   ©r   ru   Úget_padding)rE   r  Úchannelsr0  rm   r}   s     €€€€r*   rG   z1HifiGanResidualBlock.__init__.<locals>.<listcomp>M  sf   ø€ ð 
ð 
ð 
ð õ ”	ØØØØØ% aœ[Ø ×,Ò,¨[¸(À1¼+ÑFÔFðñ ô ð
ð 
ð 
r,   c                 ól   •— g | ]0}t          j        ‰‰‰d d ‰                     ‰d ¦  «        ¬¦  «        ‘Œ1S r/  r1  )rE   rF   r3  rm   r}   s     €€€r*   rG   z1HifiGanResidualBlock.__init__.<locals>.<listcomp>Z  s^   ø€ ð 
ð 
ð 
ð õ ”	ØØØØØØ ×,Ò,¨[¸!Ñ<Ô<ðñ ô ð
ð 
ð 
r,   )	rp   rq   Úleaky_relu_sloper   r   rR   rW   Úconvs1Úconvs2)r}   r3  rm   r0  r5  r€   s   ```` €r*   rq   zHifiGanResidualBlock.__init__H  sÖ   øøøøø€ Ý‰Œ×ÒÑÔÐØ 0ˆÔå”mð
ð 
ð 
ð 
ð 
ð 
ð 
õ �s 8™}œ}Ñ-Ô-ð
ñ 
ô 
ñ
ô 
ˆŒõ ”mð
ð 
ð 
ð 
ð 
ð 
õ �s 8™}œ}Ñ-Ô-ð
ñ 
ô 
ñ
ô 
ˆŒˆˆr,   r   c                 ó   — ||z  |z
  dz  S r¤   rD   )r}   rm   r0  s      r*   r2  z HifiGanResidualBlock.get_paddingg  s   € Ø˜hÑ&¨Ñ1°aÑ7Ð7r,   c                 óæ   — t           j        j        }t          t           j        j        d¦  «        rt           j        j        j        }| j        D ]} ||¦  «         Œ| j        D ]} ||¦  «         Œd S ©NrÞ   )r   ræ   rÞ   r°   râ   r6  r7  ©r}   rÞ   r  s      r*   Úapply_weight_normz&HifiGanResidualBlock.apply_weight_normj  sƒ   € Ý”hÔ*ˆÝ•2”8Ô,¨mÑ<Ô<ð 	@Ýœ(Ô3Ô?ˆKà”[ð 	ð 	ˆEØˆK˜ÑÔÐÐØ”[ð 	ð 	ˆEØˆK˜ÑÔÐÐð	ð 	r,   c                 óª   — | j         D ]!}t          j                             |¦  «         Œ"| j        D ]!}t          j                             |¦  «         Œ"d S r‚   )r6  r   ræ   Úremove_weight_normr7  ©r}   r  s     r*   r>  z'HifiGanResidualBlock.remove_weight_normt  s`   € Ø”[ð 	/ð 	/ˆEÝŒH×'Ò'¨Ñ.Ô.Ð.Ð.Ø”[ð 	/ð 	/ˆEÝŒH×'Ò'¨Ñ.Ô.Ð.Ð.ð	/ð 	/r,   c                 ó  — t          | j        | j        ¦  «        D ]l\  }}|}t          j                             || j        ¦  «        } ||¦  «        }t          j                             || j        ¦  «        } ||¦  «        }||z   }Œm|S r‚   )r]  r6  r7  r   r  Ú
leaky_relur5  )r}   r„   Úconv1Úconv2r  s        r*   r…   zHifiGanResidualBlock.forwardz  sŒ   € Ý ¤¨T¬[Ñ9Ô9ð 	5ð 	5‰LˆE�5Ø$ˆHÝœM×4Ò4°]ÀDÔDYÑZÔZˆMØ!˜E -Ñ0Ô0ˆMÝœM×4Ò4°]ÀDÔDYÑZÔZˆMØ!˜E -Ñ0Ô0ˆMØ)¨HÑ4ˆMˆMØÐr,   )r   r*  r,  ró  )	rˆ   r‰   rŠ   rq   r2  r<  r>  r…   r‹   rŒ   s   @r*   r)  r)  G  s~   ø€ € € € € ð
ð 
ð 
ð 
ð 
ð 
ð>8ð 8ð 8ð 8ðð ð ð/ð /ð /ðð ð ð ð ð ð r,   r)  z
    HiFi-GAN vocoder.
    c                   ó’   ‡ — e Zd ZU eed<   dZdefˆ fd„Zˆ fd„Zd„ Zd„ Z	 e
d¬¦  «        dej        d	ej        fd
„¦   «         Zˆ xZS )r%  r~   r  c                 ó|  •— t          ¦   «                              |¦  «         t          |j        ¦  «        | _        t          |j        ¦  «        | _        t          j        |j	        |j
        ddd¬¦  «        | _        t          j        ¦   «         | _        t          t          |j        |j        ¦  «        ¦  «        D ]X\  }\  }}| j                             t          j        |j
        d|z  z  |j
        d|dz   z  z  ||||z
  dz  ¬¦  «        ¦  «         ŒYt          j        ¦   «         | _        t)          t          | j        ¦  «        ¦  «        D ]a}|j
        d|dz   z  z  }t          |j        |j        ¦  «        D ]4\  }}| j                             t-          ||||j        ¦  «        ¦  «         Œ5Œbt          j        |dddd¬¦  «        | _        |                      dt5          j        |j	        ¦  «        ¦  «         |                      dt5          j        |j	        ¦  «        ¦  «         |                      ¦   «          d S )Né   r   r   )rm   rn   rÜ   r¥   r  r'  )rp   rq   rW   Úresblock_kernel_sizesÚnum_kernelsÚupsample_ratesÚnum_upsamplesr   ru   Úmodel_in_dimÚupsample_initial_channelÚconv_prer   Ú	upsamplerrB  r]  Úupsample_kernel_sizesr[   ÚConvTranspose1dÚ	resblocksrR   Úresblock_dilation_sizesr)  r5  Ú	conv_postr²   r¹   rS   rY   r7  )r}   r~   r  Úupsample_raterm   r3  r0  r€   s          €r*   rq   zSpeechT5HifiGan.__init__Ž  s5  ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý˜vÔ;Ñ<Ô<ˆÔÝ  Ô!6Ñ7Ô7ˆÔÝœ	ØÔØÔ+ØØØð
ñ 
ô 
ˆŒõ œ™œˆŒÝ/8½¸VÔ=RÐTZÔTpÑ9qÔ9qÑ/rÔ/rð 		ð 		Ñ+ˆAÑ+�˜{ØŒN×!Ò!ÝÔ"ØÔ3¸¸1¹Ñ=ØÔ3¸¸aÀ!¹e¹ÑEØ +Ø(Ø(¨=Ñ8¸QÑ>ðñ ô ñô ð ð õ œ™œˆŒÝ•s˜4œ>Ñ*Ô*Ñ+Ô+ð 	vð 	vˆAØÔ6¸1ÀÀQÁ¹<ÑHˆHÝ),¨VÔ-IÈ6ÔKiÑ)jÔ)jð vð vÑ%�˜XØ”×%Ò%Õ&:¸8À[ÐRZÐ\bÔ\sÑ&tÔ&tÑuÔuÐuÐuðvõ œ 8¨Q¸AÀaÐQRÐSÑSÔSˆŒà×Ò˜V¥U¤[°Ô1DÑ%EÔ%EÑFÔFÐFØ×Ò˜W¥e¤j°Ô1DÑ&EÔ&EÑFÔFÐFð 	�ŠÑÔÐÐÐr,   c                 óÜ   •— t          ¦   «                              |¦  «         t          |t          ¦  «        r4t	          j        |j        ¦  «         t	          j        |j        ¦  «         d S d S r‚   )	rp   r  rÌ  r%  r  r&  r  r!  r'  )r}   r  r€   s     €r*   r  zSpeechT5HifiGan._init_weights´  sa   ø€ Ý‰Œ×Ò˜fÑ%Ô%Ð%Ý�f�oÑ.Ô.ð 	%ÝŒK˜œÑ$Ô$Ð$ÝŒJ�v”|Ñ$Ô$Ð$Ð$Ð$ð	%ð 	%r,   c                 ó8  — t           j        j        }t          t           j        j        d¦  «        rt           j        j        j        } || j        ¦  «         | j        D ]} ||¦  «         Œ| j        D ]}|                     ¦   «          Œ || j	        ¦  «         d S r:  )
r   ræ   rÞ   r°   râ   rM  rN  rQ  r<  rS  r;  s      r*   r<  z!SpeechT5HifiGan.apply_weight_normº  s¥   € Ý”hÔ*ˆÝ•2”8Ô,¨mÑ<Ô<ð 	@Ýœ(Ô3Ô?ˆKàˆ�D”MÑ"Ô"Ð"Ø”^ð 	ð 	ˆEØˆK˜ÑÔÐÐØ”^ð 	&ð 	&ˆEØ×#Ò#Ñ%Ô%Ð%Ð%Øˆ�D”NÑ#Ô#Ð#Ð#Ð#r,   c                 ó$  — t           j                             | j        ¦  «         | j        D ]!}t           j                             |¦  «         Œ"| j        D ]}|                     ¦   «          Œt           j                             | j        ¦  «         d S r‚   )r   ræ   r>  rM  rN  rQ  rS  r?  s     r*   r>  z"SpeechT5HifiGan.remove_weight_normÆ  sˆ   € Ý
Œ×#Ò# D¤MÑ2Ô2Ð2Ø”^ð 	/ð 	/ˆEÝŒH×'Ò'¨Ñ.Ô.Ð.Ð.Ø”^ð 	'ð 	'ˆEØ×$Ò$Ñ&Ô&Ð&Ð&Ý
Œ×#Ò# D¤NÑ3Ô3Ð3Ð3Ð3r,   a  
        Converts a log-mel spectrogram into a speech waveform. Passing a batch of log-mel spectrograms returns a batch
        of speech waveforms. Passing a single, un-batched log-mel spectrogram returns a single, un-batched speech
        waveform.
        rº  r8   c                 ó¤  — | j         j        r|| j        z
  | j        z  }|                     ¦   «         dk    }|s|                     d¦  «        }|                     dd¦  «        }|                      |¦  «        }t          | j	        ¦  «        D ]¦}t          j                             || j         j        ¦  «        } | j        |         |¦  «        } | j        || j        z           |¦  «        }t          d| j        ¦  «        D ]&}| | j        || j        z  |z            |¦  «        z  }Œ'|| j        z  }Œ§t          j                             |¦  «        }|                      |¦  «        }t%          j        |¦  «        }|s=|                     d¦  «                             dd¦  «                             d¦  «        }n|                     d¦  «        }|S )aù  
        spectrogram (`torch.FloatTensor`):
            Tensor containing the log-mel spectrograms. Can be batched and of shape `(batch_size, sequence_length,
            config.model_in_dim)`, or un-batched and of shape `(sequence_length, config.model_in_dim)`.

        Returns:
            `torch.FloatTensor`: Tensor containing the speech waveform. If the input spectrogram is batched, will be of
            shape `(batch_size, num_frames,)`. If un-batched, will be of shape `(num_frames,)`.
        r   r   r¥   r   r#   )r~   Únormalize_beforer  r'  r¶   r½   r•   rM  rR   rJ  r   r  rA  r5  rN  rQ  rH  rS  r¹   Útanhrö  rÁ   )	r}   r  rØ  Ú
is_batchedr„   r  Ú	res_stateÚjÚwaveforms	            r*   r…   zSpeechT5HifiGan.forwardÎ  sÆ  € ð" Œ;Ô'ð 	AØ&¨¬Ñ2°d´jÑ@ˆKà —_’_Ñ&Ô&¨!Ò+ˆ
Øð 	3Ø%×/Ò/°Ñ2Ô2ˆKà#×-Ò-¨a°Ñ3Ô3ˆàŸš mÑ4Ô4ˆÝ�tÔ)Ñ*Ô*ð 	9ð 	9ˆAÝœM×4Ò4°]ÀDÄKÔD`ÑaÔaˆMØ-˜DœN¨1Ô-¨mÑ<Ô<ˆMà<˜œ q¨4Ô+;Ñ';Ô<¸]ÑKÔKˆIÝ˜1˜dÔ.Ñ/Ô/ð Uð U�ØÐE˜Tœ^¨A°Ô0@Ñ,@À1Ñ,DÔEÀmÑTÔTÑT�	�	Ø%¨Ô(8Ñ8ˆMˆMåœ×0Ò0°Ñ?Ô?ˆØŸš }Ñ5Ô5ˆÝœ
 =Ñ1Ô1ˆàð 	0à$×,Ò,¨QÑ/Ô/×9Ò9¸!¸QÑ?Ô?×DÒDÀRÑHÔHˆHˆHð %×,Ò,¨QÑ/Ô/ˆHàˆr,   )rˆ   r‰   rŠ   r   r)  r+  rq   r  r<  r>  r   r¹   ri  r…   r‹   rŒ   s   @r*   r%  r%  …  sß   ø€ € € € € € ð "Ð!Ð!Ñ!Ø#€Oð$Ð4ð $ð $ð $ð $ð $ð $ðL%ð %ð %ð %ð %ð
$ð 
$ð 
$ð4ð 4ð 4ð €^ððñ ô ð( 5Ô#4ð (À5ÔCTð (ð (ð (ñô ð(ð (ð (ð (ð (r,   r%  )rÑ  r#  r  r½  r  r%  )r   Nr  r   )erÕ   r·   ÚnumpyrK   r¹   r   Útorch.nnr   r   r   Ú r   r  Úactivationsr	   Úcache_utilsr
   r   r   Ú
generationr   Úintegrations.deepspeedr   Úintegrations.fsdpr   Úmasking_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   Úmodeling_utilsr   r   ræ   r   r   Úconfiguration_speecht5r   r   Ú
get_loggerrˆ   ru  Ú_HIDDEN_STATES_START_POSITIONrØ   r<   r+   r4   rè  r¼   rh  Úndarrayrh   rj   rŽ   r—   r.  rŸ   rÚ   ró   r  rï   r  r.  r:  rk  r„  r�  rœ  r£  r¯  r¼  rê  rø  r  r  r0  rN  rX  rg  rm  r|  r„  rŠ  rŽ  r©  r½  rÑ  ri  rT   r  r  r#  r)  r%  Ú__all__rD   r,   r*   ú<module>rp     sC  ðð Ð à €€€à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ )Ð )Ð )Ð )Ð )Ð )Ø @Ð @Ð @Ð @Ð @Ð @Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð DÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ Ið 
ˆÔ	˜HÑ	%Ô	%€ð !"Ð ð %¤,ð ¸cð Ð[^ð ð ð ð ð" bfð0ð 0Ø”,ð0Ø25ð0ØKPÌ<ÐZ^ÑK^ð0ð 0ð 0ð 0ð4 /3Øðtð tØ��c�Œ?ðtàðtð ðtð Ô$ tÑ+ð	tð
 ðtð „Zðtð tð tð tðpð ð ð ð Ð#=ñ ô ð ð,ð ð ð ð Ð!;ñ ô ð ð8ð ð ð ð Ð!;ñ ô ð ð2B8ð B8ð B8ð B8ð B8¨B¬Iñ B8ô B8ð B8ðL*ð *ð *ð *ð * b¤iñ *ô *ð *ðZð ð ð ð  r¤yñ ô ð ð2"ð "ð "ð "ð "¨¬¬ñ "ô "ð "ð(ð ð ð ð ˜2œ9ñ ô ð ð%ð %ð %ð %ð %˜RœYñ %ô %ð %ðR1ð 1ð 1ð 1ð 1 ¤	ñ 1ô 1ð 1ðDð Dð Dð Dð D "¤)ñ Dô Dð DðN1ð 1ð 1ð 1ð 1 "¤)ñ 1ô 1ð 1ðh%ð %ð %ð %ð % ¤ñ %ô %ð %ðP<ð <ð <ð <ð < 2¤9ñ <ô <ð <ð2ð ð ð ð  ¤	Ð+?ñ ô ð ð""-ð "-ð "-ð "-ð "- ¤	Ð+?ñ "-ô "-ð "-ðJ&ð &ð &ð &ð & ¤Ð,@ñ &ô &ð &ð$U2ð U2ð U2ð U2ð U2˜œ	ñ U2ô U2ð U2ðpð ð ð ð ˜"œ)ñ ô ð ð06ð 6ð 6ð 6ð 6Ð5ñ 6ô 6ð 6ðrXð Xð Xð Xð XÐ5ñ Xô Xð Xðv ð/4ð /4ð /4ð /4ð /4˜oñ /4ô /4ñ „ð/4ðdn
ð n
ð n
ð n
ð n
Ð-ñ n
ô n
ð n
ðb!ð !ð !ð !ð !Ð&=ñ !ô !ð !ðH&ð &ð &ð &ð &Ð$;ñ &ô &ð &ðR
ð 
ð 
ð 
ð 
Ð#:ñ 
ô 
ð 
ð>]
ð ]
ð ]
ð ]
ð ]
Ð-ñ ]
ô ]
ð ]
ð@*ð *ð *ð *ð *Ð&=ñ *ô *ð *ðZ.ð .ð .ð .ð .Ð$;ñ .ô .ð .ðb%ð %ð %ð %ð %Ð#:ñ %ô %ð %ðP8Mð 8Mð 8Mð 8Mð 8M¨2¬9ñ 8Mô 8Mð 8Mðv:ð :ð :ð :ð :˜bœiñ :ô :ð :ðz €ððñ ô ð
J
ð J
ð J
ð J
ð J
Ð+ñ J
ô J
ñô ð
J
ðZ €ððñ ô ð
a
ð a
ð a
ð a
ð a
Ð5°ñ a
ô a
ñô ð
a
ðN 48Ø.2ØØØØ $Ø$)Ø"'ðLð LØ"ðLàÔ#ðLð Ô)¨DÑ0ðLð Ô$ tÑ+ð	Lð
 ðLð ðLð ðLð ŒY˜ÑðLð "ðLð  ðLð Ô˜˜uÔ0°%Ô2CÐCÔDÑDðLð Lð Lð Lð^ €ððñ ô ð
T
ð T
ð T
ð T
ð T
Ð5ñ T
ô T
ñô ð
T
ðn
 €ððñ ô ð
b
ð b
ð b
ð b
ð b
Ð 7ñ b
ô b
ñô ð
b
ðJ;ð ;ð ;ð ;ð ;˜2œ9ñ ;ô ;ð ;ð| €ððñ ô ð
sð sð sð sð s�oñ sô sñô ð
sðlð ð €€€r,   