+
    œ°³j±¾  ã                   ó<  € ^ RI t ^ RIHt ^ RIHt ^ RIt^ RIt^ RIH	t	 ^ RI
H	u Ht ^ RIHt ^RIHt ^RIHt ^RIHt ^RIHtHt ^R	IHt ^R
IHtHt ^RIHtHt ^RI H!t! ^RI"H#t#H$t$H%t%H&t& ^RI'H(t( ^RI)H*t* ^RI+H,t, ^RI-H.t. ]%] ! R R]#4      4       4       t/]%] ! R R]#4      4       4       t0]%] ! R R]#4      4       4       t1 ! R R]	Pd                  4      t3 ! R R]	Pd                  4      t4R t5]! R4      RKR l4       t6R R  lt7RLR! R" llt8]! ]64       ! R# R$]	Pd                  4      4       t9]! R%4       ! R& R']	Pd                  4      4       t: ! R( R)]4      t; ! R* R+]	Pd                  4      t<R, t= ! R- R.]	Pd                  4      t> ! R/ R0]	Pd                  4      t? ! R1 R2]	Pd                  4      t@ ! R3 R4]	Pd                  4      tA ! R5 R6]	Pd                  4      tB ! R7 R8]	Pd                  4      tC ! R9 R:]	Pd                  4      tD ! R; R<]	Pd                  4      tE ! R= R>]	Pd                  4      tF ! R? R@]	Pd                  4      tG ! RA RB]	Pd                  4      tH ! RC RD]	Pd                  4      tI]% ! RE RF]4      4       tJ]%! RGRH7       ! RI RJ]J4      4       tKRJRF.tLR# )Mé    N)ÚCallable)Ú	dataclass)Ú	Parameter)Úinitialization)ÚACT2FN)ÚCache)Úuse_kernel_forward_from_hubÚuse_kernelized_func)ÚGradientCheckpointingLayer)ÚROPE_INIT_FUNCTIONSÚdynamic_rope_update)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Údeprecate_kwarg)Úmaybe_autocast)Ú	AutoModel©ÚXcodec2Configc                   ó@   a € ] tR t^-t o RtRtRtRtRtV 3R lt	Rt
V tR# )ÚXcodec2Outputa   
audio_values (`torch.FloatTensor` of shape `(batch_size, 1, sequence_length)`, *optional*):
    Decoded audio waveform values in the time domain, obtained using the decoder
    part of Xcodec2. These represent the reconstructed audio signal.
audio_codes (`torch.LongTensor` of shape `(batch_size, 1, codes_length)`, *optional*):
    Discrete code embeddings computed using `model.encode`. These are the quantized
    representations of the input audio used for further processing or generation.
latents (`torch.Tensor` of shape `(batch_size, dimension, time_steps)`):
    Quantized continuous representation of input's embedding.
audio_codes_mask (`torch.int32` of shape `(batch_size, 1, codes_length)`, *optional*):
    Downsampled `padding_mask` for indicating valid audio codes in `audio_codes`.
Nc                óÒ   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   # )é   NÚaudio_valuesÚaudio_codesÚlatentsÚaudio_codes_mask)ÚtorchÚFloatTensorÚ
LongTensorÚTensor)ÚformatÚ__classdict__s   "€Úm/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/xcodec2/modeling_xcodec2.pyÚ__annotate__ÚXcodec2Output.__annotate__-   sa   ø‡ ‚ ñ  ×#Ñ# dÕ*Ñ1ñ! ñ" ×!Ñ! DÕ(Ñ/ñ# ñ$ �\‰\˜DÕ Ñ'ñ% ñ& —l‘l TÕ)Ñ0ò' ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r    r!   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r'   s   @r(   r   r   -   s(   ø‡ € ñð .2€LØ+/€KØ#'€GØ,0Ð÷' ƒ r+   r   c                   ó<   a € ] tR t^Ct o RtRtRtRtV 3R ltRt	V t
R# )ÚXcodec2EncoderOutputaP  
audio_codes (`torch.LongTensor` of shape `(batch_size, 1, codes_length)`, *optional*):
    Discrete code embeddings computed using `model.encode`. These represent
    the compressed, quantized form of the input audio signal that can be
    used for storage, transmission, or generation.
latents (`torch.Tensor` of shape `(batch_size, dimension, time_steps)`):
    Quantized continuous representation of input's embedding.
audio_codes_mask (`torch.int32` of shape `(batch_size, 1, codes_length)`, *optional*):
    Downsampled `padding_mask` for indicating valid audio codes in `audio_codes`.
Nc                ó¤   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   # )r   Nr   r    r!   )r"   r$   r%   )r&   r'   s   "€r(   r)   Ú!Xcodec2EncoderOutput.__annotate__C   sI   ø‡ ‚ ñ ×!Ñ! DÕ(Ñ/ñ ñ �\‰\˜DÕ Ñ'ñ ñ  —l‘l TÕ)Ñ0ò! r+   r,   )r-   r.   r/   r0   r1   r   r    r!   r2   r3   r4   r5   s   @r(   r7   r7   C   s#   ø‡ € ñ	ð ,0€KØ#'€GØ,0Ð÷! ƒ r+   r7   c                   ó4   a € ] tR t^Vt o RtRtV 3R ltRtV tR# )ÚXcodec2DecoderOutputa)  
audio_values (`torch.FloatTensor` of shape `(batch_size, 1, segment_length)`, *optional*):
    Decoded audio waveform values in the time domain, obtained by converting
    the discrete codes back into continuous audio signals. This represents
    the reconstructed audio that can be played back.
Nc                óH   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   # )r   Nr   )r"   r#   )r&   r'   s   "€r(   r)   Ú!Xcodec2DecoderOutput.__annotate__V   s   ø‡ ‚ ñ ×#Ñ# dÕ*Ñ1ò r+   r,   )	r-   r.   r/   r0   r1   r   r2   r3   r4   r5   s   @r(   r;   r;   V   s   ø‡ € ñð .2€L÷ ƒ r+   r;   c                   óÎ   a a€ ] tR t^ct o]! RRR7      R
V3R lV 3R lll4       t]]! RRR7      R
V3R lR ll4       4       t]P                  ! 4       ]
R 4       4       tR	tVtV ;t# )ÚXcodec2RotaryEmbeddingÚdevicez5.18)Úversionc                ó    <€ V ^8„  d   QhRS[ /# ©r   Úconfigr   )r&   r'   s   "€r(   r)   Ú#Xcodec2RotaryEmbedding.__annotate__e   s   ø€ ÷ Oñ O™}ñ Or+   c                óä  <€ \         SV `  4        VP                  V n        VP                  V n        Wn        V P
                  P                  R ,          V n        V P                  pV P                  R8w  d   \        V P                  ,          pV! V P
                  V4      w  q@n
        \        P                  ! VRR7      V n        \        P                  ! VP                  4       RR7      V n        R# )Ú	rope_typeÚdefaultF©Ú
persistentN)ÚsuperÚ__init__Úmax_position_embeddingsÚmax_seq_len_cachedÚoriginal_max_seq_lenrD   Úrope_parametersrG   Úcompute_default_rope_parametersr   Úattention_scalingÚnnÚBufferÚinv_freqÚcloneÚoriginal_inv_freq)ÚselfrD   r@   Úrope_init_fnrU   Ú	__class__s   &&&  €r(   rL   ÚXcodec2RotaryEmbedding.__init__d   s¬   ø€ ä‰ÑÔØ"(×"@Ñ"@ˆÔØ$*×$BÑ$BˆÔ!àŒàŸ™×4Ñ4°[ÕAˆŒØ!%×!EÑ!EˆØ�>‰>˜YÔ&Ü.¨t¯~©~Õ>ˆLÙ+7¸¿¹ÀVÓ+LÑ(ˆÔ(äŸ	š	 (°uÔ=ˆŒÜ!#§¢¨8¯>©>Ó+;ÈÔ!NˆÖr+   c                óP   <€ V ^8„  d   QhRS[ RS[S[P                  S[3,          /# )r   rD   Úreturn)r   Útupler"   r%   Úfloat)r&   r'   s   "€r(   r)   rE   w   s.   ø€ ÷ 5ñ 5±ð 5ÑY^Ñ_d×_kÑ_kÑmrÐ_rÕYsñ 5r+   c           	     ó0  € V P                   R,          p\        V RR4      ;'       g    V P                  V P                  ,          pRpRV\        P
                  ! ^ V^\        P                  R7      V,          ,          ,          pVP                  V4      V3# )a~  
Computes the inverse frequencies according to the original RoPE implementation
Args:
    config ([`~transformers.PreTrainedConfig`]):
        The model configuration.
Returns:
    Tuple of (`torch.Tensor`, `float`), containing the inverse frequencies for the RoPE embeddings and the
    post-processing scaling factor applied to the computed cos/sin (unused in this type of RoPE).
Ú
rope_thetaÚhead_dimNç      ð?©Údtype)rP   ÚgetattrÚhidden_sizeÚnum_attention_headsr"   Úaranger_   Úto)rD   r@   ÚkwargsÚbaseÚdimÚattention_factorrU   s   &&,    r(   rQ   Ú6Xcodec2RotaryEmbedding.compute_default_rope_parametersu   s~   € ð ×%Ñ% lÕ3ˆÜ�f˜j¨$Ó/×cÐc°6×3EÑ3EÈ×IcÑIcÕ3cˆàÐà˜$¤5§<¢<°°3¸ÄÇÁÔ#MÐPSÕ#SÕTÕUˆØ�{‰{˜6Ó"Ð$4Ð4Ð4r+   c                ó^  € V P                   R,          P                  VP                  ^ ,          R	^4      P                  \        P
                  VP                  R7      pVR
