§
    ‚Štj9£  ã                   óŽ  — d Z ddlZddlmZ ddlmZ ddlZddlmZ ddlm	Z
 ddlmZ dd	lmZmZmZ dd
lmZ ddlmZmZmZ ddlmZmZ ddlmZ ddlmZmZmZm Z m!Z! ddl"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/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5m6Z6  e!j7        e8¦  «        Z9 ed¬¦  «        e G d„ de¦  «        ¦   «         ¦   «         Z: G d„ dej;        ¦  «        Z< G d„ dej;        ¦  «        Z= G d „ d!e*¦  «        Z> G d"„ d#e,¦  «        Z? G d$„ d%ej;        ¦  «        Z@ G d&„ d'e¦  «        ZAe G d(„ d)e¦  «        ¦   «         ZB ed*¬¦  «         G d+„ d,eB¦  «        ¦   «         ZCe G d-„ d.e¦  «        ¦   «         ZDe G d/„ d0eD¦  «        ¦   «         ZE ed1¬¦  «         G d2„ d3eBe¦  «        ¦   «         ZF G d4„ d5ej;        ¦  «        ZG G d6„ d7ej;        ¦  «        ZHe G d8„ d9e¦  «        ¦   «         ZI ed:¬¦  «         G d;„ d<eBe5¦  «        ¦   «         ZJ G d=„ d>eH¦  «        ZK ed?¬¦  «         G d@„ dAe6eJ¦  «        ¦   «         ZLg dB¢ZMdS )CzPyTorch Parakeet model.é    N)ÚCallable)Ú	dataclass)Únné   )Úinitialization)ÚACT2FN)ÚCompileConfigÚGenerationMixinÚGenerationMode)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPoolingÚCausalLMOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚlogging)Úmaybe_autocastÚmerge_with_config_defaults)Úcapture_outputsé   )Ú	AutoModel)Ú%FastSpeech2ConformerConvolutionModule)ÚLlamaAttentionÚeager_attention_forwardé   )ÚParakeetCTCConfigÚParakeetEncoderConfigÚParakeetRNNTConfigÚParakeetTDTConfig)ÚParakeetRNNTDecoderCacheÚParakeetRNNTGenerationMixinÚParakeetTDTGenerationMixinz¨
    Extends [~modeling_outputs.BaseModelOutputWithPooling] to include the output attention mask since sequence length
    is not preserved in the model's forward.
    )Úcustom_introc                   ó2   — e Zd ZU dZdZej        dz  ed<   dS )ÚParakeetEncoderModelOutputa–  
    attention_mask (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*):
        Mask to avoid performing attention on padding token indices after sequence compression. Returned because the
        sequence length may differ from the input sequence length. Mask values selected in `[0, 1]`:

        - 1 for tokens that are **not masked**,
        - 0 for tokens that are **masked**.
    NÚattention_mask)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r+   ÚtorchÚTensorÚ__annotations__© ó    úk/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/parakeet/modular_parakeet.pyr*   r*   5   s5   € € € € € € ðð ð +/€N�E”L 4Ñ'Ð.Ð.Ñ.Ð.Ð.r4   r*   c                   ó²   ‡ — e Zd ZU ej        ed<   d	defˆ fd„Ze	 	 d
dedz  dej        fd„¦   «         Z	 ej
        ¦   «         dej        fd„¦   «         Zˆ xZS )Ú$ParakeetEncoderRelPositionalEncodingÚinv_freqNÚconfigc                 óÌ   •— t          ¦   «                              ¦   «          |j        | _        || _        |                      ||¬¦  «        }|                      d|d¬¦  «         d S )N©Údevicer8   F)Ú
persistent)ÚsuperÚ__init__Úmax_position_embeddingsr9   Ú.compute_default_relative_positional_parametersÚregister_buffer)Úselfr9   r<   r8   Ú	__class__s       €r5   r?   z-ParakeetEncoderRelPositionalEncoding.__init__L   se   ø€ Ý‰Œ×ÒÑÔÐØ'-Ô'EˆÔ$ØˆŒØ×FÒFÀvÐV\ÐFÑ]Ô]ˆØ×Ò˜Z¨¸eÐÑDÔDÐDÐDÐDr4   Úreturnc                 ó²   — d}d|t          j        d| j        dt           j        ¬¦  «                             |t           j        ¬¦  «        | j        z  z  z  }|S )Ng     ˆÃ@ç      ð?r   r   ©Údtype)r<   rI   )r0   ÚarangeÚhidden_sizeÚint64ÚtoÚfloat)r9   r<   Úbaser8   s       r5   rA   zSParakeetEncoderRelPositionalEncoding.compute_default_relative_positional_parametersS   s`   € ð
 ˆØØå”˜Q Ô 2°A½U¼[ÐIÑIÔI×LÒLÐTZÕbgÔbmÐLÑnÔnØÔ$ñ%ññ
ˆð ˆr4   Úhidden_statesc                 óˆ  — |j         d         }t          j        |dz
  | d|j        ¬¦  «        }| j        d d d …d f                              ¦   «                              |j         d         dd¦  «                             |j        ¦  «        }|d d d d …f                              ¦   «         }t          |j        j	        t          ¦  «        r|j        j	        dk    r|j        j	        nd}t          |d¬¦  «        5  |                     ¦   «         |                     ¦   «         z                       dd	¦  «        }|                     ¦   «         }|                     ¦   «         }	t          j        ||	gd¬
¦  «        }
 |
j        g |
j         d d…         ¢d‘R Ž }
d d d ¦  «         n# 1 swxY w Y   |
                     |j        ¬¦  «        S )Nr    éÿÿÿÿr;   r   ÚmpsÚcpuF)Údevice_typeÚenabledr   ©ÚdiméþÿÿÿrH   )Úshaper0   rJ   r<   r8   rN   ÚexpandrM   Ú
isinstanceÚtypeÚstrr   Ú	transposeÚsinÚcosÚstackÚreshaperI   )rC   rP   Ú
seq_lengthÚposition_idsÚinv_freq_expandedÚposition_ids_expandedrU   Úfreqsr`   ra   Ú	pos_embeds              r5   Úforwardz,ParakeetEncoderRelPositionalEncoding.forwardb   s  € à"Ô(¨Ô+ˆ
Ý”| J°¡N°Z°KÀÈMÔL`ÐaÑaÔaˆàŒM˜$    4˜-Ô(×.Ò.Ñ0Ô0×7Ò7¸Ô8KÈAÔ8NÐPRÐTUÑVÔV×YÒYÐZgÔZnÑoÔoð 	ð !-¨T°4¸¸¸¨]Ô ;× AÒ AÑ CÔ CÐõ ˜-Ô.Ô3µSÑ9Ô9ðØ>KÔ>RÔ>WÐ[`Ò>`Ð>`ð Ô Ô%Ð%àð 	õ
 ¨¸UÐCÑCÔCð 	Eð 	EØ&×,Ò,Ñ.Ô.Ð1F×1LÒ1LÑ1NÔ1NÑN×YÒYÐZ[Ð]^Ñ_Ô_ˆEØ—)’)‘+”+ˆCØ—)’)‘+”+ˆCåœ S¨# J°BÐ7Ñ7Ô7ˆIØ)˜	Ô)ÐD¨9¬?¸3¸B¸3Ô+?ÐDÀÐDÐDÐDˆIð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð �|Š| -Ô"5ˆ|Ñ6Ô6Ð6s   Ã8BFÆF"Æ%F"©N©NN)r,   r-   r.   r0   r1   r2   r"   r?   ÚstaticmethodrA   Úno_gradrj   Ú__classcell__©rD   s   @r5   r7   r7   I   s×   ø€ € € € € € ØŒlÐÐÑðEð EÐ4ð Eð Eð Eð Eð Eð Eð à/3Øðð Ø%¨Ñ,ðð 
Œðð ð ñ „\ðð €U„]�_„_ð7 U¤\ð 7ð 7ð 7ñ „_ð7ð 7ð 7ð 7ð 7r4   r7   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚParakeetEncoderFeedForwardr9   c                 ó:  •— t          ¦   «                              ¦   «          t          j        |j        |j        |j        ¬¦  «        | _        t          |j	                 | _
        t          j        |j        |j        |j        ¬¦  «        | _        |j        | _        d S )N©Úbias)r>   r?   r   ÚLinearrK   Úintermediate_sizeÚattention_biasÚlinear1r   Ú