,          P                  4       p\        VP                  P                  \        4      '       d2   VP                  P                  R8w  d   VP                  P                  MRp\        VRR7      ;_uu_ 4        W4,          P                  ^^4      p\        P                  ! Wf3R	R7      pVP                  4       V P                  ,          pVP                  4       V P                  ,          p	R R R 4       XP                  VP                   R7      X	P                  VP                   R7      3#   + '       g   i     LH; i)N©re   r@   ÚmpsÚcpuF©Údevice_typeÚenabled©rm   rd   ©NºNNNNéÿÿÿÿ)ry   Nry   )rU   ÚexpandÚshaperj   r"   r_   r@   Ú
isinstanceÚtypeÚstrr   Ú	transposeÚcatÚcosrR   Úsinre   )
rX   ÚxÚposition_idsÚinv_freq_expandedÚposition_ids_expandedru   ÚfreqsÚembr‚   rƒ   s
   &&&       r(   ÚforwardÚXcodec2RotaryEmbedding.forward‰   s2  € ð �M‰M˜-Õ(×/Ñ/°×0BÑ0BÀ1Õ0EÀrÈ1ÓM×PÑPÔW\×WbÑWbÐkl×ksÑksÐPÓtð 	ð !-¨ZÕ 8× >Ñ >Ó @Ðä'1°!·(±(·-±-Ä×'EÒ'EÈ!Ï(É(Ï-É-Ð[`ÔJ`�a—h‘h—m’mÐfkˆä¨¸U×CÖCØ&Õ>×IÑIÈ!ÈQÓOˆEÜ—)’)˜U˜N°Ô3ˆCØ—'‘'“)˜d×4Ñ4Õ4ˆCØ—'‘'“)˜d×4Ñ4Õ4ˆC÷	 Dð �v‰v˜AŸG™GˆvÓ$ c§f¡f°1·7±7 fÓ&;Ð;Ð;÷ D×Cús   Ã(A4FÆF,	)rR   rD   rU   rN   rW   rO   rG   ©N)r-   r.   r/   r0   r   rL   ÚstaticmethodrQ   r"   Úno_gradr   rŠ   r3   r4   Ú__classcell__©rZ   r'   s   @@r(   r?   r?   c   su   ù‡ € Ù�X vÔ.÷Oô Oó /ðOð  Ù�X vÔ.÷5ñ 5ó /ó ð5ð$ ‡]‚]ƒ_Øñ<ó ó ÷<ð <r+   r?   c                   óP   a a€ ] tR t^œt oV3R lV 3R lltV3R lR ltRtVtV ;t# )Ú
Xcodec2MLPc                ó    <€ V ^8„  d   QhRS[ /# rC   r   )r&   r'   s   "€r(   r)   ÚXcodec2MLP.__annotate__�   s   ø€ ÷ Wñ W™}ñ Wr+   c                ó0  <€ \         SV `  4        Wn        \        VP                  ,          V n        \        P                  ! VP                  VP                  R R7      V n
        \        P                  ! VP                  VP                  R R7      V n        R# )F©ÚbiasN)rK   rL   rD   r   Ú
hidden_actÚactivation_fnrS   ÚLinearrg   Úintermediate_sizeÚfc1Úfc2©rX   rD   rZ   s   &&€r(   rL   ÚXcodec2MLP.__init__�   sh   ø€ Ü‰ÑÔØŒÜ# F×$5Ñ$5Õ6ˆÔÜ—9’9˜V×/Ñ/°×1IÑ1IÐPUÔVˆŒÜ—9’9˜V×5Ñ5°v×7IÑ7IÐPUÔVˆŽr+   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   Úhidden_statesr]   ©r"   r%   )r&   r'   s   "€r(   r)   r”   ¤   s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r+   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# rŒ   )rœ   r™   r�   ©rX   r¢   s   &&r(   rŠ   ÚXcodec2MLP.forward¤   s4   € ØŸ™ Ó/ˆØ×*Ñ*¨=Ó9ˆØŸ™ Ó/ˆØÐr+   )r™   rD   rœ   r�   ©	r-   r.   r/   r0   rL   rŠ   r3   r4   r�   r�   s   @@r(   r’   r’   œ   s    ù‡ € ÷Wó W÷÷ ð r+   r’   c                óÌ   € V RRV P                   R,          ^,          13,          pV RV P                   R,          ^,          R13,          p\        P                  ! V) V3RR7      # )z*Rotates half the hidden dims of the input..Nrw   rz   )r|   r"   r�   )r„   Úx1Úx2s   &  r(   Úrotate_halfr«   «   sZ   € à	
ˆ3Ð"�!—'‘'˜"•+ Õ"Ð"Ð"Õ	#€BØ	
ˆ3�—‘˜•˜qÕ Ñ"Ð"Õ	#€BÜ�9Š9�r�c˜2�Y BÔ'Ð'r+   Úrotary_pos_embc                óÈ   € VP                  V4      pVP                  V4      pW,          \        V 4      V,          ,           pW,          \        V4      V,          ,           pWV3# )aI  Applies Rotary Position Embedding to the query and key tensors.

Args:
    q (`torch.Tensor`): The query tensor.
    k (`torch.Tensor`): The key tensor.
    cos (`torch.Tensor`): The cosine part of the rotary embedding.
    sin (`torch.Tensor`): The sine part of the rotary embedding.
    unsqueeze_dim (`int`, *optional*, defaults to 1):
        The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos[position_ids] and
        sin[position_ids] so that they can be properly broadcasted to the dimensions of q and k. For example, note
        that cos[position_ids] and sin[position_ids] have the shape [batch_size, seq_len, head_dim]. Then, if q and
        k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes
        cos[position_ids] and sin[position_ids] broadcastable to the shapes of q and k. Similarly, if q and k have
        the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2.
Returns:
    `tuple(torch.Tensor)` comprising of the query and key tensors rotated using the Rotary Position Embedding.
)Ú	unsqueezer«   )ÚqÚkr‚   rƒ   Úunsqueeze_dimÚq_embedÚk_embeds   &&&&&  r(   Úapply_rotary_pos_embr´   ²   sS   € ð& �-‰-˜Ó
&€CØ
�-‰-˜Ó
&€CØ�wœ; q›>¨CÕ/Õ0€GØ�wœ; q›>¨CÕ/Õ0€GØÐÐr+   c                ód   € V ^8„  d   QhR\         P                  R\        R\         P                  /# )r   r¢   Ún_repr]   )r"   r%   Úint)r&   s   "r(   r)   r)   Ì   s.   € ÷ 	Uñ 	UœUŸ\™\ð 	U´#ð 	U¼%¿,¹,ñ 	Ur+   c                ó˜   € V P                   w  r#rEV^8X  d   V # V R,          P                  W#WV4      p V P                  W#V,          WE4      # )zÈ
This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,
num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim)
)ry   ry   Nry   ry   )r|   r{   Úreshape)r¢   r¶   ÚbatchÚnum_key_value_headsÚslenrb   s   &&    r(   Ú	repeat_kvr½   Ì   sU   € ð
 2?×1DÑ1DÑ.€E Ø�„zØÐØ!Ð"2Õ3×:Ñ:¸5ÐW\ÐdlÓm€MØ× Ñ  ¸eÕ(CÀTÓTÐTr+   c                ó   € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R\        R	\
        \        ,          /# )
r   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingÚdropoutrk   )rS   ÚModuler"   r%   r_   r   r   )r&   s   "r(   r)   r)   Ø   sw   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ð%ô ð%ô Ô'Õ(ñ%r+   c                 ó"  € \        W P                  4      p\        W0P                  4      p	\        P                  ! WP	                  ^^4      4      V,          p
Ve	   W¤,           p
\
        P                  P                  V
R\        P                  R7      P                  VP                  4      p
\
        P                  P                  W¦V P                  R7      p
\        P                  ! W©4      pVP	                  ^^4      P                  4       pWº3# )r   ©rm   re   ©ÚpÚtrainingrz   )r½   Únum_key_value_groupsr"   Úmatmulr€   rS   Ú
functionalÚsoftmaxÚfloat32rj   re   rÅ   rË   Ú
contiguous)r¿   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   rk   Ú
key_statesÚvalue_statesÚattn_weightsÚattn_outputs   &&&&&&&,    r(   Úeager_attention_forwardrÖ   Ø   sÒ   € ô ˜3× ;Ñ ;Ó<€JÜ˜U×$?Ñ$?Ó@€Lä—<’< ×';Ñ';¸A¸qÓ'AÓBÀWÕL€LØÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€LÜ—,’,˜|Ó:€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r+   c                   óX   a a€ ] tR t^ñt oRtV3R lV 3R lltRV3R lR lltRtVtV ;t	# )ÚXcodec2Attentionz=Multi-headed attention from 'Attention Is All You Need' paperc                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r   rD   Ú	layer_idx©r   r·   )r&   r'   s   "€r(   r)   ÚXcodec2Attention.__annotate__õ   s   ø€ ÷ 
ñ 
™}ð 
¹ñ 
r+   c                ó¢  <€ \         SV `  4        Wn        W n        \	        VR VP
                  VP                  ,          4      V n        VP                  VP                  ,          V n	        V P                  R,          V n
        VP                  V n        RV n        \        P                  ! VP
                  VP                  V P                  ,          VP                  R7      V n        \        P                  ! VP
                  VP                  V P                  ,          VP                  R7      V n        \        P                  ! VP
                  VP                  V P                  ,          VP                  R7      V n        \        P                  ! VP                  V P                  ,          VP
                  VP                  R7      V n        R# )rb   Fr–   Ng      à¿)rK   rL   rD   rÛ   rf   rg   rh   rb   r»   rÌ   rÄ   Úattention_dropoutÚ	is_causalrS   rš   Úattention_biasÚq_projÚk_projÚv_projÚo_proj©rX   rD   rÛ   rZ   s   &&&€r(   rL   ÚXcodec2Attention.__init__õ   sI  ø€ Ü‰ÑÔØŒØ"ŒÜ ¨
°F×4FÑ4FÈ&×JdÑJdÕ4dÓeˆŒØ$*×$>Ñ$>À&×B\ÑB\Õ$\ˆÔ!Ø—}‘} dÕ*ˆŒØ!'×!9Ñ!9ˆÔØˆŒä—i’iØ×Ñ × :Ñ :¸T¿]¹]Õ JÐQW×QfÑQfô
ˆŒô —i’iØ×Ñ × :Ñ :¸T¿]¹]Õ JÐQW×QfÑQfô
ˆŒô —i’iØ×Ñ × :Ñ :¸T¿]¹]Õ JÐQW×QfÑQfô
ˆŒô —i’iØ×&Ñ&¨¯©Õ6¸×8JÑ8JÐQW×QfÑQfô
ˆŽr+   c                ó  <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          R,          RS[ P                  R,          RS[R,          RS[S[,          RS[S[ P                  S[ P                  3,          /# )r   r¢   Úposition_embeddingsNrÃ   Úpast_key_valuesrk   r]   )r"   r%   r^   r   r   r   )r&   r'   s   "€r(   r)   rÝ     s‡   ø€ ÷ ))ñ ))á—|‘|ð))ñ #¡5§<¡<±·±Ð#=Õ>ÀÕEð))ñ Ÿ™ tÕ+ð	))ñ
  �ð))ñ Ñ+Õ,ð))ñ 
‰u�|‰|™UŸ\™\Ð)Õ	*ñ))r+   c                ó  € VP                   R R p. VORNV P                  N5pV P                  V4      P                  V4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      p	V P                  V4      P                  V4      P	                  ^^4      p
Vw  r¼\        W‰W¼^R7      w  r‰Ve   VP                  WšV P                  4      w  rš\        P                  ! V P                  P                  \        4      pT! V VV	V
V3RV P                  '       g   RMV P                   RV P"                  /VB w  rïVP$                  ! . VORN5!  P'                  4       pV P)                  V4      pWï3# )N)r±   rÅ   ç        rÄ   rz   )r|   rb   râ   Úviewr€   rã   rä   r´   ÚupdaterÛ   r   Úget_interfacerD   Ú_attn_implementationrÖ   rË   rß   rÄ   r¹   rÑ   rå   )rX   r¢   ré   rÃ   rê   rk   Úinput_shapeÚhidden_shapeÚquery_statesrÒ   rÓ   r‚   rƒ   Úattention_interfacerÕ   rÔ   s   &&&&&,          r(   rŠ   ÚXcodec2Attention.forward  sŒ  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆà—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆØ—[‘[ Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆ
Ø—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆà&‰ˆô $8¸ÐRUÐjkÔ#lÑ ˆàÒ&Ø'6×'=Ñ'=¸jÐX\×XfÑXfÓ'gÑ$ˆJä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð  $Ÿ}Ÿ}˜}‘C°$×2HÑ2Hð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØ—k‘k +Ó.ˆØÐ(Ð(r+   )rß   rD   rb   rà   rã   rÛ   rÌ   rå   râ   rÄ   rä   )NNN©
r-   r.   r/   r0   r1   rL   rŠ   r3   r4   r�   r�   s   @@r(   rØ   rØ   ñ   s!   ù‡ € áG÷
ó 
÷.))÷ ))ò ))r+   rØ   ÚRMSNormc                   óZ   a a€ ] tR tRt oRV3R lV 3R llltV3R lR ltR tRtVtV ;t	# )	ÚXcodec2RMSNormi8  c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Úepsr]   N)r_   )r&   r'   s   "€r(   r)   ÚXcodec2RMSNorm.__annotate__:  s   ø€ ÷ $ñ $©ð $¸$ñ $r+   c                óŽ   <€ \         SV `  4        \        P                  ! \        P
                  ! V4      4      V n        W n        R# )z-