hidden_actÚ
activationÚlinear2Úactivation_dropout©rC   r9   rD   s     €r5   r?   z#ParakeetEncoderFeedForward.__init__|   s}   ø€ Ý‰Œ×ÒÑÔÐÝ”y Ô!3°VÔ5MÐTZÔTiÐjÑjÔjˆŒÝ  Ô!2Ô3ˆŒÝ”y Ô!9¸6Ô;MÐTZÔTiÐjÑjÔjˆŒØ"(Ô";ˆÔÐÐr4   c                 óØ   — |                       |                      |¦  «        ¦  «        }t          j                             || j        | j        ¬¦  «        }|                      |¦  «        }|S )N©ÚpÚtraining)r{   ry   r   Ú
functionalÚdropoutr}   r‚   r|   )rC   rP   s     r5   rj   z"ParakeetEncoderFeedForward.forwardƒ   sY   € ØŸš¨¯ª°]Ñ(CÔ(CÑDÔDˆÝœ×-Ò-¨m¸tÔ?VÐaeÔanÐ-ÑoÔoˆØŸš ]Ñ3Ô3ˆØÐr4   )r,   r-   r.   r"   r?   rj   ro   rp   s   @r5   rr   rr   {   sT   ø€ € € € € ð<Ð4ð <ð <ð <ð <ð <ð <ðð ð ð ð ð ð r4   rr   c                   ó&   ‡ — e Zd Zddefˆ fd„Zˆ xZS )Ú ParakeetEncoderConvolutionModuleNr9   c                 óL   •— t          ¦   «                              ||¦  «         d S rk   )r>   r?   )rC   r9   Úmodule_configrD   s      €r5   r?   z)ParakeetEncoderConvolutionModule.__init__‹   s#   ø€ Ý‰Œ×Ò˜ Ñ/Ô/Ð/Ð/Ð/r4   rk   )r,   r-   r.   r"   r?   ro   rp   s   @r5   r†   r†   Š   sJ   ø€ € € € € ð0ð 0Ð4ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0r4   r†   c                   ó¬   ‡ — e Zd ZdZdedefˆ fd„Z	 ddej        dej        dz  dej        dz  d	e	e
         d
eej        ej        f         f
d„Zd„ Zˆ xZS )ÚParakeetEncoderAttentionztMulti-head attention with relative positional encoding. See section 3.3 of https://huggingface.co/papers/1901.02860.r9   Ú	layer_idxc                 ó�  •— t          ¦   «                              ||¬¦  «         d| _        t          j        |j        |j        | j        z  d¬¦  «        | _        t          j	        t          j        |j        | j        ¦  «        ¦  «        | _        t          j	        t          j        |j        | j        ¦  «        ¦  «        | _        d S )N)r‹   Frt   )r>   r?   Ú	is_causalr   rv   rK   Únum_attention_headsÚhead_dimÚrelative_k_projÚ	Parameterr0   ÚzerosÚbias_uÚbias_v©rC   r9   r‹   rD   s      €r5   r?   z!ParakeetEncoderAttention.__init__’   s˜   ø€ Ý‰Œ×Ò˜¨9ÐÑ5Ô5Ð5ØˆŒå!œy¨Ô);¸VÔ=WÐZ^ÔZgÑ=gÐnsÐtÑtÔtˆÔå”l¥5¤;¨vÔ/IÈ4Ì=Ñ#YÔ#YÑZÔZˆŒå”l¥5¤;¨vÔ/IÈ4Ì=Ñ#YÔ#YÑZÔZˆŒˆˆr4   NrP   Úposition_embeddingsr+   ÚkwargsrE   c           
      óÞ  — |j         d d…         }|\  }}||d| j        f}|                      |¦  «                             |¦  «                             dd¦  «        }	|                      |¦  «                             |¦  «                             dd¦  «        }
|                      |¦  «                             |¦  «                             dd¦  «        }t          j        | j	        j
        t          ¦  «        }|	| j                             d| j	        j        d| j        ¦  «        z   }|	| j                             d| j	        j        d| j        ¦  «        z   }|                      |¦  «        }|                     |d| j	        j        | j        ¦  «        }||                     dddd¦  «        z  }|                      |¦  «        }|dd |…f         }|| j        z  }|�5|                     |                     ¦   «         t+          d¦  «        ¦  «        } || f||