Xcodec2RMSNorm is equivalent to T5LayerNorm
N)rK   rL   rS   r   r"   ÚonesÚweightÚvariance_epsilon)rX   rg   rû   rZ   s   &&&€r(   rL   ÚXcodec2RMSNorm.__init__:  s/   ø€ ô 	‰ÑÔÜ—l’l¤5§:¢:¨kÓ#:Ó;ˆŒØ #Ör+   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r¡   r£   )r&   r'   s   "€r(   r)   rü   B  s#   ø€ ÷ ;ñ ;¡U§\¡\ð ;±e·l±lñ ;r+   c                ó:  € VP                   pVP                  \        P                  4      pVP	                  ^4      P                  RRR7      pV\        P                  ! W0P                  ,           4      ,          pV P                  VP                  V4      ,          # )r   T)Úkeepdimrz   )	re   rj   r"   rÐ   ÚpowÚmeanÚrsqrtr   rÿ   )rX   r¢   Úinput_dtypeÚvariances   &&  r(   rŠ   ÚXcodec2RMSNorm.forwardB  sw   € Ø#×)Ñ)ˆØ%×(Ñ(¬¯©Ó7ˆØ ×$Ñ$ QÓ'×,Ñ,¨R¸Ð,Ó>ˆØ%¬¯ª°H×?TÑ?TÕ4TÓ(UÕUˆØ�{‰{˜]×-Ñ-¨kÓ:Õ:Ð:r+   c                ó^   € \        V P                  P                  4       R V P                   2# )z, eps=)r^   rÿ   r|   r   )rX   s   &r(   Ú
extra_reprÚXcodec2RMSNorm.extra_reprI  s*   € Ü˜Ÿ™×)Ñ)Ó*Ð+¨6°$×2GÑ2GÐ1HÐIÐIr+   )r   rÿ   )ç�íµ ÷Æ°>)
r-   r.   r/   r0   rL   rŠ   r  r3   r4   r�   r�   s   @@r(   rù   rù   8  s%   ù‡ € ÷$õ $÷;ð ;÷Jò Jr+   rù   c                   óT   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚXcodec2DecoderLayeriM  c                ó&   <€ V ^8„  d   QhRS[ RS[/# rÚ   rÜ   )r&   r'   s   "€r(   r)   Ú Xcodec2DecoderLayer.__annotate__N  s   ø€ ÷ dñ d™}ð d¹ñ dr+   c                ó   <€ \         SV `  4        VP                  V n        \        WR 7      V n        \        V4      V n        \        VP                  VP                  R7      V n	        \        VP                  VP                  R7      V n
        R# ))rD   rÛ   ©rû   N)rK   rL   rg   rØ   Ú	self_attnr’   Úmlprù   Úrms_norm_epsÚinput_layernormÚpost_attention_layernormræ   s   &&&€r(   rL   ÚXcodec2DecoderLayer.__init__N  sj   ø€ Ü‰ÑÔØ!×-Ñ-ˆÔä)°ÔMˆŒä˜fÓ%ˆŒÜ-¨f×.@Ñ.@Àf×FYÑFYÔZˆÔÜ(6°v×7IÑ7IÈv×ObÑObÔ(cˆÖ%r+   c                ó.  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[S[ P                  S[ P                  3,          R,          RS[S[,          R	S[ P                  /# )
r   r¢   rÃ   Nr…   rê   Ú	use_cacheré   rk   r]   )r"   r%   r$   r   Úboolr^   r   r   )r&   r'   s   "€r(   r)   r  X  sœ   ø€ ÷ ñ á—|‘|ðñ Ÿ™ tÕ+ðñ ×&Ñ&¨Õ-ð	ñ
  �ðñ ˜$•;ðñ #¡5§<¡<±·±Ð#=Õ>ÀÕEðñ Ñ+Õ,ðñ 
�‰ñr+   c                óÔ   € TpV P                  V4      pV P                  ! RR VRVRVRVRVRV/VB w  rW�,           pTpV P                  V4      pV P                  V4      pW�,           pV# )r¢   rÃ   r…   rê   r  ré   r,   )r  r  r  r  )
rX   r¢   rÃ   r…   rê   r  ré   rk   ÚresidualÚ_s
   &&&&&&&,  r(   rŠ   ÚXcodec2DecoderLayer.forwardX  s©   € ð !ˆØ×,Ñ,¨]Ó;ˆàŸ>š>ñ 
Ø'ð
à)ð
ð &ð
ð ,ð	
ð
  ð
ð !4ð
ð ñ
Ñˆð !Õ0ˆð !ˆØ×5Ñ5°mÓDˆØŸ™ Ó/ˆØ Õ0ˆØÐr+   )rg   r  r  r  r  )NNNFNr§   r�   s   @@r(   r  r  M  s    ù‡ € ÷dó d÷÷ ò r+   r  c                   ó@   a a€ ] tR tRt oRtRV 3R lltR tRtVtV ;t	# )ÚXcodec2SnakeBetaix  aä  
A modified Snake function which uses separate parameters for the magnitude of the periodic components
Shape:
    - Input: (B, C, T)
    - Output: (B, C, T), same shape as the input
Parameters:
    - alpha - trainable parameter that controls frequency
    - beta - trainable parameter that controls magnitude
References:
    - This activation function is a modified version based on this paper by Liu Ziyin, Tilman Hartwig, Masahito Ueda:
    https://huggingface.co/papers/2006.08195
c                óê   <€ \         SV `  4        Wn        \        \        P
                  ! V4      V,          4      V n        \        \        P
                  ! V4      V,          4      V n        R V n        R# )g•Ö&è.>N)	rK   rL   Úin_featuresr   r"   ÚzerosÚalphaÚbetaÚno_div_by_zero)rX   r%  r'  rZ   s   &&&€r(   rL   ÚXcodec2SnakeBeta.__init__†  sR   ø€ Ü‰ÑÔØ&Ôô œuŸ{š{¨;Ó7¸%Õ?Ó@ˆŒ
ÜœeŸkšk¨+Ó6¸Õ>Ó?ˆŒ	à)ˆÖr+   c                ó²  € V P                   P                  ^ 4      P                  R4      pV P                  P                  ^ 4      P                  R4      p\        P                  ! V4      p\        P                  ! V4      pVRW0P
                  ,           ,          \        P                  ! \        P                  ! W,          4      ^4      ,          ,           pV# )ur   
Forward pass of the function.
Applies the function to the input elementwise.
SnakeBeta âˆ¶= x + 1/b * sin^2 (xa)
rc   rz   )r'  r®   r(  r"   Úexpr)  r  rƒ   )rX   r¢   r'  r(  s   &&  r(   rŠ   ÚXcodec2SnakeBeta.forward�  s¡   € ð —
‘
×$Ñ$ QÓ'×1Ñ1°"Ó5ˆØ�y‰y×"Ñ" 1Ó%×/Ñ/°Ó3ˆÜ—	’	˜%Ó ˆÜ�yŠy˜‹ˆØ%¨°×7JÑ7JÕ0JÕ)KÌuÏyÊyÜ�IŠI�mÕ+Ó,¨aóP
õ )
õ 
ˆð Ðr+   )r'  r(  r%  r)  )rc   rö   r�   s   @@r(   r#  r#  x  s   ù‡ € ñ÷*÷ò r+   r#  c                ó@  € V^,          ^ 8H  pV^,          p^V,          pRV^,
          ,          \         P                  ,          V,          R,           pVR8”  d   RVR,
          ,          pM6VR8¼  d.   RV^,
          R,          ,          R	VR,
          ,          ,           pMR
p\        P                  ! W'R\        P                  R7      pV'       d!   \        P
                  ! V) V4      R,           p	M\        P
                  ! V4      V,
          p	V ^ 8X  d*   \        P                  ! ^^V3\        P                  R7      # \        P                  ! ^V ,          V	,          4      p
^V ,          V,          V
,          pW»P                  4       ,          pVP                  ^^V4      # )a&  Generates a 1D Kaiser-windowed sinc filter.

Args:
    cutoff (float): Normalized cutoff frequency (0 to 0.5).
    half_width (float): Transition bandwidth.
    kernel_size (int): Number of filter taps.

Returns:
    torch.Tensor: A tensor of shape (1, 1, kernel_size) representing the filter.
gHáz®G@gÍÌÌÌÌÌ@g      I@gKê46¼?gffffff!@g      5@g¨WÊ2Ä±â?gš™™™™™Ù?gUjö@+0´?rì   F)r(  Úperiodicre   ç      à?rd   )
ÚmathÚpir"   Úkaiser_windowrÐ   ri   r&  ÚsincÚsumrí   )ÚcutoffÚ
half_widthÚkernel_sizeÚis_evenÚ	half_sizeÚdelta_fÚattenuationr(  r3  Útime_indicesÚsinc_filterÚnormalized_filters   &&&         r(   Úkaiser_sinc_filter1dr@  ¡  sR  € ð ˜A�o Ñ"€GØ˜qÕ €Ið �*�n€GØ˜9 q�=Õ)¬D¯G©GÕ3°gÕ=ÀÕD€Kà�TÔØ˜ sÕ*Õ+‰Ø	˜Ô	Ø˜ rÕ)¨cÕ1Õ1°G¸{ÈTÕ?QÕ4RÕR‰àˆä×'Ò'¨ÈÔV[×VcÑVcÔd€M÷ Ü—|’| Y J°	Ó:¸SÕ@‰ä—|’| KÓ0°9Õ<ˆð �„{Ü�{Š{˜A˜q +Ð.´e·m±mÔDÐDä—*’*˜Q �Z¨,Õ6Ó7€KØ˜F�
 ]Õ2°[Õ@Ðð ×.Ñ.Ó0Õ0Ðà×!Ñ! ! Q¨Ó4Ð4r+   c                   ó<   a a€ ] tR tRt oRV 3R lltR tRtVtV ;t# )ÚXcodec2DownSample1diÏ  c                ó   <€ \         SV `  4        R V,          pRV,          pW0n        W@n        W n        VR8  d   \        R4      hVR 8”  d   \        R4      hV^,          ^ 8H  V n        V^,          \        V P                  4      ,
          V n        V^,          V n	        Wn
        \        W4V4      p\        P                  ! VRR7      V n        R# )r0  ç333333ã?rì   z(Minimum cutoff must be larger than zero.z'A cutoff above 0.5 does not make sense.FrI   N)rK   rL   r6  r7  r8  Ú
ValueErrorÚevenr·   Úpad_leftÚ	pad_rightÚstrider@  rS   rT   Úfilter)rX   Úratior8  r6  r7  rJ  rZ   s   &&&   €r(   rL   ÚXcodec2DownSample1d.__init__Ð  s®   ø€ Ü‰ÑÔØ�u•ˆØ˜5•[ˆ
ØŒØ$ŒØ&Ôà�CŒ<ÜÐGÓHÐHØ�CŒ<ÜÐFÓGÐGà !•O qÑ(ˆŒ	Ø# qÕ(¬3¨t¯y©y«>Õ9ˆŒØ$¨Õ)ˆŒØŒÜ% f¸+ÓFˆÜ—i’i °5Ô9ˆŽr+   c                ó8  € VP                   ^,          p\        P                  ! WP                  V P                  3RR7      p\        P
                  ! VV P                  P                  VP                  4      P                  VRR4      V P                  VR7      pV# )é   Ú	replicate©Úmode©rI  Úgroupsrz   )r|   ÚFÚpadrG  rH  Úconv1drJ  rj   re   r{   rI  )rX   r¢   ÚchannelsÚouts   &&  r(   rŠ   ÚXcodec2DownSample1d.forwardä  sw   € Ø ×&Ñ& qÕ)ˆÜŸš˜m¯m©m¸T¿^¹^Ð-LÐS^Ô_ˆÜ�hŠhØà�K‰K�N‰N˜=×.Ñ.Ó/×6Ñ6°xÀÀRÓHØ—;‘;Øô
ˆð ˆ
r+   )r6  rF  rJ  r7  r8  rG  rH  rI  ©r   Nr§   r�   s   @@r(   rB  rB  Ï  s   ù‡ € ÷:÷(
ò 
r+   rB  c                   ó<   a a€ ] tR tRt oRV 3R lltR tRtVtV ;t# )ÚXcodec2UpSample1diñ  c                ó�  <€ \         SV `  4        Wn        Vf!   \        ^V,          ^,          4      ^,          MTV n        Wn        V P                  V,          ^,
          V n        V P                  V P
                  ,          V P                  V P
                  ,
          ^,          ,           V n        V P                  V P
                  ,          V P                  V P
                  ,
          ^,           ^,          ,           V n        \        RV,          RV,          V P                  R7      p\        P                  ! VRR7      V n        R # )Nr0  rD  )r6  r7  r8  FrI   )rK   rL   rK  r·   r8  rI  rU  rG  rH  r@  rS   rT   rJ  )rX   rK  r8  rJ  rZ   s   &&& €r(   rL   ÚXcodec2UpSample1d.__init__ò  sá   ø€ Ü‰ÑÔØŒ
Ø6AÒ6Iœ3˜q 5�y¨A�~Ó.°Ö2È{ˆÔØŒØ×#Ñ# uÕ,¨qÕ0ˆŒØŸ™ 4§;¡;Õ.°$×2BÑ2BÀTÇ[Á[Õ2PÐUVÕ1VÕVˆŒØŸ™ D§K¡KÕ/°4×3CÑ3CÀdÇkÁkÕ3QÐTUÕ3UÐZ[Õ2[Õ[ˆŒä%¨S°5­[ÀSÈ5Å[Ð^b×^nÑ^nÔoˆÜ—i’i °5Ô9ˆŽr+   c           	     óž  € VP                   ^,          p\        P                  ! WP                  V P                  3RR7      pV P                  \        P                  ! VV P
                  P                  VP                  4      P                  VRR4      V P                  VR7      ,          pVRV P                  V P                  ) 13,          pV# )rN  rO  rP  rR  .rz   )r|   rT  rU  rK  Úconv_transpose1drJ  rj   re   r{   rI  rG  rH  )rX   r¢   rW  s   && r(   rŠ   ÚXcodec2UpSample1d.forwardþ  s¢   € Ø ×&Ñ& qÕ)ˆÜŸš˜m¯h©h¸¿¹Ð-AÈÔTˆØŸ
™
¤Q×%7Ò%7Øà�K‰K�N‰N˜=×.Ñ.Ó/×6Ñ6°xÀÀRÓHØ—;‘;Øô&
õ 
ˆð & c¨4¯=©=¸D¿N¹N¸?Ð+JÐ&JÕKˆØÐr+   )rJ  r8  rU  rG  rH  rK  rI  rZ  r§   r�   s   @@r(   r\  r\  ñ  s   ù‡ € ÷
:÷ò r+   r\  c                   óH   a a€ ] tR tRt oRV3R lV 3R llltR tRtVtV ;t# )ÚXcodec2AntiAliasedActivation1di  c                ó2   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ /# )r   Úup_ratioÚ
down_ratioÚup_kernel_sizeÚdown_kernel_size)r·   )r&   r'   s   "€r(   r)   Ú+Xcodec2AntiAliasedActivation1d.__annotate__  s;   ø€ ÷ Lñ Lñ ðLñ ð	Lñ
 ðLñ ñLr+   c                ó¨   <€ \         SV `  4        \        V4      '       g   \        R 4      hWn        \        W$4      V n        \        W54      V n        R# )z$Activation function must be callableN)	rK   rL   ÚcallableÚ	TypeErrorÚactr\  ÚupsamplerB  Ú
downsample)rX   Ú
activationre  rf  rg  rh  rZ   s   &&&&&&€r(   rL   Ú'Xcodec2AntiAliasedActivation1d.__init__  sD   ø€ ô 	‰ÑÔÜ˜
×#Ò#ÜÐBÓCÐCØŒÜ)¨(ÓCˆŒÜ-¨jÓKˆŽr+   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# rŒ   )rn  rm  ro  r¥   s   &&r(   rŠ   Ú&Xcodec2AntiAliasedActivation1d.forward  s2   € ØŸ™ mÓ4ˆØŸ™ Ó/ˆØŸ™¨Ó6ˆàÐr+   )rm  ro  rn  )r   r   é   rt  r§   r�   s   @@r(   rc  rc    s   ù‡ € ÷Lõ L÷ò r+   rc  c                   ó<   a a€ ] tR tRt oRtV 3R ltR tRtVtV ;t	# )ÚXcodec2ResidualUniti$  zY
A residual unit composed of Snake1d and weight-normalized Conv1d layers with dilations.
c                ó"  <€ \         SV `  4        ^V,          ^,          p\        \        V4      R7      V n        \
        P                  ! W^W#R7      V n        \        \        V4      R7      V n        \
        P                  ! W^R7      V n	        R# )é   ©rp  )r8  ÚdilationÚpadding)r8  N)
rK   rL   rc  r#  Úsnake1rS   ÚConv1dÚconv1Úsnake2Úconv2)rX   Ú	dimensionrz  rU  rZ   s   &&& €r(   rL   ÚXcodec2ResidualUnit.__init__)  si   ø€ Ü‰ÑÔØ˜Õ! aÕ'ˆÜ4Ô@PÐQZÓ@[Ô\ˆŒÜ—Y’Y˜yÀÈXÔcˆŒ
Ü4Ô@PÐQZÓ@[Ô\ˆŒÜ—Y’Y˜yÀÔCˆŽ
r+   c                ó&  € TpV P                  V P                  V4      4      pV P                  V P                  V4      4      pVP                  R,          VP                  R,          ,
          ^,          pV^ 8”  d   VRW3) 13,          pW,           pV# )a2  
Forward pass through the residual unit.

Args:
    hidden_state (`torch.Tensor` of shape `(batch_size, channels, time_steps)`):
        Input tensor .

Returns:
    output_tensor (`torch.Tensor` of shape `(batch_size, channels, time_steps)`):
        Input tensor after passing through the residual unit.
.rz   )r~  r|  r€  r  r|   )rX   Úhidden_stateÚoutput_tensorr{  s   &&  r(   rŠ   ÚXcodec2ResidualUnit.forward1  s…   € ð %ˆØŸ
™
 4§;¡;¨}Ó#=Ó>ˆØŸ
™
 4§;¡;¨}Ó#=Ó>ˆà×%Ñ% bÕ)¨M×,?Ñ,?ÀÕ,CÕCÈÕIˆØ�QŒ;Ø'¨¨W°XÐ-=Ð(=Õ>ˆLØ$Õ4ˆØÐr+   )r~  r€  r|  r  rö   r�   s   @@r(   rv  rv  $  s   ù‡ € ñõD÷ò r+   rv  c                   óL   a a€ ] tR tRt oRtRV3R lV 3R llltR tRtVtV ;t	# )ÚXcodec2EncoderBlockiH  z&Encoder block used in XCODEC2 encoder.c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r   rD   rI  Ústride_indexrÜ   )r&   r'   s   "€r(   r)   Ú Xcodec2EncoderBlock.__annotate__K  s"   ø€ ÷ 	
ñ 	
™}ð 	
±cð 	
ÉSñ 	
r+   c           
     óÂ  <€ \         SV `  4        VP                  ^V,          ,          p\        V^,          ^R7      V n        \        V^,          ^R7      V n        \        V^,          ^	R7      V n        \        \        V^,          4      R7      V n	        \        P                  ! V^,          V^V,          V\        P                  ! V^,          4      R7      V n        R# )r   )rz  ry  ©r8  rI  r{  N)rK   rL   Úencoder_hidden_sizerv  Ú	res_unit1Ú	res_unit2Ú	res_unit3rc  r#  r|  rS   r}  r1  Úceilr~  )rX   rD   rI  rŠ  r�  rZ   s   &&&& €r(   rL   ÚXcodec2EncoderBlock.__init__K  s§   ø€ Ü‰ÑÔØ×.Ñ.°°LµÕ@ˆ	Ü,¨Y¸!­^ÀaÔHˆŒÜ,¨Y¸!­^ÀaÔHˆŒÜ,¨Y¸!­^ÀaÔHˆŒÜ4Ô@PÐQZÐ^_ÕQ_Ó@`ÔaˆŒÜ—Y’YØ˜�N˜I°1°vµ:ÀfÔVZ×V_ÒV_Ð`fÐijÕ`jÓVkô