||| j        sdn| j        | j        d	œ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        }||fS )
NrR   r    r   r   r   .z-infç        )ÚqueryÚkeyÚvaluer+   r„   Úscaling)rZ   r�   Úq_projÚviewr_   Úk_projÚv_projr   Úget_interfacer9   Ú_attn_implementationr   r“   rŽ   r”   r�   ÚpermuteÚ
_rel_shiftr�   Úmasked_fill_Úlogical_notrN   r‚   Úattention_dropoutrc   Ú
contiguousÚo_proj)rC   rP   r–   r+   r—   Úinput_shapeÚ
batch_sizerd   Úhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚattention_interfaceÚquery_states_with_bias_uÚquery_states_with_bias_vÚrelative_key_statesÚ	matrix_bdÚattn_outputÚattn_weightss                      r5   rj   z ParakeetEncoderAttention.forwardœ   s•  € ð $Ô)¨#¨2¨#Ô.ˆØ!,Ñˆ
�JØ" J°°D´MÐBˆà—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆØ—[’[ Ñ/Ô/×4Ò4°\ÑBÔB×LÒLÈQÐPQÑRÔRˆ
Ø—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð $0°$´+×2BÒ2BØˆtŒ{Ô.°°4´=ñ3
ô 3
ñ $
Ð ð $0°$´+×2BÒ2BØˆtŒ{Ô.°°4´=ñ3
ô 3
ñ $
Ð ð #×2Ò2Ð3FÑGÔGÐØ1×6Ò6°zÀ2ÀtÄ{ÔGfÐhlÔhuÑvÔvÐð -Ð/B×/JÒ/JÈ1ÈaÐQRÐTUÑ/VÔ/VÑVˆ	Ø—O’O IÑ.Ô.ˆ	Ø˜c ; J ;Ð.Ô/ˆ	Ø ¤Ñ,ˆ	àÐ%ð "×.Ò.¨~×/IÒ/IÑ/KÔ/KÍUÐSYÉ]Ì]Ñ[Ô[ˆIð %8Ð$7Øð	%
à*ØØØ$Ø#œ}ÐH�C�C°$Ô2HØ”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—k’k +Ñ.Ô.ˆØ˜LÐ(Ð(r4   c                 óÞ   — |j         \  }}}}t          j                             |d¬¦  «        }|                     ||d|¦  «        }|dd…dd…dd…f                              ||||¦  «        }|S )ztRelative position shift for Shaw et al. style attention. See appendix B of https://huggingface.co/papers/1901.02860.)r    r   )ÚpadrR   Nr    )rZ   r   rƒ   r¹   rŸ   )rC   Úattention_scoresr¬   Ú	num_headsÚquery_lengthÚposition_lengths         r5   r¥   z#ParakeetEncoderAttention._rel_shiftÕ   s‚   € à?OÔ?UÑ<ˆ
�I˜|¨_Ýœ=×,Ò,Ð-=À6Ð,ÑJÔJÐØ+×0Ò0°¸YÈÈLÑYÔYÐØ+¨A¨A¨A¨q¨q¨q°!°"°"¨HÔ5×:Ò:¸:ÀyÐR^Ð`oÑpÔpÐØÐr4   rk   )r,   r-   r.   r/   r"   Úintr?   r0   r1   r   r   Útuplerj   r¥   ro   rp   s   @r5   rŠ   rŠ   �   sÜ   ø€ € € € € Ø~Ð~ð[Ð4ð [Àð [ð [ð [ð [ð [ð [ð /3ð	7)ð 7)à”|ð7)ð #œ\¨DÑ0ð7)ð œ tÑ+ð	7)ð
 Ð+Ô,ð7)ð 
ˆuŒ|˜Uœ\Ð)Ô	*ð7)ð 7)ð 7)ð 7)ðr ð  ð  ð  ð  ð  ð  r4   rŠ   c                   ón   ‡ — e Zd Zdefˆ fd„Zdej        dej        fd„Z	d
dej        dej        fd	„Z
ˆ xZS )Ú ParakeetEncoderSubsamplingConv2Dr9   c                 ó6  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        |j        | _        | j        dz
  dz  | _        t          t          j        |j        ¦  «        ¦  «        | _        t          j        ¦   «         | _        | j                             t          j        d| j        | j        | j        | j        ¬¦  «        ¦  «         | j                             t          j        ¦   «         ¦  «         t)          | j        dz
  ¦  «        D ]¶}| j                             t          j        | j        | j        | j        | j        | j        | j        ¬¦  «        ¦  «         | j                             t          j        | j        | j        d¬¦  «        ¦  «         | j                             t          j        ¦   «         ¦  «         Œ·|j        | j        | j        z  z  }t          j        |j        |z  |j        d¬¦  «        | _        d S )Nr    r   )Úkernel_sizeÚstrideÚpadding)rÃ   rÄ   rÅ   Úgroups©rÃ   Trt   )r>   r?   Úsubsampling_conv_kernel_sizerÃ   Úsubsampling_conv_striderÄ   Úsubsampling_conv_channelsÚchannelsrÅ   r¾   ÚmathÚlog2Úsubsampling_factorÚ
num_layersr   Ú
ModuleListÚlayersÚappendÚConv2dÚReLUÚrangeÚnum_mel_binsrv   rK   Úlinear)rC   r9   ÚiÚ
out_lengthrD   s       €r5   r?   z)ParakeetEncoderSubsamplingConv2D.__init__ß   sÈ  ø€ Ý‰Œ×ÒÑÔÐà!Ô>ˆÔØÔ4ˆŒØÔ8ˆŒØÔ(¨1Ñ,°Ñ2ˆŒÝ�dœi¨Ô(AÑBÔBÑCÔCˆŒõ ”m‘o”oˆŒØŒ×ÒÝŒI�a˜œ°DÔ4DÈTÌ[ÐbfÔbnÐoÑoÔoñ	
ô 	
ð 	
ð 	Œ×Ò�2œ7™9œ9Ñ%Ô%Ð%Ý�t”¨Ñ*Ñ+Ô+ð 	*ð 	*ˆAàŒK×ÒÝ”	Ø”MØ”MØ $Ô 0Øœ;Ø œLØœ=ðñ ô ñ	ô 	ð 	ð ŒK×Ò�rœy¨¬¸¼ÐSTÐUÑUÔUÑVÔVÐVàŒK×Ò�rœw™yœyÑ)Ô)Ð)Ð)àÔ(¨T¬[¸$¼/Ñ-IÑJˆ
Ý”i Ô @À:Ñ MÈvÔOaÐhlÐmÑmÔmˆŒˆˆr4   Úinput_lengthsÚ
conv_layerc                 ó¼   — t          |d¦  «        rK|j        dk    r@|j        }|j        d         }|j        d         }||d         z   |d         z   |z
  |z  dz   }|S |S )NrÄ   )r    r    r   r    )ÚhasattrrÄ   rÅ   rÃ   )rC   rÚ   rÛ   rÅ   rÃ   rÄ   Úoutput_lengthss          r5   Ú_get_output_lengthz3ParakeetEncoderSubsamplingConv2D._get_output_length  sw   € Ý�:˜xÑ(Ô(ð 	"¨ZÔ->À&Ò-HÐ-HØ Ô(ˆGØ$Ô0°Ô3ˆKØÔ& qÔ)ˆFà+¨g°a¬jÑ8¸7À1¼:ÑEÈÑSÐX^Ñ^ÐabÑbˆNØ!Ð!àÐr4   NÚinput_featuresr+   c                 ó.  — |                      d¦  «        }|�|                     d¦  «        nd }| j        D ]ˆ} ||¦  «        }t          |t          j        ¦  «        ra|�_|                      ||¦  «        }|j        d         }t          j	        ||j
        ¬¦  «        |d d …d f         k     }||d d …d d d …d f         z  }Œ‰|                     dd¦  «                             |j        d         |j        d         d¦  «        }|                      |¦  «        }|S )Nr    rR   r   r;   r   )Ú	unsqueezeÚsumrÑ   r\   r   rÓ   rß   rZ   r0   rJ   r<   r_   rc   r×   )rC   rà   r+   rP   Úcurrent_lengthsÚlayerÚcurrent_seq_lengthÚchannel_masks           r5   rj   z(ParakeetEncoderSubsamplingConv2D.forward  s<  € Ø&×0Ò0°Ñ3Ô3ˆØ4BÐ4N˜.×,Ò,¨RÑ0Ô0Ð0ÐTXˆà”[ð 
	@ð 
	@ˆEØ!˜E -Ñ0Ô0ˆMõ ˜%¥¤Ñ+Ô+ð @°Ð0JØ"&×"9Ò"9¸/È5Ñ"QÔ"Q�Ø%2Ô%8¸Ô%;Ð"å”LÐ!3¸NÔ<QÐRÑRÔRÐUdÐefÐefÐefÐhlÐelÔUmÒmð ð  ¨a¨a¨a°°q°q°q¸$Ð.>Ô!?Ñ?�øà%×/Ò/°°1Ñ5Ô5×=Ò=¸mÔ>QÐRSÔ>TÐVcÔViÐjkÔVlÐnpÑqÔqˆØŸš MÑ2Ô2ˆàÐr4   rk   )r,   r-   r.   r"   r?   r0   r1   r   rÓ   rß   rj   ro   rp   s   @r5   rÁ   rÁ   Þ   sž   ø€ € € € € ð!nÐ4ð !nð !nð !nð !nð !nð !nðF	°´ð 	È"Ì)ð 	ð 	ð 	ð 	ðð  e¤lð ÀEÄLð ð ð ð ð ð ð ð r4   rÁ   c                   ó’   ‡ — e Zd Zddededz  fˆ fd„Z	 	 ddej        dej        dz  dej        dz  dee	         d	ej        f
d
„Z
ˆ xZS )ÚParakeetEncoderBlockNr9   r‹   c                 ó$  •— t          ¦   «                              ¦   «          d| _        t          |¦  «        | _        t          ||¦  «        | _        t          |¦  «        | _        t          |¦  «        | _	        t          j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        t          j        |j        ¦  «        | _        d S )NF)r>   r?   Úgradient_checkpointingrr   Úfeed_forward1rŠ   Ú	self_attnr†   ÚconvÚfeed_forward2r   Ú	LayerNormrK   Únorm_feed_forward1Únorm_self_attÚ	norm_convÚnorm_feed_forward2Únorm_outr•   s      €r5   r?   zParakeetEncoderBlock.__init__$  sÌ   ø€ Ý‰Œ×ÒÑÔÐØ&+ˆÔ#å7¸Ñ?Ô?ˆÔÝ1°&¸)ÑDÔDˆŒÝ4°VÑ<Ô<ˆŒ	Ý7¸Ñ?Ô?ˆÔå"$¤,¨vÔ/AÑ"BÔ"BˆÔÝœ\¨&Ô*<Ñ=Ô=ˆÔÝœ fÔ&8Ñ9Ô9ˆŒÝ"$¤,¨vÔ/AÑ"BÔ"BˆÔÝœ VÔ%7Ñ8Ô8ˆŒˆˆr4   rP   r+   r–   r—   rE   c                 ó®  — |}|                       |                      |¦  «        ¦  «        }|d|z  z   }|                      |¦  «        } | j        d|||dœ|¤Ž\  }}||z   }|                      |                      |¦  «        |¬¦  «        }	||	z   }|                      |                      |¦  «        ¦  «        }
|d|
z  z   }|                      |¦  «        }|S )Ng      à?)rP   r+   r–   )r+   r3   )	rì   rñ   rò   rí   rî   ró   rï   rô   rõ   )rC   rP   r+   r–   r—   ÚresidualÚnormalized_hidden_statesr¶   Ú_Úconv_outputÚ
ff2_outputs              r5   rj   zParakeetEncoderBlock.forward3  sÿ   € ð !ˆØ×*Ò*¨4×+BÒ+BÀ=Ñ+QÔ+QÑRÔRˆØ  3¨Ñ#6Ñ6ˆà#'×#5Ò#5°mÑ#DÔ#DÐ Ø'˜œð 
Ø2Ø)Ø 3ð
ð 
ð ð	
ð 
‰ˆ�Qð &¨Ñ3ˆà—i’i §¢¨}Ñ =Ô =Èn�iÑ]Ô]ˆØ%¨Ñ3ˆà×'Ò'¨×(?Ò(?ÀÑ(NÔ(NÑOÔOˆ
Ø%¨¨jÑ(8Ñ8ˆàŸš mÑ4Ô4ˆàÐr4   rk   rl   )r,   r-   r.   r"   r¾   r?   r0   r1   r   r   rj   ro   rp   s   @r5   ré   ré   #  s¾   ø€ € € € € ð9ð 9Ð4ð 9ÀÀtÁð 9ð 9ð 9ð 9ð 9ð 9ð$ /3Ø37ð	ð à”|ðð œ tÑ+ðð #œ\¨DÑ0ð	ð
 Ð+Ô,ðð 
Œðð ð ð ð ð ð ð r4   ré   c                   óÄ   ‡ — e Zd ZU eed<   dZdZdZdZdgZ	dZ
dZdZdZdZdZeedœZ ej        ¦   «         ˆ fd	„¦   «         Zd
ej        fd„Zddej        dedz  fd„Zˆ xZS )ÚParakeetPreTrainedModelr9   Úmodelrà   ÚaudioTré   F)rP   Ú
attentionsc                 óª  •— t          ¦   «                              |¦  «         t          | j        dd¦  «        }t	          |t
          ¦  «        r:t          j        |j        d|¬¦  «         t          j        |j	        d|¬¦  «         d S t	          |t          ¦  «        r6|                     |j        ¦  «        }t          j        |j        |¦  «         d S d S )NÚinitializer_rangeg{®Gáz”?r™   )ÚmeanÚstd)r>   Ú_init_weightsÚgetattrr9   r\   rŠ   ÚinitÚnormal_r“   r”   r7   rA   Úcopy_r8   )rC   Úmoduler  Úbuffer_valuerD   s       €r5   r  z%ParakeetPreTrainedModel._init_weightsh  sÈ   ø€ å‰Œ×Ò˜fÑ%Ô%Ð%Ý�d”kÐ#6¸Ñ=Ô=ˆå�fÕ6Ñ7Ô7ð 	6ÝŒL˜œ¨S°cÐ:Ñ:Ô:Ð:ÝŒL˜œ¨S°cÐ:Ñ:Ô:Ð:Ð:Ð:Ý˜Õ DÑEÔEð 	6Ø!×PÒPÐQWÔQ^Ñ_Ô_ˆLÝŒJ�v”¨Ñ5Ô5Ð5Ð5Ð5ð	6ð 	6r4   rÚ   c                 óÂ  — t          | j        d| j        ¦  «        }|j        }|j        }t	          t          j        |j        ¦  «        ¦  «        }|dz
  dz  dz  }||z
  }|}t          |¦  «        D ]O}	t          j
        |                     t          j        ¬¦  «        |z   |¦  «        dz   }t          j        |¦  «        }ŒP|                     t          j        ¬¦  «        S )NÚencoder_configr    r   rH   rG   )r  r9   rÈ   rÉ   r¾   rÌ   rÍ   rÎ   rÕ   r0   ÚdivrM   rN   Úfloor)
rC   rÚ   r  rÃ   rÄ   rÏ   Úall_paddingsÚadd_padÚlengthsrù   s
             r5   Ú_get_subsampling_output_lengthz6ParakeetPreTrainedModel._get_subsampling_output_lengtht  sÎ   € Ý  ¤Ð.>ÀÄÑLÔLˆà$ÔAˆØÔ7ˆÝ�œ >Ô#DÑEÔEÑFÔFˆ
à# a™¨AÑ-°Ñ1ˆØ Ñ,ˆØˆå�zÑ"Ô"ð 	+ð 	+ˆAÝ”i §
¢
µ´ 
Ñ =Ô =ÀÑ GÈÑPÔPÐSVÑVˆGÝ”k 'Ñ*Ô*ˆGˆGà�zŠz¥¤	ˆzÑ*Ô*Ð*r4   Nr+   Útarget_lengthc                 óØ   — |                       |                     d¦  «        ¦  «        }|�|n|                     ¦   «         }t          j        ||j        ¬¦  «        |dd…df         k     }|S )zþ
        Convert the input attention mask to its subsampled form. `target_length` sets the desired output length, useful
        when the attention mask length differs from `sum(-1).max()` (i.e., when the longest sequence in the batch is padded)
        rR   Nr;   )r  rã   Úmaxr0   rJ   r<   )rC   r+   r  rÞ   Ú
max_lengths        r5   Ú_get_output_attention_maskz2ParakeetPreTrainedModel._get_output_attention_mask…  su   € ð
 ×<Ò<¸^×=OÒ=OÐPRÑ=SÔ=SÑTÔTˆà&3Ð&?�]�]À^×EWÒEWÑEYÔEYˆ
Ýœ j¸Ô9NÐOÑOÔOÐR`ÐabÐabÐabÐdhÐahÔRiÒiˆØÐr4   rk   )r,   r-   r.   r!   r2   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_supports_flat_attention_maskÚ_supports_sdpaÚ_supports_flex_attnÚ_supports_flash_attnÚ_can_compile_fullgraphÚ_supports_attention_backendré   rŠ   Ú_can_record_outputsr0   rn   r  r1   r  r¾   r  ro   rp   s   @r5   rý   rý   R  sÿ   ø€ € € € € € àÐÐÑØÐØ&€OØÐØ&*Ð#Ø/Ð0ÐØ$(Ð!Ø€NØÐð !Ðà!ÐØ"&Ðà-Ø.ðð Ðð
 €U„]�_„_ð	6ð 	6ð 	6ð 	6ñ „_ð	6ð+¸E¼Lð +ð +ð +ð +ð"	ð 	¸¼ð 	ÐVYÐ\`ÑV`ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r4   rý   z{
    The Parakeet Encoder model, based on the [Fast Conformer architecture](https://huggingface.co/papers/2305.05084).
    c                   ó¼   ‡ — e Zd ZU eed<   dZdefˆ fd„Zeee	e
	 	 ddej        dej        dz  ded	ee         d
ef
d„¦   «         ¦   «         ¦   «         ¦   «         Zˆ xZS )ÚParakeetEncoderr9   Úencoderc                 óä  •‡— t          ¦   «                              ‰¦  «         ‰| _        d| _        ‰j        | _        ‰j        | _        ‰j        | _        ‰j        rt          j	        ‰j
        ¦  «        nd| _        t          ‰¦  «        | _        t          ‰¦  «        | _        t!          j        ˆfd„t%          ‰j        ¦  «        D ¦   «         ¦  «        | _        |                      ¦   «          d S )NFrG   c                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r3   )ré   )Ú.0r‹   r9   s     €r5   ú