ˆŽ
r+   c                ó¬   € V P                  V4      pV P                  V4      pV P                  V P                  V4      4      pV P	                  V4      pV# rŒ   )r�  r�  r|  r‘  r~  )rX   r„  s   &&r(   rŠ   ÚXcodec2EncoderBlock.forwardV  sI   € Ø—~‘~ lÓ3ˆØ—~‘~ lÓ3ˆØ—{‘{ 4§>¡>°,Ó#?Ó@ˆØ—z‘z ,Ó/ˆàÐr+   )r~  r�  r�  r‘  r|  )rN  rN  rö   r�   s   @@r(   rˆ  rˆ  H  s   ù‡ € Ù0÷	
õ 	
÷ò r+   rˆ  c                   óH   a a€ ] tR tRt oRtV3R lV 3R lltR tRtVtV ;t	# )ÚXcodec2Encoderi_  zXCODEC2 Encoderc                ó    <€ V ^8„  d   QhRS[ /# rC   r   )r&   r'   s   "€r(   r)   ÚXcodec2Encoder.__annotate__b  s   ø€ ÷ Vñ V™}ñ Vr+   c           	     óD  <€ \         SV `  4        \        P                  ! ^VP                  ^^R7      V n        . V n        \        VP                  4       F3  w  r#V^,           pV ;P                  \        WVR7      .,          un        K5  	  \        P                  ! V P                  4      V n        VP                  ^\        VP                  4      ,          ,          p\        \        V4      R7      V n        \        P                  ! WAP                  ^^R7      V n        R# )rN  ©r8  r{  )rI  rŠ  ry  N)rK   rL   rS   r}  rŽ  r~  ÚblockÚ	enumerateÚdownsampling_ratiosrˆ  Ú
ModuleListÚlenrc  r#  r|  rg   r€  )rX   rD   rŠ  rI  Úd_modelrZ   s   &&   €r(   rL   ÚXcodec2Encoder.__init__b  sÕ   ø€ Ü‰ÑÔô —Y’Y˜q &×"<Ñ"<È!ÐUVÔWˆŒ
àˆŒ
ä$-¨f×.HÑ.HÖ$IÑ ˆLØ'¨!Õ+ˆLØ�JŠJÔ.¨vÐS_Ô`ÐaÕa�Jñ %Jô —]’] 4§:¡:Ó.ˆŒ
Ø×,Ñ,¨q´C¸×8RÑ8RÓ4SÕ/SÕSˆÜ4Ô@PÐQXÓ@YÔZˆŒÜ—Y’Y˜w×(:Ñ(:ÈÐSTÔUˆŽ
r+   c                ó¢   € V P                  V4      pV P                   F  pV! V4      pK  	  V P                  V4      pV P                  V4      pV# rŒ   )r~  rœ  r|  r€  )rX   r„  r¿   s   && r(   rŠ   ÚXcodec2Encoder.forwards  sL   € Ø—z‘z ,Ó/ˆà—j”jˆFÙ! ,Ó/ŠLñ !ð —{‘{ <Ó0ˆØ—z‘z ,Ó/ˆàÐr+   )rœ  r~  r€  r|  rö   r�   s   @@r(   r—  r—  _  s   ù‡ € Ù÷Vó V÷"	ò 	r+   r—  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚXcodec2ResNetBlocki  c                ó    <€ V ^8„  d   QhRS[ /# rC   r   )r&   r'   s   "€r(   r)   ÚXcodec2ResNetBlock.__annotate__€  s   ø€ ÷ kñ k™}ñ kr+   c                ó"  <€ \         SV `  4        \        P                  ! ^ VP                  RRR7      V n        \        P                  ! 4       V n        \        P                  ! VP                  VP                  ^^^R7      V n	        \        P                  ! ^ VP                  RRR7      V n
        \        P                  ! 4       V n        VP                  V n        \        P                  ! VP                  VP                  ^^^R7      V n        R# )é    r  T)Ú
num_groupsÚnum_channelsrû   Úaffiner�  N)rK   rL   rS   Ú	GroupNormrg   Únorm1ÚSiLUÚactivation1r}  r~  Únorm2Úactivation2Úactivation_dropoutr€  rž   s   &&€r(   rL   ÚXcodec2ResNetBlock.__init__€  sÂ   ø€ Ü‰ÑÔÜ—\’\¨R¸f×>PÑ>PÐVZÐcgÔhˆŒ
ÜŸ7š7›9ˆÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÐSTÐ]^ÐhiÔjˆŒ
Ü—\’\¨R¸f×>PÑ>PÐVZÐcgÔhˆŒ
ÜŸ7š7›9ˆÔØ"(×";Ñ";ˆÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÐSTÐ]^ÐhiÔjˆŽ
r+   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r¡   r£   )r&   r'   s   "€r(   r)   r¨  Š  s#   ø€ ÷ 
:ñ 
:¡U§\¡\ð 
:±e·l±lñ 
:r+   c                ó�  € VP                  ^^4      pTpV P                  V4      pV P                  V4      pV P                  V4      pV P	                  V4      pV P                  V4      p\        P                  P                  WP                  V P                  R7      pV P                  V4      pW,           P                  ^^4      # )rN  rÉ   )r€   r¯  r±  r~  r²  r³  rS   rÎ   rÅ   r´  rË   r€  ©rX   r¢   r  s   && r(   rŠ   ÚXcodec2ResNetBlock.forwardŠ  s­   € Ø%×/Ñ/°°1Ó5ˆØ ˆØŸ
™
 =Ó1ˆØ×(Ñ(¨Ó7ˆØŸ
™
 =Ó1ˆØŸ
™
 =Ó1ˆØ×(Ñ(¨Ó7ˆÜŸ™×-Ñ-¨m×?VÑ?VÐae×anÑanÐ-ÓoˆØŸ
™
 =Ó1ˆØÕ(×3Ñ3°A°qÓ9Ð9r+   )r±  r³  r´  r~  r€  r¯  r²  r§   r�   s   @@r(   r¦  r¦    s    ù‡ € ÷kó k÷
:÷ 
:ð 
:r+   r¦  c                   ó†   a a€ ] tR tRt oRtV3R lV 3R lltRR ltV3R lR ltRV3R lR	 lltV3R
 lR lt	Rt
VtV ;t# )ÚXcodec2FiniteScalarQuantizationi—  a  
Finite Scalar Quantization (FSQ) module that quantizes continuous latent representations into discrete codes.
Original code: https://github.com/lucidrains/vector-quantize-pytorch/blob/353d46027888dfb140c3c65a67a7356f1492d71d/vector_quantize_pytorch/finite_scalar_quantization.py#L64

Original modeling uses `ResidualFSQ` with a single quantizer: https://huggingface.co/HKUSTAudio/xcodec2/blob/main/vq/codec_decoder_vocos.py#L389
But we can directly use FSQ since a main feature of Xcodec2 is that it uses a single codebook.
c                ó    <€ V ^8„  d   QhRS[ /# rC   r   )r&   r'   s   "€r(   r)   Ú,Xcodec2FiniteScalarQuantization.__annotate__   s   ø€ ÷ >ñ >™}ñ >r+   c                ó,  <€ \         SV `  4        \        VP                  4      V n        V P	                  4       w  r#p\
        P                  ! VR R7      V n        \
        P                  ! VR R7      V n        \
        P                  ! VR R7      V n	        R# )FrI   N)
rK   rL   ÚlistÚquantization_levelsÚ_compute_buffersrS   rT   ÚlevelsÚbasisÚcodebook)rX   rD   rÂ  rÃ  rÄ  rZ   s   &&   €r(   rL   Ú(Xcodec2FiniteScalarQuantization.__init__   sj   ø€ Ü‰ÑÔÜ#'¨×(BÑ(BÓ#CˆÔ Ø"&×"7Ñ"7Ó"9Ñˆ�xÜ—i’i °5Ô9ˆŒÜ—Y’Y˜u°Ô7ˆŒ
ÜŸ	š	 (°uÔ=ˆŽr+   c                óú  € \         P                  ! V P                  \         P                  VR7      p\         P                  ! \         P                  ! ^.V P                  RR ,           VR7      ^ \         P                  R7      p\         P
                  ! \        \        P                  ! V P                  4      4      VR7      P                  R4      pWC,          V,          pV^,          pWV,
          V,          pW#V3# )zFCompute the levels, basis, and codebook buffers for the FSQ quantizer.rq   N©r@   rÈ   rz   )
r"   ÚtensorrÀ  Úint32Úcumprodri   r·   ÚnpÚprodr®   )rX   r@   rÂ  rÃ  ÚindicesÚlevel_indicesr7  rÄ  s   &&      r(   rÁ  Ú0Xcodec2FiniteScalarQuantization._compute_buffers¨  s»   € ä—’˜d×6Ñ6¼e¿k¹kÐRXÔYˆÜ—’Ü�LŠL˜!˜˜t×7Ñ7¸¸Ð<Õ<ÀVÔLÐRSÔ[`×[fÑ[fô
ˆô —,’,œs¤2§7¢7¨4×+CÑ+CÓ#DÓEÈfÔU×_Ñ_Ð`bÓcˆØ Õ)¨VÕ3ˆØ˜q•[ˆ
Ø!Õ.°*Õ<ˆØ˜hÐ&Ð&r+   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   rÍ  r]   r£   )r&   r'   s   "€r(   r)   r½  ´  s#   ø€ ÷ ñ ©¯©ð ¹%¿,¹,ñ r+   c                ó²   € VP                  R4      pWP                  ,          V P                  ,          pV P                  ^,          pW#,
          V,          pV# )zP
Convert integer codebook indices to normalized per-dimension codes in [-1, 1].
rz   )r®   rÃ  rÂ  )rX   rÍ  rÎ  r7  Úcodess   &&   r(   Ú_indices_to_codesÚ1Xcodec2FiniteScalarQuantization._indices_to_codes´  sI   € ð ×#Ñ# BÓ'ˆØ §J¡JÕ.°$·+±+Õ=ˆØ—[‘[ AÕ%ˆ
ØÕ+¨zÕ9ˆØˆr+   c                óT   <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  /# )r   r¢   rû   r]   )r"   r%   r_   )r&   r'   s   "€r(   r)   r½  ¾  s/   ø€ ÷ Dñ D¡5§<¡<ð D±eð DÁuÇ|Á|ñ Dr+   c                ó  € V P                   ^,
          ^V,           ,          ^,          p\        P                  ! V P                   ^,          ^ 8H  RR4      pWC,          P                  4       pW,           P	                  4       V,          V,
          # )a�  
Constrain `hidden_states` to the valid quantization range for each dimension.

Uses a scaled tanh to soft-clip values into the interval
$[-(L-1)/2, (L-1)/2]$ (offset by 0.5 for even-level dimensions), where $L$ is
the number of quantization levels. The small `eps` margin prevents values from
saturating exactly at the boundary, which would zero out gradients.

Args:
    hidden_states (`torch.Tensor`): Continuous input to be bounded.
    eps (`float`, *optional*, defaults to `1e-3`):
        Small margin added to the level range to avoid gradient saturation at boundaries.

Returns:
    `torch.Tensor`: Bounded values in the valid quantization range.
r0  rì   )rÂ  r"   ÚwhereÚatanhÚtanh)rX   r¢   rû   Ú
half_rangeÚoffsetÚshifts   &&&   r(   ÚboundÚ%Xcodec2FiniteScalarQuantization.bound¾  sk   € ð" —k‘k A•o¨!¨c­'Õ2°QÕ6ˆ
Ü—’˜TŸ[™[¨1�_°Ñ1°3¸Ó<ˆØÕ$×+Ñ+Ó-ˆØÕ%×+Ñ+Ó-°
Õ:¸VÕCÐCr+   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          /# r¡   ©r"   r%   r^   )r&   r'   s   "€r(   r)   r½  Ô  s1   ø€ ÷ 1ñ 1¡U§\¡\ð 1±e¹E¿L¹LÉ%Ï,É,Ð<VÕ6Wñ 1r+   c                óÊ  € VP                   p\        VP                  P                  \        4      '       d2   VP                  P                  R 8w  d   VP                  P                  MRp\        VRR7      ;_uu_ 4        VP                  4       pV P                  ^,          pV P                  V4      pVP                  4       pWV,
          P                  4       ,           pWd,          pWd,          V,           pWpP                  ,          P                  RR7      P                  \        P                  4      pRRR4       XP                  V4      X3#   + '       g   i     L#; i)rr   rs   Frt   rw   Nrz   )re   r}   r@   r~   r   r   r_   rÂ  rÞ  ÚroundÚdetachrÃ  r5  rj   r"   rÉ  )	rX   r¢   Úoriginal_dtyperu   r7  ÚroundedrÓ  Úcode_scaledrÍ  s	   &&       r(   rŠ   Ú'Xcodec2FiniteScalarQuantization.forwardÔ  s  € à&×,Ñ,ˆô ˜-×.Ñ.×3Ñ3´S×9Ò9¸m×>RÑ>R×>WÑ>WÐ[`Ô>`ð × Ñ ×%Ò%àð 	ô
 ¨¸U×CÖCØ)×/Ñ/Ó1ˆMØŸ™¨Õ)ˆJà ŸJ™J }Ó5ˆMØ#×)Ñ)Ó+ˆGØ!¨}Õ%<×$DÑ$DÓ$FÕFˆEØÕ&ˆEà Õ-°Õ;ˆKØ"§Z¡ZÕ/×4Ñ4¸Ð4Ó<×?Ñ?ÄÇÁÓLˆG÷ Dð �x‰x˜Ó'¨Ð0Ð0÷ D×Cús   Á?B8EÅE"	)rÃ  rÄ  rÂ  rÀ  rŒ   )gü©ñÒMbP?)r-   r.   r/   r0   r1   rL   rÁ  rÔ  rÞ  rŠ   r3   r4   r�   r�   s   @@r(   r»  r»  —  s>   ù‡ € ñ÷>ó >ô
'÷ð ÷Dò D÷,1÷ 1ð 1r+   r»  c                   óT   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚXcodec2ISTFTHeadiê  zé
Head for converting decoder outputs to waveform via STFT projection and ISTFT.

Uses custom "same" padding ISTFT from Vocos:
https://github.com/gemelo-ai/vocos/blob/c859e3b7b534f3776a357983029d34170ddd6fc3/vocos/spectral_ops.py#L47
c                ó    <€ V ^8„  d   QhRS[ /# rC   r   )r&   r'   s   "€r(   r)   ÚXcodec2ISTFTHead.__annotate__ò  s   ø€ ÷ :ñ :™}ñ :r+   c                ó¢  <€ \         SV `  4        \        P                  ! VP                  VP
                  ^,           4      V n        VP
                  V n        VP                  V n        V P
                  V P                  ,
          ^,          V n        \        P                  ! VP
                  4      p\        P                  ! VRR7      V n        R# )r   FrI   N)rK   rL   rS   rš   rg   Ún_fftÚlinearÚ
hop_lengthr{  r"   Úhann_windowrT   Úwindow)rX   rD   rò  rZ   s   && €r(   rL   ÚXcodec2ISTFTHead.__init__ò  s†   ø€ Ü‰ÑÔÜ—i’i × 2Ñ 2°F·L±LÀ1Õ4DÓEˆŒØ—\‘\ˆŒ
Ø ×+Ñ+ˆŒØŸ
™
 T§_¡_Õ4¸Õ:ˆŒÜ×"Ò" 6§<¡<Ó0ˆÜ—i’i °5Ô9ˆŽr+   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r¡   r£   )r&   r'   s   "€r(   r)   rì  û  s#   ø€ ÷ ""ñ ""¡U§\¡\ð ""±e·l±lñ ""r+   c                óT  € V P                  V4      pVP                  ^R
R7      w  r4VP                  4       pVP                  4       p\        P                  ! V4      P                  RR7      p\        P                  ! W44      p\        P                  P                  WPP                  R
RR7      P                  ^^4      pW`P                  R,          ,          pVP                  ^,          pV^,
          V P                  ,          V P                  ,           p\        P                  ! V^V3^V P                  3^V P                  3R7      R^ ^ V P                   V P                   ) 13,          p	\        P                  ! V P                  P#                  4       P%                  ^VR
4      P                  ^^4      ^V3^V P                  3^V P                  3R7      P'                  4       V P                   V P                   )  p
V
P                  RR	7      p
Wš,          p	V	P)                  ^4      # )r   rw   g      Y@)ÚmaxÚbackward)rm   Únormry   )Úoutput_sizer8  rI  g•dyáý¥=)Úminrz   rx   )rï  Úchunkr_   r"   r,  ÚclampÚpolarÚfftÚirfftrî  r€   rò  r|   rð  rT  Úfoldr{  Úsquarer{   Úsqueezer®   )rX   r¢   Ú	stft_predÚ	magnitudeÚphaseÚspectrogram_complexÚtime_framesÚ
num_framesrù  ÚaudioÚwindow_envelopes   &&         r(   rŠ   ÚXcodec2ISTFTHead.forwardû  sÇ  € Ø—K‘K Ó.ˆ	à$Ÿ?™?¨1°"˜?Ó5Ñˆ	à—O‘OÓ%ˆ	Ø—‘“ˆä—I’I˜iÓ(×.Ñ.°3Ð.Ó7ˆ	Ü#Ÿkšk¨)Ó;Ðô —i‘i—o‘oÐ&9¿:¹:È2ÐT^�oÓ_×iÑiÐjkÐmnÓoˆØ!§K¡K°Õ$>Õ>ˆØ(×.Ñ.¨qÕ1ˆ
Ø! A•~¨¯©Õ8¸4¿:¹:ÕEˆÜ—’ØØ˜KÐ(Ø˜DŸJ™J˜Ø�t—‘Ð'ô	
ð
 ˆQ��4—<‘< 4§<¡< -Ð/Ð
/õ1ˆô Ÿ&š&Ø�K‰K×ÑÓ ×'Ñ'¨¨:°rÓ:×DÑDÀQÈÓJØ˜KÐ(Ø˜DŸJ™J˜Ø�t—‘Ð'ô	
÷
 ‰'‹)�D—L‘L D§L¡L =ð2ˆð *×/Ñ/°EÐ/Ó:ˆØÕ'ˆØ�‰˜qÓ!Ð!r+   )rð  rï  rî  r{  rò  rö   r�   s   @@r(   rê  rê  ê  s#   ù‡ € ñ÷:ó :÷""÷ ""ð ""r+   rê  c                   ób   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltV3R lR ltRtVtV ;t	# )	ÚXcodec2Quantizeri   c                ó    <€ V ^8„  d   QhRS[ /# rC   r   )r&   r'   s   "€r(   r)   ÚXcodec2Quantizer.__annotate__!  s   ø€ ÷ _ñ _™}ñ _r+   c                ó(  <€ \         SV `  4        \        V4      V n        \        P
                  ! VP                  \        VP                  4      4      V n	        \        P
                  ! \        VP                  4      VP                  4      V n
        R # rŒ   )rK   rL   r»  Ú	quantizerrS   rš   Úquantization_dimr   rÀ  Ú
project_inÚproject_outrž   s   &&€r(   rL   ÚXcodec2Quantizer.__init__!  sa   ø€ Ü‰ÑÔÜ8¸Ó@ˆŒÜŸ)š) F×$;Ñ$;¼SÀ×A[ÑA[Ó=\Ó]ˆŒÜŸ9š9¤S¨×)CÑ)CÓ%DÀf×F]ÑF]Ó^ˆÖr+   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rÑ  r£   )r&   r'   s   "€r(   r)   r  '  s#   ø€ ÷ 'ñ '¡%§,¡,ð '±5·<±<ñ 'r+   c                ó€   € VP                  R4      pV P                  P                  V,          pV P                  V4      # ©rN  rz   )r  r  rÄ  r  )rX   rÍ  rÓ  s   && r(   Ú
from_codesÚXcodec2Quantizer.from_codes'  s5   € Ø—/‘/ "Ó%ˆØ—‘×'Ñ'¨Õ0ˆØ×Ñ Ó&Ð&r+   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          /# r¡   rá  )r&   r'   s   "€r(   r)   r  ,  s1   ø€ ÷ &ñ &¡U§\¡\ð &±e¹E¿L¹LÉ%Ï,É,Ð<VÕ6Wñ &r+   c                ó   € V P                  V4      pVP                  pV P                  P                  V4      pV P                  V4      w  r4V P	                  VP                  V4      4      pVP                  R4      pW43# r  )r  re   r  rÞ  r  rj   r®   )rX   r¢   rå  Úquantized_outrÍ  s   &&   r(   rŠ   ÚXcodec2Quantizer.forward,  st   € ØŸ™¨Ó6ˆØ&×,Ñ,ˆØŸ™×,Ñ,¨]Ó;ˆØ!%§¡°Ó!>ÑˆØ×(Ñ(¨×)9Ñ)9¸.Ó)IÓJˆØ×#Ñ# BÓ'ˆØÐ%Ð%r+   )r  r  r  )
r-   r.   r/   r0   rL   r  rŠ   r3   r4   r�   r�   s   @@r(   r  r     s*   ù‡ € ÷_ó _÷'ð '÷
&÷ &ð &r+   r  c                   óT   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚXcodec2Decoderi6  zVVocos-based decoder with ResNet, Transformer, and ISTFT head for audio reconstruction.c                ó    <€ V ^8„  d   QhRS[ /# rC   r   )r&   r'   s   "€r(   r)   ÚXcodec2Decoder.__annotate__9  s   ø€ ÷ -ñ -™}ñ -r+   c           	     ó&  <€ \         SV `  4        \        P                  ! VP                  VP
                  P                  ,           VP                  4      V n        \        P                  ! VP                  VP                  ^^R7      V n        \        P                  ! \        V4      \        V4      .4      V n        VP                  V n        \        VR7      V n        \        P                  ! \        VP                   4       Uu. uF  p\#        W4      NK  	  up4      V n        \        P                  ! \        V4      \        V4      .4      V n        \        P(                  ! VP                  RR7      V n        \-        V4      V n        R# u upi )rx  r›  )rD   r  r  N)rK   rL   rS   rš   rg   Úsemantic_model_configÚfcr}  ÚembedrŸ  r¦  Ú	prior_netrh   r?   Ú
rotary_embÚrangeÚnum_hidden_layersr  ÚlayersÚpost_netÚ	LayerNormrø  rê  Úheadræ   s   && €r(   rL   ÚXcodec2Decoder.__init__9  s!  ø€ Ü‰ÑÔÜ—)’)˜F×.Ñ.°×1MÑ1M×1YÑ1YÕYÐ[a×[mÑ[mÓnˆŒÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÐSTÐ^_Ô`ˆŒ
ÜŸšÔ(:¸6Ó(BÔDVÐW]ÓD^Ð'_Ó`ˆŒØ#)×#=Ñ#=ˆÔ Ü0¸Ô?ˆŒÜ—m’mÜEJÈ6×KcÑKcÔEdÓeÑEd¸	Ô  Ö3ÑEdÑeó
ˆŒô ŸšÔ'9¸&Ó'AÔCUÐV\ÓC]Ð&^Ó_ˆŒÜ—L’L ×!3Ñ!3¸Ô>ˆŒ	Ü$ VÓ,ˆŽ	ùò	 fs   ÄFc                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r¡   r£   )r&   r'   s   "€r(   r)   r"  G  s#   ø€ ÷ 3ñ 3¡U§\¡\ð 3ÁÇÁñ 3r+   c                ó  € V P                  V4      pVP                  ^^4      pV P                  V4      pVP                  ^^4      pV P                   F  pV! V4      pK  	  \        P
                  ! V P                  VP                  R7      P                  ^ 4      pV P                  W4      pV P                   F  pV! V3RV/VB pK  	  V P                   F  pV! V4      pK  	  V P                  V P                  V4      4      # )rN  rÇ  ré   )r%  r€   r&  r'  r"   ri   rh   r@   r®   r(  r+  r,  r.  rø  )rX   r¢   rk   Úlayerr…   ré   s   &&,   r(   rŠ   ÚXcodec2Decoder.forwardG  sí   € ØŸ™ Ó.ˆØ%×/Ñ/°°1Ó5ˆØŸ
™
 =Ó1ˆØ%×/Ñ/°°1Ó5ˆð —^”^ˆEÙ! -Ó0ŠMñ $ô —|’| D×$<Ñ$<À]×EYÑEYÔZ×dÑdÐefÓgˆØ"Ÿo™o¨mÓJÐØ—[”[ˆEÙ! -ÑcÐEXÐcÐ\bÑcŠMñ !ð —]”]ˆEÙ! -Ó0ŠMñ #ð �y‰y˜Ÿ™ =Ó1Ó2Ð2r+   )	r&  r%  r.  r+  rø  rh   r,  r'  r(  rö   r�   s   @@r(   r   r   6  s!   ù‡ € Ù`÷-ó -÷3÷ 3ð 3r+   r   c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚXcodec2SemanticAdapterib  c                ó    <€ V ^8„  d   QhRS[ /# rC   r   )r&   r'   s   "€r(   r)   Ú#Xcodec2SemanticAdapter.__annotate__c  s   ø€ ÷ 
ñ 
™}ñ 
r+   c                óÌ  <€ \         SV `  4        \        P                  ! VP                  P
                  VP                  P
                  ^^RR7      V n        \        P                  ! 4       V n        \        P                  ! VP                  P
                  VP                  P
                  ^^RR7      V n	        \        P                  ! 4       V n
        \        P                  ! VP                  P
                  VP                  P
                  ^^RR7      V n        \        P                  ! VP                  P
                  VP                  P
                  ^^RR7      V n        R# )é   F)Úin_channelsÚout_channelsr8  r{  r—   T)r8  r{  r—   N)rK   rL   rS   r}  r$  rg   r~  ÚReLUÚact1r€  Úact2Úconv3Úconv4rž   s   &&€r(   rL   ÚXcodec2SemanticAdapter.__init__c  s
  ø€ Ü‰ÑÔÜ—Y’YØ×4Ñ4×@Ñ@Ø×5Ñ5×AÑAØØØô
ˆŒ
ô —G’G“IˆŒ	Ü—Y’YØ×(Ñ(×4Ñ4Ø×(Ñ(×4Ñ4ØØØô
ˆŒ
ô —G’G“IˆŒ	Ü—Y’YØ×(Ñ(×4Ñ4Ø×(Ñ(×4Ñ4ØØØô
ˆŒ
ô —Y’YØ×4Ñ4×@Ñ@Ø×5Ñ5×AÑAØØØô
ˆŽ
r+   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r¡   r£   )r&   r'   s   "€r(   r)   r7  „  s#   ø€ ÷ 	ñ 	¡U§\¡\ð 	±e·l±lñ 	r+   c                óæ   € V P                  V4      pV P                  V4      pTpV P                  V4      pV P                  V4      pV P	                  V4      pW,           pV P                  V4      pV# rŒ   )r~  r=  r€  r>  r?  r@  r¸  s   && r(   rŠ   ÚXcodec2SemanticAdapter.forward„  si   € ØŸ
™
 =Ó1ˆØŸ	™	 -Ó0ˆØ ˆØŸ
™
 =Ó1ˆØŸ	™	 -Ó0ˆØŸ
™
 =Ó1ˆØ%Õ0ˆØŸ
™
 =Ó1ˆØÐr+   )r=  r>  r~  r€  r?  r@  r§   r�   s   @@r(   r5  r5  b  s   ù‡ € ÷
ó 
÷B	÷ 	ð 	r+   r5  c                   ó|   a a€ ] tR tRt oRtRtRtRtR.tRt	Rt
RtRtRtRtRtR]R]/tV 3R	 ltV3R
 ltRtVtV ;t# )ÚXcodec2PreTrainedModeli�  Úxcodec2TNrê   Úinput_valuesr¢   Ú
attentionsc                ó|  <€ \         SV `  V4       \        V\        4      '       dC   \        P
                  ! VP                  4       \        P
                  ! VP                  4       R# \        V\        4      '       dD   \        P                  ! VP                  4      p\        P                  ! VP                  V4       R# \        V\        4      '       d�   VP                  VP                   P"                  R 7      w  r4p\        P                  ! VP                   V4       \        P                  ! VP$                  V4       \        P                  ! VP&                  V4       R# \        V\(        4      '       d]   \+        RVP,                  ,          RVP,                  ,          VP.                  4      p\        P                  ! VP0                  V4       R# \        V\2        4      '       dO   \+        VP4                  VP6                  VP.                  4      p\        P                  ! VP0                  V4       R# R# )rÇ  r0  rD  N)rK   Ú_init_weightsr}   r#  ÚinitÚzeros_r'  r(  rê  r"   rñ  rî  Úcopy_rò  r»  rÁ  rÂ  r@   rÃ  rÄ  r\  r@  rK  r8  rJ  rB  r6  r7  )rX   r¿   rò  rÂ  rÃ  rÄ  Úfilter_tensorrZ   s   &&     €r(   rK  Ú$Xcodec2PreTrainedModel._init_weights¤  sc  ø€ Ü‰Ñ˜fÔ%Ü�fÔ.×/Ò/Ü�KŠK˜Ÿ™Ô%Ü�KŠK˜Ÿ™Ö$Ü˜Ô 0×1Ò1Ü×&Ò& v§|¡|Ó4ˆFÜ�JŠJ�v—}‘} fÖ-Ü˜Ô ?×@Ò@Ø&,×&=Ñ&=ÀVÇ]Á]×EYÑEYÐ&=Ó&ZÑ#ˆF˜8Ü�JŠJ�v—}‘} fÔ-Ü�JŠJ�v—|‘| UÔ+Ü�JŠJ�v—‘¨Ö1Ü˜Ô 1×2Ò2Ü0°°v·|±|Õ1CÀSÈ6Ï<É<ÕEWÐY_×YkÑYkÓlˆMÜ�JŠJ�v—}‘} mÖ4Ü˜Ô 3×4Ò4Ü0°·±À×@QÑ@QÐSY×SeÑSeÓfˆMÜ�JŠJ�v—}‘} mÖ4ñ 5r+   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rC   r   )r&   r'   s   "€r(   r)   Ú#Xcodec2PreTrainedModel.__annotate__�  s   ø‡ ‚ áÑò r+   r,   )r	  )r-   r.   r/   r0   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_supports_cache_classÚ_supports_attention_backendÚ_can_compile_fullgraphÚmain_input_namer  Ú_can_record_outputsrK  r2   r3   r4   r�   r�   s   @@r(   rF  rF  �  sp   ù‡ € ð "ÐØ!ÐØ&*Ð#ØÐØ#4Ð"5ÐØÐØ€NØÐØ ÐØ"&ÐØ!ÐØ$€OàÐ,ØÐ)ðÐõ