<listcomp>z,ParakeetEncoder.__init__.<locals>.<listcomp>¨  s$   ø€ ÐfÐfÐf¸Õ! &¨)Ñ4Ô4ÐfÐfÐfr4   )r>   r?   r9   rë   r„   Údropout_positionsÚ	layerdropÚscale_inputrÌ   ÚsqrtrK   Úinput_scalerÁ   Úsubsamplingr7   Úencode_positionsr   rÐ   rÕ   Únum_hidden_layersrÑ   Ú	post_initr~   s    `€r5   r?   zParakeetEncoder.__init__š  sÙ   øø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒØ&+ˆÔ#à”~ˆŒØ!'Ô!9ˆÔØÔ)ˆŒà<BÔ<NÐW�4œ9 VÔ%7Ñ8Ô8Ð8ÐTWˆÔÝ;¸FÑCÔCˆÔÝ DÀVÑ LÔ LˆÔå”mØfÐfÐfÐfÅeÈFÔLdÑFeÔFeÐfÑfÔfñ
ô 
ˆŒð 	�ŠÑÔÐÐÐr4   NTrà   r+   Úoutput_attention_maskr—   rE   c                 ó  — |                       ||¦  «        }|| j        z  }|                      |¦  «        }t          j                             || j        | j        ¬¦  «        }t          j                             || j        | j        ¬¦  «        }d}|�…|                      ||j	        d         ¬¦  «        }| 
                    d¦  «                             d|j	        d         d¦  «        }||                     dd¦  «        z  }| 
                    d¦  «        }| j        D ]:}d}	| j        r!t          j        g ¦  «        }
|
| j        k     rd}	|	s ||f||d	œ|¤Ž}Œ;t#          ||�|r|                     ¦   «         nd¬
¦  «        S )a�  
        output_attention_mask (`bool`, *optional*, defaults to `True`):
            Whether to return the output attention mask. Only effective when `attention_mask` is provided.

        Example:

        ```python
        >>> from transformers import AutoProcessor, ParakeetEncoder
        >>> from datasets import load_dataset, Audio

        >>> model_id = "nvidia/parakeet-ctc-1.1b"
        >>> processor = AutoProcessor.from_pretrained(model_id)
        >>> encoder = ParakeetEncoder.from_pretrained(model_id)

        >>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
        >>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))

        >>> inputs = processor(ds[0]["audio"]["array"])
        >>> encoder_outputs = encoder(**inputs)

        >>> print(encoder_outputs.last_hidden_state.shape)
        ```
        r€   Nr    ©r  rR   r   FT)r+   r–   )Úlast_hidden_stater+   )r1  r0  r2  r   rƒ   r„   r‚   r,  r  rZ   râ   r[   r_   rÑ   r0   Úrandr-  r*   r¾   )rC   rà   r+   r5  r—   rP   r–   Úoutput_maskÚencoder_layerÚto_dropÚdropout_probabilitys              r5   rj   zParakeetEncoder.forward­  sÂ  € ðF ×(Ò(¨¸ÑHÔHˆØ%¨Ô(8Ñ8ˆØ"×3Ò3°MÑBÔBÐåœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆÝ œm×3Ò3Ø 4Ô#9ÀDÄMð 4ñ 
ô 
Ðð ˆØÐ%Ø×9Ò9¸.ÐXeÔXkÐlmÔXnÐ9ÑoÔoˆKØ(×2Ò2°1Ñ5Ô5×<Ò<¸RÀÔATÐUVÔAWÐY[Ñ\Ô\ˆNØ+¨n×.FÒ.FÀqÈ!Ñ.LÔ.LÑLˆNØ+×5Ò5°aÑ8Ô8ˆNà!œ[ð 	ð 	ˆMàˆGØŒ}ð #Ý&+¤j°¡n¤nÐ#Ø&¨¬Ò7Ð7Ø"�Gàð Ø - Ø!ð!à#1Ø(;ð!ð !ð ð	!ð !�øõ *Ø+Ø0>Ð0JÐOdÐ0J˜;Ÿ?š?Ñ,Ô,Ð,Ðjnð
ñ 
ô 
ð 	
r4   )NT)r,   r-   r.   r"   r2   r  r?   r   r   r   r   r0   r1   Úboolr   r   r   rj   ro   rp   s   @r5   r&  r&  ‘  sõ   ø€ € € € € € ð "Ð!Ð!Ñ!Ø!ÐðÐ4ð ð ð ð ð ð ð& ØØØð /3Ø&*ð	B
ð B
àœðB
ð œ tÑ+ðB
ð  $ð	B
ð
 Ð+Ô,ðB
ð 
ðB
ð B
ð B
ñ Ôñ „_ñ  Ôñ „^ðB
ð B
ð B
ð B
ð B
r4   r&  c                   ó¾   — e Zd ZU dZej        ed<   dZeej	                 dz  ed<   dZ
eeej	                          dz  ed<   dZeeej	                          dz  ed<   dS )ÚParakeetCTCGenerateOutputaz  
    Outputs of Parakeet CTC model generation.

    Args:
        sequences (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            The generated sequences. The second dimension (sequence_length) is either equal to `max_length` or shorter
            if all batches finished early due to the `eos_token_id`.
        logits (`tuple(torch.FloatTensor)` *optional*, returned when `output_logits=True`):
            Unprocessed prediction scores of the language modeling head (scores for each vocabulary token before SoftMax)
            at each generation step. Tuple of `torch.FloatTensor` with up to `max_new_tokens` elements (one element for
            each generated token), with each tensor of shape `(batch_size, config.vocab_size)`.
        attentions (`tuple(tuple(torch.FloatTensor))`, *optional*, returned when `output_attentions=True`):
            Tuple (one element for each generated token) of tuples (one element for each layer of the decoder) of
            `torch.FloatTensor` of shape `(batch_size, num_heads, generated_length, sequence_length)`.
        hidden_states (`tuple(tuple(torch.FloatTensor))`, *optional*, returned when `output_hidden_states=True`):
            Tuple (one element for each generated token) of tuples (one element for each layer of the decoder) of
            `torch.FloatTensor` of shape `(batch_size, generated_length, hidden_size)`.
    Ú	sequencesNÚlogitsr   rP   )r,   r-   r.   r/   r0   Ú
LongTensorr2   rB  r¿   ÚFloatTensorr   rP   r3   r4   r5   r@  r@  ö  sŽ   € € € € € € ðð ð& ÔÐÐÑØ.2€FˆE�%Ô#Ô$ tÑ+Ð2Ð2Ñ2Ø9=€J��e˜EÔ-Ô.Ô/°$Ñ6Ð=Ð=Ñ=Ø<@€M�5˜˜uÔ0Ô1Ô2°TÑ9Ð@Ð@Ñ@Ð@Ð@r4   r@  c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚParakeetGenerateOutputz`
    Deprecated alias for ParakeetCTCGenerateOutput. Use ParakeetCTCGenerateOutput instead.
    c                 ón   •—  t          ¦   «         j        |i |¤Ž t                               d¦  «         d S )Nz€`ParakeetGenerateOutput` is deprecated and removed starting from version 5.11.0; please use `ParakeetCTCGenerateOutput` instead.)r>   r?   ÚloggerÚwarning_once)rC   Úargsr—   rD   s      €r5   r?   zParakeetGenerateOutput.__init__  sG   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ý×Òð Oñ	
ô 	
ð 	
ð 	
ð 	
r4   )r,   r-   r.   r/   r?   ro   rp   s   @r5   rF  rF    sB   ø€ € € € € ðð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r4   rF  zS
    Parakeet Encoder with a Connectionist Temporal Classification (CTC) head.
    c                   ó6  ‡ — e Zd ZU eed<   defˆ fd„Zee	 	 ddej	        dej	        dz  dej	        dz  de
e         def
d	„¦   «         ¦   «         Z ej        ¦   «         	 	 	 ddej	        dej	        dz  dededz  de
e         deej        z  fd„¦   «         Zˆ xZS )ÚParakeetForCTCr9   c                 ó  •— t          ¦   «                              |¦  «         t          j        |j        ¦  «        | _        t          j        |j        j        |j	        d¬¦  «        | _
        |                      ¦   «          d S )Nr    rÇ   )r>   r?   r   Úfrom_configr  r'  r   ÚConv1drK   Ú
vocab_sizeÚctc_headr4  r~   s     €r5   r?   zParakeetForCTC.__init__&  sh   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý Ô,¨VÔ-BÑCÔCˆŒåœ	 &Ô"7Ô"CÀVÔEVÐdeÐfÑfÔfˆŒà�ŠÑÔÐÐÐr4   Nrà   r+   Úlabelsr—   rE   c           
      óH  — |�|                      dd¦  «          | j        d||dœ|¤Ž}|j        }|                      |                     dd¦  «        ¦  «                             dd¦  «        }d}|��|j                             d¦  «        }	|| j        j        k    }
|
                     d¦  «        }| 	                    |
¦  «        }t          j                             |dt          j        ¬¦  «                             d	d¦  «        }t          j        j                             d
¬¦  «        5  t          j                             |||	|| j        j        | j        j        | j        j        ¬¦  «        }ddd¦  «         n# 1 swxY w Y   t+          |||j        |j        ¬¦  «        S )a¾  
        Example:

        ```python
        >>> from transformers import AutoProcessor, ParakeetForCTC
        >>> from datasets import load_dataset, Audio

        >>> model_id = "nvidia/parakeet-ctc-1.1b"
        >>> processor = AutoProcessor.from_pretrained(model_id)
        >>> model = ParakeetForCTC.from_pretrained(model_id)

        >>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
        >>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))

        >>> inputs = processor(ds[0]["audio"]["array"], text=ds[0]["text"])
        >>> outputs = model(**inputs)

        >>> print(outputs.loss)
        ```Nr5  T©rà   r+   r    r   rR   )rX   rI   r   F)rV   )ÚblankÚ	reductionÚzero_infinity)ÚlossrB  rP   r   r3   )Ú