5÷) … r+   rF  z!Xcodec2 neural audio codec model.)Úcustom_introc                   óÀ   a a€ ] tR tRt o]tV3R lV 3R llt]]RV3R lR ll4       4       t	]]RV3R lR ll4       4       t
]]RV3R lR	 ll4       4       tR
tVtV ;t# )ÚXcodec2Modeli¹  c                ó    <€ V ^8„  d   QhRS[ /# rC   r   )r&   r'   s   "€r(   r)   ÚXcodec2Model.__annotate__½  s   ø€ ÷ ñ ™}ñ r+   c                óþ  <€ \         SV `  V4       VP                  V n        \        P                  ! VP
                  4      V n        \        V4      V n        \        V4      V n
        \        P                  ! VP                  VP
                  P                  ,           VP                  VP
                  P                  ,           4      V n        \        V4      V n        \#        V4      V n        V P'                  4        R # rŒ   )rK   rL   rð  r   Úfrom_configr$  Úsemantic_encoderr5  Úsemantic_adapterr—  Úacoustic_encoderrS   rš   rg   Ú
fc_encoderr  r  r   Úacoustic_decoderÚ	post_initrž   s   &&€r(   rL   ÚXcodec2Model.__init__½  s¹   ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ )× 5Ò 5°f×6RÑ6RÓ SˆÔÜ 6°vÓ >ˆÔÜ .¨vÓ 6ˆÔÜŸ)š)Ø×Ñ ×!=Ñ!=×!IÑ!IÕIØ×Ñ ×!=Ñ!=×!IÑ!IÕIó
ˆŒô *¨&Ó1ˆŒÜ .¨vÓ 6ˆÔà�‰Ör+   c                óÐ   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  R,          RS[ P                  R,          RS[RS[S[,          RS[S[,          /# ©	r   rH  Úinput_featuresÚpadding_maskNÚinput_features_maskÚoutput_latentsrk   r]   )r"   r%   r  r   r   r^   r7   )r&   r'   s   "€r(   r)   rd  Ï  sw   ø€ ÷ 2
ñ 2
á—l‘lð2
ñ Ÿ™ð2
ñ —l‘l TÕ)ð	2
ñ
 #Ÿ\™\¨DÕ0ð2
ñ ð2
ñ Ñ+Õ,ð2
ñ 
Ñ%Õ	%ñ2
r+   c                óL  € \         P                  ! 4       ;_uu_ 4        V P                  W$R7      pRRR4       XP                  P	                  ^^4      pV P                  V4      pV P                  V4      p	\         P                  ! W‰.^R7      p
V P                  V
P	                  ^^4      4      p
V P                  V
4      w  r¼VP	                  ^^4      pVP	                  ^^4      pRpVe‡   VP                  RRR7      pWàP                  ,          p\         P                  ! VP                  R,          VP                  R7      P                  ^R4      pVV8  P!                  VP"                  4      p\%        TV'       d	   VVR7      # RVR7      #   + '       g   i     ELj; i)	a°  
input_values (`torch.Tensor` of shape `(batch_size, 1, sequence_length)`):
    Input audio waveform.
input_features (`torch.Tensor` of shape `(batch_size, mel_bins, time_steps)`):
    Input audio mel spectrogram for semantic encoding.
padding_mask (`torch.Tensor` of shape `(batch_size, 1, sequence_length)`):
    Padding mask used to pad `input_values`.
input_features_mask (`torch.Tensor` of shape `(batch_size, time_steps)`, *optional*):
    Attention mask for the spectrogram input to the semantic encoder. `1` for valid frames, `0` for padding.
output_latents (`bool`, *optional*, defaults to `False`):
    Whether to return the continuous latent representation from the quantizer.
)rÃ   Nrw   T)rm   r  rÇ  )r   r    r!   rz   )r"   rŽ   rg  Úlast_hidden_stater€   rh  ri  r�   rj  r  r5  rð  ri   r|   r@   rí   rj   re   r7   )rX   rH  rp  rq  rr  rs  rk   Úsemantic_outputÚsemantic_hidden_statesÚacoustic_hidden_statesr¢   r    r   r!   Úaudio_lengthÚtoken_lengthÚidxs   &&&&&&,          r(   ÚencodeÚXcodec2Model.encodeÍ  sz  € ô2 �]Š]�_�_Ø"×3Ñ3°NÐ3ÓgˆO÷ à!0×!BÑ!B×!LÑ!LÈQÐPQÓ!RÐØ!%×!6Ñ!6Ð7MÓ!NÐð "&×!6Ñ!6°|Ó!DÐÜŸ	š	Ð#9Ð"RÐXYÔZˆØŸ™¨×(?Ñ(?ÀÀ1Ó(EÓFˆð  $Ÿ~™~¨mÓ<ÑˆØ×#Ñ# A qÓ)ˆØ!×+Ñ+¨A¨qÓ1ˆð  ÐØÒ#Ø'×+Ñ+°¸DÐ+ÓAˆLØ'¯?©?Õ:ˆLÜ—,’,˜{×0Ñ0°Õ4¸\×=PÑ=PÔQ×VÑVÐWXÐZ\Ó]ˆCØ # lÑ 2×6Ñ6°|×7IÑ7IÓJÐä#Ø#ß-�GØ-ô
ð 	
à37Ø-ô
ð 	
÷/ �_ˆ_ús   žFÆF#	c          	      ó–   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[S[,          RS[S[,          /# )r   r   Nr    rk   r]   )r"   r%   r   r   r^   r;   )r&   r'   s   "€r(   r)   rd    sQ   ø€ ÷ >ñ >á—\‘\ DÕ(ð>ñ —‘ Õ$ð>ñ Ñ+Õ,ð	>ñ
 
Ñ%Õ	%ñ>r+   c                óê   € Vf   Vf   \        R4      hVe-   V P                  P                  VP                  ^^4      4      pMVP                  ^^4      pV P                  ! V3/ VB p\        VR7      # )a  
audio_codes (`torch.LongTensor`  of shape `(batch_size, 1, codes_length)`):
    Discrete code indices computed using `model.encode`.
latents (torch.Tensor of shape `(batch_size, dimension, time_steps)`, *optional*):
    Quantized continuous representation of input.
z3Either `latents` or `audio_codes` must be provided.)r   )rE  r  r  r€   rk  r;   )rX   r   r    rk   Úrecon_audios   &&&, r(   ÚdecodeÚXcodec2Model.decode  ss   € ð Š?˜{Ò2ÜÐRÓSÐSàÒ"Ø—n‘n×/Ñ/°×0EÑ0EÀaÈÓ0KÓL‰Gà×'Ñ'¨¨1Ó-ˆGà×+Ò+¨GÑ>°vÑ>ˆÜ#°Ô=Ð=r+   c                óÐ   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  R,          RS[ P                  R,          RS[RS[S[,          RS[S[,          /# ro  )r"   r%   r  r   r   r^   r   )r&   r'   s   "€r(   r)   rd    sv   ø€ ÷ :
ñ :
á—l‘lð:
ñ Ÿ™ð:
ñ —l‘l TÕ)ð	:
ñ
 #Ÿ\™\¨DÕ0ð:
ñ ð:
ñ Ñ+Õ,ð:
ñ 
‘Õ	ñ:
r+   c           	     ó(  € VP                   R,          pV P                  VVVVRRR7      pV P                  ! R	RVP                  RR/VB ^ ,          RRV13,          p	\	        T	VP
                  V'       d   VP                  MRVP                  R7      # )
aG  
input_values (`torch.Tensor` of shape `(batch_size, 1, sequence_length)`):
    Input audio waveform.
input_features (`torch.Tensor` of shape `(batch_size, mel_bins, time_steps)`):
    Input audio mel spectrogram for semantic encoding.
padding_mask (`torch.Tensor` of shape `(batch_size, 1, sequence_length)`):
    Padding mask used to pad `input_values`.
input_features_mask (`torch.Tensor` of shape `(batch_size, time_steps)`, *optional*):
    Attention mask for the spectrogram input to the semantic encoder. `1` for valid frames, `0` for padding.
output_latents (`bool`, *optional*, defaults to `False`):
    Whether to return the continuous latent representation from the quantizer.

Examples:

```python
>>> from datasets import load_dataset
>>> from transformers import AutoFeatureExtractor, Xcodec2Model

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> audio = dataset["train"]["audio"][0]["array"]

>>> model_id = "HKUSTAudio/xcodec2-hf"
>>> model = Xcodec2Model.from_pretrained(model_id)
>>> feature_extractor = AutoFeatureExtractor.from_pretrained(model_id)

>>> inputs = feature_extractor(audio=audio, sampling_rate=feature_extractor.sampling_rate, return_tensors="pt")

>>> outputs = model(**inputs)
>>> audio_codes = outputs.audio_codes
>>> audio_values = outputs.audio_values
```T)rp  rq  rr  rs  Úreturn_dictr    r…  .N)r   r   r    r!   rz   r,   )r|   r|  r�  r    r   r   r!   )
rX   rH  rp  rq  rr  rs  rk   ÚlengthÚencoder_outputsr   s
   &&&&&&,   r(   rŠ   ÚXcodec2Model.forward  s¦   € ðV ×#Ñ# BÕ'ˆàŸ+™+ØØ)Ø%Ø 3ØØð &ó 
ˆð —{’{Ñ_¨?×+BÑ+BÐ_ÐPTÐ_ÐX^Ñ_Ð`aÕbÐcfÐhoÐioÐhoÐcoÕpˆäØ%Ø'×3Ñ3ß/=�O×+Ò+À4Ø,×=Ñ=ô	
ð 	
r+   )rk  ri  rj  rð  r  rh  rg  )NNF)NN)r-   r.   r/   r0   r   Úconfig_classrL   r   r   r|  r�  rŠ   r3   r4   r�   r�   s   @@r(   rb  rb  ¹  s}   ù‡ € à €L÷ó ð  Ø÷2
ñ 2
ó ó ð2
ðh Ø÷>ñ >ó ó ð>ð. Ø÷:
ñ :
ó ó ÷:
ð :
r+   rb  )rN  )rì   )Mr1  Úcollections.abcr   Údataclassesr   ÚnumpyrË  r"   Útorch.nnrS   Útorch.nn.functionalrÎ   rT  r   Ú r   rL  Úactivationsr   Úcache_utilsr   Úintegrationsr	   r
   Úmodeling_layersr   Úmodeling_rope_utilsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.deprecationr   Úutils.genericr   Úautor   Úconfiguration_xcodec2r   r   r7   r;   rÆ   r?   r’   r«   r´   r½   rÖ   rØ   rù   r  r#  r@  rB  r\  rc  rv  rˆ  r—  r¦  r»  rê  r  r   r5  rF  rb  Ú__all__r,   r+   r(   Ú<module>r�     sŽ  ðó( Ý $Ý !ã Û Ý ß Ð Ý å &Ý !Ý  ß LÝ 9ß Kß FÝ &ß VÓ VÝ 0Ý +Ý Ý 0ð Ø
ô1�Kó 1ó ó ð1ð( Ø
ô1˜;ó 1ó ó ð1ð" Ø
ô2˜;ó 2ó ó ð2ô6<˜RŸY™Yô 6<ôr�—‘ô ò(ñ Ð-Ó.óó /ðõ2	U÷%ñ2 Ð)Ó*ôC)�r—y‘yó C)ó +ðC)ñL ˜YÓ'ôJ�R—Y‘Yó Jó (ðJô((Ð4ô (ôV&�r—y‘yô &òR+5ô\˜"Ÿ)™)ô ôD˜Ÿ	™	ô ô6 R§Y¡Yô ô0!˜"Ÿ)™)ô !ôH˜"Ÿ)™)ô ô.�R—Y‘Yô ô@:˜Ÿ™ô :ô0P1 b§i¡iô P1ôf3"�r—y‘yô 3"ôl&�r—y‘yô &ô,)3�R—Y‘Yô )3ôX+˜RŸY™Yô +ð\ ô%5˜_ó %5ó ð%5ñP Ð@ÔAô^
Ð)ó ^
ó Bð^
ðB Ð3Ð
4‚r+   