setdefaultr'  r8  rQ  r_   r+   rã   r9   Úpad_token_idÚmasked_selectr   rƒ   Úlog_softmaxr0   Úfloat32ÚbackendsÚcudnnÚflagsÚctc_lossÚctc_loss_reductionÚctc_zero_infinityr   rP   r   )rC   rà   r+   rR  r—   Úencoder_outputsrP   rB  rX  Úencoder_lengthsÚlabels_maskÚtarget_lengthsÚflattened_targetsÚ	log_probss                 r5   rj   zParakeetForCTC.forward.  sî  € ð: ÐØ×ÒÐ5°tÑ<Ô<Ð<Ø&˜$œ,ð 
Ø)Ø)ð
ð 
ð ð
ð 
ˆð (Ô9ˆØ—’˜}×6Ò6°q¸!Ñ<Ô<Ñ=Ô=×GÒGÈÈ1ÑMÔMˆàˆØÑØ-Ô<×@Ò@ÀÑDÔDˆOð ! D¤KÔ$<Ò<ˆKØ(Ÿ_š_¨RÑ0Ô0ˆNØ &× 4Ò 4°[Ñ AÔ AÐõ œ×1Ò1°&¸bÍÌÐ1ÑVÔV×`Ò`ÐabÐdeÑfÔfˆIå”Ô%×+Ò+°EÐ+Ñ:Ô:ð 	ð 	Ý”}×-Ò-ØØ%Ø#Ø"Øœ+Ô2Ø"œkÔ<Ø"&¤+Ô"?ð .ñ ô �ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ØØØ)Ô7Ø&Ô1ð	
ñ 
ô 
ð 	
s   Ä+AE<Å<F ÆF FÚreturn_dict_in_generateÚcompile_configc                 óH  — |�|                       |¦  «        n| j        }d|d<    |d
||dœ|¤Ž}|j                             d¬¦  «        }|�2|                      ||j        d         ¬¦  «        }| j        j        || <   |r"t          ||j        |j	        |j
        ¬	¦  «        S |S )aÜ  
        compile_config ([`~generation.CompileConfig`], *optional*):
            If provided, `torch.compile` will be applied to the forward calls in the decoding loop.

        Example:

        ```python
        >>> from transformers import AutoProcessor, ParakeetForCTC
        >>> from datasets import load_dataset, Audio

        >>> model_id = "nvidia/parakeet-ctc-1.1b"
        >>> processor = AutoProcessor.from_pretrained(model_id)
        >>> model = ParakeetForCTC.from_pretrained(model_id)

        >>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
        >>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))

        >>> inputs = processor(ds[0]["audio"]["array"], text=ds[0]["text"])
        >>> predicted_ids = model.generate(**inputs)
        >>> transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)

        >>> print(transcription)
        ```
        NTÚreturn_dictrT  rR   rW   r    r7  )rA  rB  r   rP   r3   )Úget_compiled_callÚ__call__rB  Úargmaxr  rZ   r9   rZ  r@  r   rP   )	rC   rà   r+   rj  rk  r—   Úmodel_forwardÚoutputsrA  s	            r5   ÚgeneratezParakeetForCTC.generatet  sí   € ðB CQÐB\˜×.Ò.¨~Ñ>Ô>Ð>ÐbfÔboˆà $ˆˆ}ÑØ"/ -ð #
Ø)Ø)ð#
ð #
ð ð#
ð #
ˆð ”N×)Ò)¨bÐ)Ñ1Ô1ˆ	ð Ð%Ø!×<Ò<¸^Ð[dÔ[jÐklÔ[mÐ<ÑnÔnˆNØ)-¬Ô)AˆI�~�oÑ&à"ð 	Ý,Ø#Ø”~Ø"Ô-Ø%Ô3ð	ñ ô ð ð Ðr4   rl   )NFN)r,   r-   r.   r!   r2   r?   r   r   r0   r1   r   r   r   rj   rn   r>  r	   r@  rC  rs  ro   rp   s   @r5   rL  rL    sl  ø€ € € € € € ð ÐÐÑðÐ0ð ð ð ð ð ð ð Øð /3Ø&*ð	B
ð B
àœðB
ð œ tÑ+ðB
ð ”˜tÑ#ð	B
ð
 Ð+Ô,ðB
ð 
ðB
ð B
ð B
ñ Ôñ „^ðB
ðH €U„]�_„_ð /3Ø(-Ø/3ð9ð 9àœð9ð œ tÑ+ð9ð "&ð	9ð
 &¨Ñ,ð9ð Ð+Ô,ð9ð 
# UÔ%5Ñ	5ð9ð 9ð 9ñ „_ð9ð 9ð 9ð 9ð 9r4   rL  c                   óZ   ‡ — e Zd ZdZdefˆ fd„Z	 d	dej        dedz  dej	        fd„Z
ˆ xZS )
ÚParakeetRNNTDecoderz'LSTM-based prediction network For RNN-Tr9   c                 óH  •— t          ¦   «                              ¦   «          |j        | _        t          j        |j        |j        ¦  «        | _        t          j        |j        |j        |j	        d¬¦  «        | _
        t          j        |j        |j        ¦  «        | _        d S )NT)Ú
input_sizerK   rÏ   Úbatch_first)r>   r?   Úblank_token_idr   Ú	EmbeddingrP  Údecoder_hidden_sizeÚ	embeddingÚLSTMÚnum_decoder_layersÚlstmrv   Údecoder_projectorr~   s     €r5   r?   zParakeetRNNTDecoder.__init__´  sŒ   ø€ Ý‰Œ×ÒÑÔÐØ$Ô3ˆÔÝœ fÔ&7¸Ô9SÑTÔTˆŒÝ”GØÔ1ØÔ2ØÔ0Øð	
ñ 
ô 
ˆŒ	õ "$¤¨6Ô+EÀvÔGaÑ!bÔ!bˆÔÐÐr4   NÚ	input_idsÚcacherE   c                 ó¸  — |�7|d d …df         | j         k    }|j        r|                     ¦   «         r|j        S |                      |¦  «        }|�-|j        }|s|                     |¦  «         |j        |j        f}nd }|                      ||¦  «        \  }\  }}	|  	                    |¦  «        }
|�'|r| nd }| 
                    |
||	|¬¦  «         |j        S |
S )NrR   )Úmask)ry  Úis_initializedÚallr‚  r|  Úlazy_initializationÚhidden_stateÚ
cell_stater  r€  Úupdate)rC   r�  r‚  Ú
blank_maskÚ
embeddingsÚwas_initializedÚhidden_cell_statesÚlstm_outputrˆ  r‰  Údecoder_outputr„  s               r5   rj   zParakeetRNNTDecoder.forwardÀ  s  € ð
 ÐØ" 1 1 1 b 5Ô)¨TÔ-@Ò@ˆJàÔ#ð #¨
¯ªÑ(8Ô(8ð #Ø”{Ð"à—^’^ IÑ.Ô.ˆ
ð ÐØ#Ô2ˆOØ"ð 6Ø×)Ò)¨*Ñ5Ô5Ð5Ø"'Ô"4°eÔ6FÐ!GÐÐà!%Ðà26·)²)¸JÐHZÑ2[Ô2[Ñ/ˆÑ/�l JØ×/Ò/°Ñ<Ô<ˆàÐØ"1Ð;�J�;�;°tˆDØ�LŠL˜¨°zÈˆLÑMÔMÐMØ”;ÐàÐr4   rk   )r,   r-   r.   r/   r#   r?   r0   rC  r%   r1   rj   ro   rp   s   @r5   ru  ru  ±  s–   ø€ € € € € Ø1Ð1ð
cÐ1ð 
cð 
cð 
cð 
cð 
cð 
cð 26ðð àÔ#ðð (¨$Ñ.ðð 
Œð	ð ð ð ð ð ð ð r4   ru  c                   ót   ‡ — e Zd ZdZdefˆ fd„Zdej        dej        deej        ej        f         fd„Z	ˆ xZ
S )ÚParakeetRNNTJointNetworkzPJoint network that combines encoder and decoder outputs to predict token logits.r9   c                 óÖ   •— t          ¦   «                              ¦   «          t          |j                 | _        t          j        |j        |j        ¦  «        | _	        |j        | _        d S rk   )
r>   r?   r   rz   r{   r   rv   r{  rP  Úheadr~   s     €r5   r?   z!ParakeetRNNTJointNetwork.__init__ä  sO   ø€ Ý‰Œ×ÒÑÔÐÝ  Ô!2Ô3ˆŒÝ”I˜fÔ8¸&Ô:KÑLÔLˆŒ	Ø Ô+ˆŒˆˆr4   Údecoder_hidden_statesÚencoder_hidden_statesrE   c                 ó\   — |                       ||z   ¦  «        }|                      |¦  «        S rk   )r{   r”  )rC   r•  r–  Újoint_outputs       r5   rj   z ParakeetRNNTJointNetwork.forwardê  s.   € ð
 —’Ð'<Ð?TÑ'TÑUÔUˆØ�yŠy˜Ñ&Ô&Ð&r4   )r,   r-   r.   r/   r#   r?   r0   r1   r¿   rj   ro   rp   s   @r5   r’  r’  á  s�   ø€ € € € € ØZÐZð,Ð1ð ,ð ,ð ,ð ,ð ,ð ,ð'à$œ|ð'ð  %œ|ð'ð 
ˆuŒ|˜Uœ\Ð)Ô	*ð	'ð 'ð 'ð 'ð 'ð 'ð 'ð 'r4   r’  c                   ód   — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dZ	e
dz  ed<   dS )ÚParakeetRNNTOutputa÷  
    Output of the Parakeet RNN-T forward pass.

    Args:
        loss (`torch.FloatTensor`, *optional*):
            RNN-T loss, returned when `labels` are provided.
        logits (`torch.FloatTensor`):
            Joint token logits. Shape is `(batch, T, U+1, vocab)` for training
            or `(batch, 1, 1, vocab)` for single-step inference.
        decoder_cache (`ParakeetRNNTDecoderCache`, *optional*):
            Decoder LSTM cache containing hidden state, cell state, and last output.
    NrX  rB  Údecoder_cache)r,   r-   r.   r/   rX  r0   rD  r2   rB  r›  r%   r3   r4   r5   rš  rš  ó  sd   € € € € € € ðð ð &*€Dˆ%Ô
˜dÑ
"Ð)Ð)Ñ)Ø'+€FˆEÔ Ñ$Ð+Ð+Ñ+Ø59€MÐ+¨dÑ2Ð9Ð9Ñ9Ð9Ð9r4   rš  z?
    Parakeet Encoder with an RNN-T (RNN Transducer) head.
    c                   ón  ‡ — e Zd ZU eed<   dgZej        gZdefˆ fd„Z	e
	 ddej        dej        dz  dee         defd	„¦   «         Zee
	 	 	 	 	 	 	 ddej        dz  dej        dz  d
ej        dz  dedz  dedz  deeej                 z  dz  dej        dz  dee         defd„¦   «         ¦   «         Zˆ xZS )ÚParakeetForRNNTr9   ru  c                 óh  •— t          ¦   «                              |¦  «         t          j        |j        ¦  «        | _        t          j        |j        j        |j	        ¦  «        | _
        t          |¦  «        | _        t          |¦  «        | _        |j        | _        |                      ¦   «          d S rk   )r>   r?   r   rN  r  r'  r   rv   rK   r{  Úencoder_projectorru  Údecoderr’  ÚjointÚmax_symbols_per_stepr4  r~   s     €r5   r?   zParakeetForRNNT.__init__  sŒ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý Ô,¨VÔ-BÑCÔCˆŒÝ!#¤¨6Ô+@Ô+LÈfÔNhÑ!iÔ!iˆÔÝ*¨6Ñ2Ô2ˆŒÝ-¨fÑ5Ô5ˆŒ
Ø$*Ô$?ˆÔ!à�ŠÑÔÐÐÐr4   Nrà   r+   r—   rE   c                 ód   —  | j         d||dœ|¤Ž}|                      |j        ¦  «        |_        |S )NrT  r3   )r'  rŸ  r8  Úpooler_output)rC   rà   r+   r—   rd  s        r5   Úget_audio_featuresz"ParakeetForRNNT.get_audio_features  sR   € ð '˜$œ,ð 
Ø)Ø)ð
ð 
ð ð
ð 
ˆð
 )-×(>Ò(>¸Ô?`Ñ(aÔ(aˆÔ%ØÐr4   Údecoder_input_idsr›  Úuse_decoder_cacherd  rR  c           
      ó„  — |€ | j         d	||dœ|¤Ž}|r|€t          | j        ¦  «        }|                      ||¬¦  «        }	|                      |j        dd…dd…ddd…f         |	dd…ddd…dd…f         ¬¦  «                             d¦  «        }
d}|�ƒ|j                             d¦  «        } | j	        d	|
dd…dt          |                     ¦   «         ¦  «        …f         |||| j        j        k                         d¦  «        | j        j        dœ|¤Ž}t          ||
|j        |j        |j        |j        |¬¦  «        S )
a?  
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, 1)`, *optional*):
            Decoder input token ids for single-step inference.
        decoder_cache (`ParakeetRNNTDecoderCache`, *optional*):
            Decoder LSTM cache. When provided and initialized, the cached `decoder_output` is reused
            (e.g. during blank-skipping) instead of running the decoder. When `input_ids` is provided,
            the decoder runs and the cache is updated in-place.
        use_decoder_cache (`bool`, *optional*):
            Whether to use a decoder cache. When `True` and `decoder_cache` is `None`, a new cache
            is created automatically during the forward pass.
        encoder_outputs (`tuple(torch.FloatTensor)`, *optional*):
            Pre-computed encoder outputs (last_hidden_state, pooler_output, hidden_states, attentions, attention_mask).
            Can be a tuple or `ParakeetEncoderModelOutput`.

        Example:

        ```python
        >>> from transformers import AutoProcessor, ParakeetForRNNT
        >>> from datasets import load_dataset, Audio

        >>> model_id = "nvidia/parakeet-rnnt-0.6b"
        >>> processor = AutoProcessor.from_pretrained(model_id)
        >>> model = ParakeetForRNNT.from_pretrained(model_id)

        >>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
        >>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))

        >>> inputs = processor(ds[0]["audio"]["array"])
        >>> outputs = model(**inputs)
        ```
        NrT  ©r‚  ©r–  r•  r   rR   )rB  rR  Úlogit_lengthsÚlabel_lengthsry  ©rX  rB  r8  r¤  rP   r   r›  r3   )r¥  r%   r9   r   r¡  r¤  Úsqueezer+   rã   Úloss_functionr¾   r  ry  rš  r8  rP   r   )rC   rà   r+   r¦  r›  r§  rd  rR  r—   r•  rB  rX  r«  s                r5   rj   zParakeetForRNNT.forward*  s«  € ðX Ð"Ø5˜dÔ5ð Ø-Ø-ðð ð ðð ˆOð ð 	B Ð!6Ý4°T´[ÑAÔAˆMà $§¢Ð->Àm Ñ TÔ TÐØ—’Ø"1Ô"?ÀÀÀÀ1À1À1ÀdÈAÈAÈAÀÔ"NØ"7¸¸¸¸4ÀÀÀÀAÀAÀA¸Ô"Fð ñ 
ô 
÷ Š'�!‰*Œ*ð 	ð
 ˆØÐØ+Ô:×>Ò>¸rÑBÔBˆMØ%�4Ô%ð Ø˜a˜a˜aÐ!;¥3 }×'8Ò'8Ñ':Ô':Ñ#;Ô#;Ð!;Ð;Ô<ØØ+Ø%¨¬Ô)CÒC×HÒHÈÑLÔLØ#œ{Ô9ðð ð ðð ˆDõ "ØØØ-Ô?Ø)Ô7Ø)Ô7Ø&Ô1Ø'ð
ñ 
ô 
ð 	
r4   rk   ©NNNNNNN)r,   r-   r.   r#   r2   r  r   ÚGREEDY_SEARCHÚ_supported_generation_modesr?   r   r0   r1   r   r   r*   r¥  r   rC  r%   r>  r¿   rD  rš  rj   ro   rp   s   @r5   r�  r�    sº  ø€ € € € € € ð ÐÐÑØ.Ð/ÐØ#1Ô#?Ð"@ÐðÐ1ð ð ð ð ð ð ð ð /3ðð àœðð œ tÑ+ðð Ð+Ô,ð	ð
 
$ðð ð ñ Ôðð Øð /3Ø.2Ø59Ø9=Ø)-ØX\Ø&*ðN
ð N
àœ tÑ+ðN
ð œ tÑ+ðN
ð !Ô+¨dÑ2ð	N
ð
 0°$Ñ6ðN
ð   $™;ðN
ð 4°e¸EÔ<MÔ6NÑNÐQUÑUðN
ð ”˜tÑ#ðN
ð Ð+Ô,ðN
ð 
ðN
ð N
ð N
ñ Ôñ „^ðN
ð N
ð N
ð N
ð N
r4   r�  c                   ó(   ‡ — e Zd ZdZdefˆ fd„Zˆ xZS )ÚParakeetTDTJointNetworka
  Extends the RNN-T joint network with a duration head.

    The only difference from [`ParakeetRNNTJointNetwork`] is the output width of `head`: it grows from
    `vocab_size` to `vocab_size + len(durations)` so the network jointly predicts tokens and durations.
    r9   c                 ó¼   •— t          ¦   «                              |¦  «         t          j        |j        |j        t          |j        ¦  «        z   ¦  «        | _        d S rk   )	r>   r?   r   rv   r{  rP  ÚlenÚ	durationsr”  r~   s     €r5   r?   z ParakeetTDTJointNetwork.__init__„  sI   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”I˜fÔ8¸&Ô:KÍcÐRXÔRbÑNcÔNcÑ:cÑdÔdˆŒ	ˆ	ˆ	r4   )r,   r-   r.   r/   r$   r?   ro   rp   s   @r5   r´  r´  }  sZ   ø€ € € € € ðð ðeÐ0ð eð eð eð eð eð eð eð eð eð er4   r´  zG
    Parakeet Encoder with a TDT (Token Duration Transducer) head.
    c                   ó  ‡ — e Zd ZU eed<   defˆ fd„Zee	 	 	 	 	 	 	 ddej	        dz  dej	        dz  dej
        dz  dedz  dedz  d	eeej                 z  dz  d
ej	        dz  dee         defd„¦   «         ¦   «         Zˆ xZS )ÚParakeetForTDTr9   c                 óš   •— t          ¦   «                              |¦  «         t          |¦  «        | _        |                      ¦   «          d S rk   )r>   r?   r´  r¡  r4  r~   s     €r5   r?   zParakeetForTDT.__init__‘  s@   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý,¨VÑ4Ô4ˆŒ
à�ŠÑÔÐÐÐr4   Nrà   r+   r¦  r›  r§  rd  rR  r—   rE   c                 ó’  — |€ | j         d
||dœ|¤Ž}|r|€t          | j        ¦  «        }|                      ||¬¦  «        }	|                      |j        dd…dd…ddd…f         |	dd…ddd…dd…f         ¬¦  «                             d¦  «        }
d}|�Š | j        d
|
dd| j        j        …f         |
d| j        j        d…f         ||j	         
                    d¦  «        || j        j        k     
                    d¦  «        | j        j        | j        j        dœ|¤Ž}t          ||
|j        |j        |j        |j        |¬	¦  «        S )a?  
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, 1)`, *optional*):
            Decoder input token ids for single-step inference.
        decoder_cache (`ParakeetRNNTDecoderCache`, *optional*):
            Decoder LSTM cache. When provided and initialized, the cached `decoder_output` is reused
            (e.g. during blank-skipping) instead of running the decoder. When `input_ids` is provided,
            the decoder runs and the cache is updated in-place.
        use_decoder_cache (`bool`, *optional*):
            Whether to use a decoder cache. When `True` and `decoder_cache` is `None`, a new cache
            is created automatically during the forward pass.
        encoder_outputs (`tuple(torch.FloatTensor)`, *optional*):
            Pre-computed encoder outputs (last_hidden_state, pooler_output, hidden_states, attentions, attention_mask).
            Can be a tuple or `ParakeetEncoderModelOutput`.

        Example:

        ```python
        >>> from transformers import AutoProcessor, ParakeetForTDT
        >>> from datasets import load_dataset, Audio

        >>> model_id = "nvidia/parakeet-tdt-0.6b-v3"
        >>> processor = AutoProcessor.from_pretrained(model_id)
        >>> model = ParakeetForTDT.from_pretrained(model_id)

        >>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
        >>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))

        >>> inputs = processor(ds[0]["audio"]["array"])
        >>> outputs = model(**inputs)
        ```
        NrT  r©  rª  r   .rR   )Útoken_logitsÚduration_logitsrR  r«  r¬  ry  r·  r­  r3   )r¥  r%   r9   r   r¡  r¤  r®  r¯  rP  r+   rã   rZ  ry  r·  rš  r8  rP   r   )rC   rà   r+   r¦  r›  r§  rd  rR  r—   r•  rB  rX  s               r5   rj   zParakeetForTDT.forward—  s³  € ðX Ð"Ø5˜dÔ5ð Ø-Ø-ðð ð ðð ˆOð ð 	B Ð!6Ý4°T´[ÑAÔAˆMà $§¢Ð->Àm Ñ TÔ TÐØ—’Ø"1Ô"?ÀÀÀÀ1À1À1ÀdÈAÈAÈAÀÔ"NØ"7¸¸¸¸4ÀÀÀÀAÀAÀA¸Ô"Fð ñ 
ô 
÷ Š'�!‰*Œ*ð 	ð
 ˆØÐØ%�4Ô%ð 	Ø# CÐ)A¨4¬;Ô+AÐ)AÐ$AÔBØ & s¨D¬KÔ,BÐ,DÐ,DÐ'DÔ EØØ-Ô<×@Ò@ÀÑDÔDØ%¨¬Ô)AÒA×FÒFÀrÑJÔJØ#œ{Ô9Øœ+Ô/ð	ð 	ð ð	ð 	ˆDõ "ØØØ-Ô?Ø)Ô7Ø)Ô7Ø&Ô1Ø'ð
ñ 
ô 
ð 	
r4   r°  )r,   r-   r.   r$   r2   r?   r   r   r0   r1   rC  r%   r>  r*   r¿   rD  r   r   rš  rj   ro   rp   s   @r5   r¹  r¹  ‰  sE  ø€ € € € € € ð ÐÐÑðÐ0ð ð ð ð ð ð ð Øð /3Ø.2Ø59Ø9=Ø)-ØX\Ø&*ðO
ð O
àœ tÑ+ðO
ð œ tÑ+ðO
ð !Ô+¨dÑ2ð	O
ð
 0°$Ñ6ðO
ð   $™;ðO
ð 4°e¸EÔ<MÔ6NÑNÐQUÑUðO
ð ”˜tÑ#ðO
ð Ð+Ô,ðO
ð 
ðO
ð O
ð O
ñ Ôñ „^ðO
ð O
ð O
ð O
ð O
r4   r¹  )rL  r�  r¹  r&  rý   )Nr/   rÌ   Úcollections.abcr   Údataclassesr   r0   r   Ú r   r  Úactivationsr   Ú
generationr	   r
   r   Úmodeling_layersr   Úmodeling_outputsr   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úautor   Ú4fastspeech2_conformer.modeling_fastspeech2_conformerr   Úllama.modeling_llamar   r   Úconfiguration_parakeetr!   r"   r#   r$   Úgeneration_parakeetr%   r&   r'   Ú
get_loggerr,   rH  r*   ÚModuler7   rr   r†   rŠ   rÁ   ré   rý   r&  r@  rF  rL  ru  r’  rš  r�  r´  r¹  Ú__all__r3   r4   r5   ú<module>rÒ     sj  ðð Ð à €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !à €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ð [Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð ð ð ð ð ð ð HÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø Ð Ð Ð Ð Ð Ø hÐ hÐ hÐ hÐ hÐ hØ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ sÐ sÐ sÐ sÐ sÐ sÐ sÐ sÐ sÐ sÐ sÐ sðð ð ð ð ð ð ð ð ð ð 
ˆÔ	˜HÑ	%Ô	%€ð €ððñ ô ð ð
/ð 
/ð 
/ð 
/ð 
/Ð!;ñ 
/ô 
/ñ „ñô ð
/ð/7ð /7ð /7ð /7ð /7¨2¬9ñ /7ô /7ð /7ðdð ð ð ð  ¤ñ ô ð ð0ð 0ð 0ð 0ð 0Ð'Lñ 0ô 0ð 0ð
L ð L ð L ð L ð L ˜~ñ L ô L ð L ð^Bð Bð Bð Bð B r¤yñ Bô Bð BðJ,ð ,ð ,ð ,ð ,Ð5ñ ,ô ,ð ,ð^ ð;ð ;ð ;ð ;ð ;˜oñ ;ô ;ñ „ð;ð| €ððñ ô ð
]
ð ]
ð ]
ð ]
ð ]
Ð-ñ ]
ô ]
ñô ð
]
ð@ ðAð Að Að Að A ñ Aô Añ „ðAð4 ð	
ð 	
ð 	
ð 	
ð 	
Ð6ñ 	
ô 	
ñ „ð	
ð €ððñ ô ð
Kð Kð Kð Kð KÐ,¨oñ Kô Kñô ð
Kð\-ð -ð -ð -ð -˜"œ)ñ -ô -ð -ð`'ð 'ð 'ð 'ð '˜rœyñ 'ô 'ð 'ð$ ð:ð :ð :ð :ð :Ð3ñ :ô :ñ „ð:ð& €ððñ ô ð
n
ð n
ð n
ð n
ð n
Ð-Ð/Jñ n
ô n
ñô ð
n
ðb	eð 	eð 	eð 	eð 	eÐ6ñ 	eô 	eð 	eð €ððñ ô ð
Z
ð Z
ð Z
ð Z
ð Z
Ð/°ñ Z
ô Z
ñô ð
Z
ðz pÐ
oÐ
o€€€r4   