+
    œ°³j»„  ã                   ó0  € ^ 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HtHt ^RIH t  ^RI!H"t"H#t#H$t$ ^RI%H&t& ^RI'H(t(H)t)H*t* ^RI+H,t, ^RI-H.t.H/t/H0t0H1t1H2t2 ^RI3H4t4H5t5H6t6H7t7H8t8 ^RI9H:t: ]! RR7      ] ! R R],4      4       4       t;]] ! R R]4      4       4       t<]] ! R R]4      4       4       t=]] ! R R]4      4       4       t> ! R R]04      t? ! R R ]&4      t@ ! R! R"].4      tA ! R# R$]/4      tB ! R% R&]64      tC ! R' R(]54      tD ! R) R*]74      tE ! R+ R,]44      tF ! R- R.]*4      tG ! R/ R0])4      tH ! R1 R2](4      tI ! R3 R4]P”                  4      tK ! R5 R6]P”                  4      tL ! R7 R8]P”                  4      tM ! R9 R:]P”                  4      tN ! R; R<]P”                  4      tO ! R= R>]P”                  4      tP ! R? R@]:4      tQ]! RARB7       ! RC RD]Q4      4       tR. REOtSR# )Fé    )ÚCallable)Ú	dataclassN)Ústrict)Úinitialization)ÚCache)ÚPreTrainedConfig)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Úmaybe_autocast)ÚCONFIG_MAPPINGÚ
AutoConfigÚ	AutoModel)ÚCLIPMLP)Ú
DacEncoderÚDacEncoderBlockÚDacResidualUnit)ÚLlamaConfig)ÚLlamaAttentionÚLlamaDecoderLayerÚLlamaRotaryEmbeddingÚapply_rotary_pos_embÚeager_attention_forward)Ú"Qwen2_5OmniAntiAliasedActivation1dÚQwen2_5OmniDownSample1dÚQwen2_5OmniSnakeBetaÚQwen2_5OmniUpSample1dÚkaiser_sinc_filter1d)ÚVoxtralPreTrainedModelzHKUSTAudio/xcodec2-hf)Ú
checkpointc                   ó.  a a€ ] tR t^8t oRtRtR]/t^0tRt	Rt
RtRtRtRtRtR	t^t^t^t^@tR	t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t]! 4       tV 3R
 lt] V3R lR l4       t!] V3R lR l4       t"V3R lt#Rt$Vt%V ;t&# )ÚXcodec2Configaa  
downsampling_ratios (`list[int]`, *optional*, defaults to `[2, 2, 4, 4, 5]`):
    Ratios for downsampling in the encoder.
semantic_model_config (`Union[Dict, Wav2Vec2BertConfig]`, *optional*):
    An instance of the configuration object for the semantic (Wav2Vec2BertConfig) model.
quantization_dim (`int`, *optional*, defaults to 2048):
    Dimension for the vector quantization codebook.
quantization_levels (`list[int]`, *optional*, defaults to `[4, 4, 4, 4, 4, 4, 4, 4]`):
    Levels for the vector quantization codebook.

Example:

```python
>>> from transformers import Xcodec2Config, Xcodec2Model

>>> # Initializing configuration
>>> configuration = Xcodec2Config()

>>> # Initializing a model (with random weights) from the configuration
>>> model = Xcodec2Model(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
```Úxcodec2Úsemantic_model_configNi€>  gš™™™™™¹?i   i   i   c                óp  <€ \        V P                  \        4      '       d^   V P                  P                  R R4      V P                  R &   \        V P                  R ,          ,          ! R/ V P                  B V n        M'V P                  f   \        R,          ! ^R7      V n        \
        SV `  ! R/ VB  R# )Ú
model_typezwav2vec2-bertN)Únum_hidden_layers© )Ú
isinstancer(   ÚdictÚgetr   ÚsuperÚ__post_init__)ÚselfÚkwargsÚ	__class__s   &,€Úl/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/xcodec2/modular_xcodec2.pyr1   ÚXcodec2Config.__post_init__n   s˜   ø€ Ü�d×0Ñ0´$×7Ò7Ø7;×7QÑ7Q×7UÑ7UÐVbÐdsÓ7tˆD×&Ñ& |Ñ4Ü)7¸×8RÑ8RÐS_Õ8`Ö)añ *Ø×,Ñ,ñ*ˆDÕ&ð ×'Ñ'Ò/Ü)7¸Ö)HÐ[]Ô)^ˆDÔ&ä‰ÒÑ' Ô'ó    c                ó    <€ V ^8„  d   QhRS[ /# ©é   Úreturn©Úint)ÚformatÚ__classdict__s   "€r5   Ú__annotate__ÚXcodec2Config.__annotate__z   s   ø€ ÷ 6ñ 6™Cñ 6r7   c                óT   € \        \        P                  ! V P                  4      4      # ©N)r=   ÚnpÚprodÚdownsampling_ratios©r2   s   &r5   Ú
hop_lengthÚXcodec2Config.hop_lengthy   s   € ä”2—7’7˜4×3Ñ3Ó4Ó5Ð5r7   c                ó    <€ V ^8„  d   QhRS[ /# r9   r<   )r>   r?   s   "€r5   r@   rA   ~   s   ø€ ÷ #ñ #‘sñ #r7   c                ó(   € V P                   ^,          # )é   )rH   rG   s   &r5   Ún_fftÚXcodec2Config.n_fft}   s   € à�‰ Õ"Ð"r7   c                óH  <€ V ^8„  d   Qh/ S[ ;R&   S[S[ ,          S[S[ R3,          ,          ;R&   S[S[,          R,          ;R&   S[ ;R&   S[;R&   S[ ;R&   S[S[ ,          S[S[ R3,          ,          ;R	&   S[ ;R
&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   # )r:   Úencoder_hidden_size.rF   Nr(   Úsampling_rateÚactivation_dropoutÚquantization_dimÚquantization_levelsÚhidden_sizeÚintermediate_sizeÚnum_attention_headsÚnum_key_value_headsr+   Úhead_dimÚmax_position_embeddings)r=   ÚlistÚtupler.   r   Úfloat)r>   r?   s   "€r5   r@   rA   8   s  ø‡ ‚ ñ> Ñ!ñ? ñ@ ™c�¡U©3°¨8¥_Õ4ÑFñA ñB  Ñ"2Õ2°TÕ9Ñ@ñC ñD ÑñE ñF Ñ#ñG ñH Ñ ñI ñJ ™c�¡U©3°¨8¥_Õ4ÑOñK ñL ÑñM ñN Ñ!ñO ñP Ñ!ñQ ñR Ñ!ñS ñT ÑñU ñV ÑñW ñX !Ñ'òY r7   )r(   )r:   r:   rL   rL   é   )rL   rL   rL   rL   rL   rL   rL   rL   )'Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r*   r   Úsub_configsrP   rF   r(   rQ   rR   rS   rT   rU   rV   rW   rX   r+   rY   rZ   ÚAttributeErrorÚ
vocab_sizeÚbos_token_idÚeos_token_idÚpretraining_tpÚmlp_biasÚ	use_cacheÚbase_model_tp_planÚbase_model_pp_planr1   ÚpropertyrH   rM   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r4   r?   s   @@r5   r&   r&   8   sã   ù‡ € ñð2 €JØ*¨JÐ7€Kà!ÐØ7FÐØ<@ÐØ€MØ #ÐØ ÐØ7OÐØ€KØ!ÐØ!ÐØ!ÐØÐØ€HØ#'ÐÙÓ!€JÙ!Ó#€LÙ!Ó#€LÙ#Ó%€NÙÓ€HÙÓ €IÙ'Ó)ÐÙ'Ó)Ðõ	(ð ÷6ó ð6ð ÷#ó ð#÷M … r7   r&   c                   ó@   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&   # )r:   NÚaudio_valuesÚaudio_codesÚlatentsÚaudio_codes_mask)ÚtorchÚFloatTensorÚ
LongTensorÚTensor)r>   r?   s   "€r5   r@   ÚXcodec2Output.__annotate__‚   sa   ø‡ ‚ ñ  ×#Ñ# dÕ*Ñ1ñ! ñ" ×!Ñ! DÕ(Ñ/ñ# ñ$ �\‰\˜DÕ Ñ'ñ% ñ& —l‘l TÕ)Ñ0ò' r7   r,   )r_   r`   ra   rb   rc   rw   rx   ry   rz   ro   rp   rq   ©r?   s   @r5   ru   ru   ‚   s(   ø‡ € ñð .2€LØ+/€KØ#'€GØ,0Ð÷' ƒ r7   ru   c                   ó<   a € ] tR t^˜t 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:   Nrx   ry   rz   )r{   r}   r~   )r>   r?   s   "€r5   r@   Ú!Xcodec2EncoderOutput.__annotate__˜   sI   ø‡ ‚ ñ ×!Ñ! DÕ(Ñ/ñ ñ �\‰\˜DÕ Ñ'ñ ñ  —l‘l TÕ)Ñ0ò! r7   r,   )r_   r`   ra   rb   rc   rx   ry   rz   ro   rp   rq   r€   s   @r5   r‚   r‚   ˜   s#   ø‡ € ñ	ð ,0€KØ#'€GØ,0Ð÷! ƒ r7   r‚   c                   ó4   a € ] tR t^«t 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:   Nrw   )r{   r|   )r>   r?   s   "€r5   r@   Ú!Xcodec2DecoderOutput.__annotate__«   s   ø‡ ‚ ñ ×#Ñ# dÕ*Ñ1ò r7   r,   )	r_   r`   ra   rb   rc   rw   ro   rp   rq   r€   s   @r5   r†   r†   «   s   ø‡ € ñð .2€L÷ ƒ r7   r†   c                   ó   € ] tR t^¸tRtR# )ÚXcodec2RotaryEmbeddingr,   N©r_   r`   ra   rb   rp   r,   r7   r5   rŠ   rŠ   ¸   ó   † Ûr7   rŠ   c                   ó>   a a€ ] tR t^¼t oV3R lV 3R lltRtVtV ;t# )Ú
Xcodec2MLPc                ó    <€ V ^8„  d   QhRS[ /# ©r:   Úconfig©r&   )r>   r?   s   "€r5   r@   ÚXcodec2MLP.__annotate__½   s   ø€ ÷ Wñ W™}ñ Wr7   c                óî   <€ \         SV `  V4       \        P                  ! VP                  VP
                  R R7      V n        \        P                  ! VP
                  VP                  R R7      V n        R# )F)ÚbiasN)r0   Ú__init__ÚnnÚLinearrU   rV   Úfc1Úfc2©r2   r‘   r4   s   &&€r5   r–   ÚXcodec2MLP.__init__½   sR   ø€ Ü‰Ñ˜Ô Ü—9’9˜V×/Ñ/°×1IÑ1IÐPUÔVˆŒÜ—9’9˜V×5Ñ5°v×7IÑ7IÐPUÔVˆŽr7   )r™   rš   ©r_   r`   ra   rb   r–   rp   rq   rr   rs   s   @@r5   rŽ   rŽ   ¼   s   ù‡ € ÷W÷ Wó Wr7   rŽ   c                   óT   a a€ ] tR t^Ã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# )ÚXcodec2Attentionc                ó&   <€ V ^8„  d   QhRS[ RS[/# )r:   r‘   Ú	layer_idx©r&   r=   )r>   r?   s   "€r5   r@   ÚXcodec2Attention.__annotate__Ä   s   ø€ ÷ ñ ™}ð ¹ñ r7   c                ó4   <€ \         SV `  W4       R V n        R# )FN)r0   r–   Ú	is_causal©r2   r‘   r¡   r4   s   &&&€r5   r–   ÚXcodec2Attention.__init__Ä   s   ø€ Ü‰Ñ˜Ô+ØˆŽr7   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:   Úhidden_statesÚposition_embeddingsNÚattention_maskÚpast_key_valuesr3   r;   )r{   r~   r\   r   r   r   )r>   r?   s   "€r5   r@   r£   È   s‡   ø€ ÷ ))ñ ))á—|‘|ð))ñ #¡5§<¡<±·±Ð#=Õ>ÀÕEð))ñ Ÿ™ tÕ+ð	))ñ
  �ð))ñ Ñ+Õ,ð))ñ 
‰u�|‰|™UŸ\™\Ð)Õ	*ñ))r7   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)Úunsqueeze_dimÚdropoutç        Úscalingéÿÿÿÿ)ÚshaperY   Úq_projÚviewÚ	transposeÚk_projÚv_projr   Úupdater¡   r	   Úget_interfacer‘   Ú_attn_implementationr   ÚtrainingÚattention_dropoutr±   ÚreshapeÚ
contiguousÚo_proj)r2   r©   rª   r«   r¬   r3   Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚcosÚsinÚattention_interfaceÚattn_outputÚattn_weightss   &&&&&,          r5   ÚforwardÚ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 +Ó.ˆØÐ(Ð(r7   )r¥   )NNN©	r_   r`   ra   rb   r–   rË   rp   rq   rr   rs   s   @@r5   rŸ   rŸ   Ã   s   ù‡ € ÷ó ÷))÷ ))ò ))r7   rŸ   c                   ó   € ] tR t^ôtRtR# )ÚXcodec2DecoderLayerr,   Nr‹   r,   r7   r5   rÏ   rÏ   ô   rŒ   r7   rÏ   c                   ó   € ] tR t^øtRtR# )ÚXcodec2SnakeBetar,   Nr‹   r,   r7   r5   rÑ   rÑ   ø   rŒ   r7   rÑ   c                   ó&   a € ] tR t^üt o R tRtV tR# )ÚXcodec2DownSample1dc                ó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©ÚstrideÚgroupsr²   )r³   ÚFÚpadÚpad_leftÚ	pad_rightÚconv1dÚfilterÚtoÚdtypeÚexpandrÚ   )r2   r©   ÚchannelsÚouts   &&  r5   rË   ÚXcodec2DownSample1d.forwardý   sw   € Ø ×&Ñ& qÕ)ˆÜŸš˜m¯m©m¸T¿^¹^Ð-LÐS^Ô_ˆÜ�hŠhØà�K‰K�N‰N˜=×.Ñ.Ó/×6Ñ6°xÀÀRÓHØ—;‘;Øô
ˆð ˆ
r7   r,   N©r_   r`   ra   rb   rË   rp   rq   r€   s   @r5   rÓ   rÓ   ü   s   ø‡ € ÷
ð 
r7   rÓ   c                   ó&   a € ] tR tRt o R tRtV tR# )ÚXcodec2UpSample1di
  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# )rÕ   rÖ   r×   rÙ   .r²   )r³   rÜ   rÝ   ÚratioÚconv_transpose1drá   râ   rã   rä   rÚ   rÞ   rß   )r2   r©   rå   s   && r5   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ˆØÐr7   r,   Nrè   r€   s   @r5   rê   rê   
  s   ø‡ € ÷ð r7   rê   c                   óB   a a€ ] tR tRt oRV3R lV 3R lll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_sizer<   )r>   r?   s   "€r5   r@   Ú+Xcodec2AntiAliasedActivation1d.__annotate__  s;   ø€ ÷ Lñ Lñ ðLñ ð	Lñ
 ðLñ ñLr7   c                óp   <€ \         SV `  VVVVVR 7       \        W$4      V n        \	        W54      V n        R# ))Ú
activationrò   ró   rô   rõ   N)r0   r–   rê   ÚupsamplerÓ   Ú
downsample)r2   rø   rò   ró   rô   rõ   r4   s   &&&&&&€r5   r–   Ú'Xcodec2AntiAliasedActivation1d.__init__  s@   ø€ ô 	‰ÑØ!ØØ!Ø)Ø-ð 	ô 	
ô *¨(ÓCˆŒÜ-¨jÓKˆŽr7   )rú   rù   )r:   r:   é   rü   r�   rs   s   @@r5   rð   rð     s   ù‡ € ÷L÷ Lõ Lr7   rð   c                   ó2   a a€ ] tR tRt oV 3R ltRtVtV ;t# )ÚXcodec2ResidualUniti-  c                óŽ   <€ \         SV `  W4       \        \        V4      R 7      V n        \        \        V4      R 7      V n        R# )©rø   N)r0   r–   rð   rÑ   Úsnake1Úsnake2)r2   Ú	dimensionÚdilationr4   s   &&&€r5   r–   ÚXcodec2ResidualUnit.__init__.  s6   ø€ Ü‰Ñ˜Ô-Ü4Ô@PÐQZÓ@[Ô\ˆŒÜ4Ô@PÐQZÓ@[Ô\ˆŽr7   )r  r  r�   rs   s   @@r5   rþ   rþ   -  s   ù‡ € ÷]õ ]r7   rþ   c                   óB   a a€ ] tR tRt oRV3R lV 3R llltRtVtV ;t# )ÚXcodec2EncoderBlocki4  c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r:   r‘   rÚ   Ústride_indexr¢   )r>   r?   s   "€r5   r@   Ú Xcodec2EncoderBlock.__annotate__5  s'   ø€ ÷ bñ b™}ð b±cð bÉSñ br7   c                óž   <€ \         SV `  WV4       VP                  ^V,          ,          p\        \	        V^,          4      R7      V n        R# ©r:   r   N)r0   r–   rP   rð   rÑ   r  )r2   r‘   rÚ   r	  r  r4   s   &&&& €r5   r–   ÚXcodec2EncoderBlock.__init__5  s?   ø€ Ü‰Ñ˜¨Ô6Ø×.Ñ.°°LµÕ@ˆ	Ü4Ô@PÐQZÐ^_ÕQ_Ó@`ÔaˆŽr7   ©r  )rÕ   rÕ   r�   rs   s   @@r5   r  r  4  s   ù‡ € ÷b÷ bõ br7   r  c                   ó>   a a€ ] tR tRt oV3R lV 3R lltRtVtV ;t# )ÚXcodec2Encoderi;  c                ó    <€ V ^8„  d   QhRS[ /# r�   r’   )r>   r?   s   "€r5   r@   ÚXcodec2Encoder.__annotate__<  s   ø€ ÷ [ñ [™}ñ [r7   c                ó´   <€ \         SV `  V4       VP                  ^\        VP                  4      ,          ,          p\        \        V4      R7      V n        R# r  )r0   r–   rP   ÚlenrF   rð   rÑ   r  )r2   r‘   Úd_modelr4   s   && €r5   r–   ÚXcodec2Encoder.__init__<  sC   ø€ Ü‰Ñ˜Ô Ø×,Ñ,¨q´C¸×8RÑ8RÓ4SÕ/SÕSˆÜ4Ô@PÐQXÓ@YÔZˆŽr7   r  r�   rs   s   @@r5   r  r  ;  s   ù‡ € ÷[÷ [ó [r7   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# )ÚXcodec2ResNetBlockiB  c                ó    <€ V ^8„  d   QhRS[ /# r�   r’   )r>   r?   s   "€r5   r@   ÚXcodec2ResNetBlock.__annotate__C  s   ø€ ÷ kñ k™}ñ kr7   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# )é    ç�íµ ÷Æ°>T)Ú
num_groupsÚnum_channelsÚepsÚaffine)Úkernel_sizerÚ   ÚpaddingN)r0   r–   r—   Ú	GroupNormrU   Únorm1ÚSiLUÚactivation1ÚConv1dÚconv1Únorm2Úactivation2rR   Úconv2r›   s   &&€r5   r–   ÚXcodec2ResNetBlock.__init__C  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ˆŽ
r7   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r:   r©   r;   ©r{   r~   )r>   r?   s   "€r5   r@   r  M  s#   ø€ ÷ 
:ñ 
:¡U§\¡\ð 
:±e·l±lñ 
:r7   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      # )rÕ   )Úpr¼   )r¶   r%  r'  r)  r*  r+  r—   Ú
functionalr¯   rR   r¼   r,  ©r2   r©   Úresiduals   && r5   rË   ÚXcodec2ResNetBlock.forwardM  s­   € Ø%×/Ñ/°°1Ó5ˆØ ˆØŸ
™
 =Ó1ˆØ×(Ñ(¨Ó7ˆØŸ
™
 =Ó1ˆØŸ
™
 =Ó1ˆØ×(Ñ(¨Ó7ˆÜŸ™×-Ñ-¨m×?VÑ?VÐae×anÑanÐ-ÓoˆØŸ
™
 =Ó1ˆØÕ(×3Ñ3°A°qÓ9Ð9r7   )r'  r+  rR   r)  r,  r%  r*  rÍ   rs   s   @@r5   r  r  B  s    ù‡ € ÷kó k÷
:÷ 
:ð 
:r7   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# )ÚXcodec2FiniteScalarQuantizationiZ  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[ /# r�   r’   )r>   r?   s   "€r5   r@   Ú,Xcodec2FiniteScalarQuantization.__annotate__c  s   ø€ ÷ >ñ >™}ñ >r7   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# )F©Ú
persistentN)
r0   r–   r[   rT   Ú_compute_buffersr—   ÚBufferÚlevelsÚbasisÚcodebook)r2   r‘   r@  rA  rB  r4   s   &&   €r5   r–   Ú(Xcodec2FiniteScalarQuantization.__init__c  sj   ø€ Ü‰ÑÔÜ#'¨×(BÑ(BÓ#CˆÔ Ø"&×"7Ñ"7Ó"9Ñˆ�xÜ—i’i °5Ô9ˆŒÜ—Y’Y˜u°Ô7ˆŒ
ÜŸ	š	 (°uÔ=ˆŽr7   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.)rã   ÚdeviceN©rE  )Údimrã   r²   )
r{   ÚtensorrT   Úint32ÚcumprodÚaranger=   rD   rE   Ú	unsqueeze)r2   rE  r@  rA  ÚindicesÚlevel_indicesÚ
half_widthrB  s   &&      r5   r>  Ú0Xcodec2FiniteScalarQuantization._compute_buffersk  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Ð&Ð&r7   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r:   rM  r;   r0  )r>   r?   s   "€r5   r@   r:  w  s#   ø€ ÷ ñ ©¯©ð ¹%¿,¹,ñ r7   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].
r²   )rL  rA  r@  )r2   rM  rN  rO  Úcodess   &&   r5   Ú_indices_to_codesÚ1Xcodec2FiniteScalarQuantization._indices_to_codesw  sI   € ð ×#Ñ# BÓ'ˆØ §J¡JÕ.°$·+±+Õ=ˆØ—[‘[ AÕ%ˆ
ØÕ+¨zÕ9ˆØˆr7   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   "€r5   r@   r:  �  s/   ø€ ÷ Dñ D¡5§<¡<ð D±eð DÁuÇ|Á|ñ Dr7   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.
ç      à?r°   )r@  r{   ÚwhereÚatanhÚtanh)r2   r©   r   Ú
half_rangeÚoffsetÚshifts   &&&   r5   ÚboundÚ%Xcodec2FiniteScalarQuantization.bound�  sk   € ð" —k‘k A•o¨!¨c­'Õ2°QÕ6ˆ
Ü—’˜TŸ[™[¨1�_°Ñ1°3¸Ó<ˆØÕ$×+Ñ+Ó-ˆØÕ%×+Ñ+Ó-°
Õ:¸VÕCÐCr7   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          /# r/  ©r{   r~   r\   )r>   r?   s   "€r5   r@   r:  —  s1   ø€ ÷ 1ñ 1¡U§\¡\ð 1±e¹E¿L¹LÉ%Ï,É,Ð<VÕ6Wñ 1r7   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)ÚmpsÚcpuF)Údevice_typeÚenabled©rG  Nr²   )rã   r-   rE  ÚtypeÚstrr   r]   r@  r`  ÚroundÚdetachrA  Úsumrâ   r{   rI  )	r2   r©   Úoriginal_dtyperg  rO  ÚroundedrT  Úcode_scaledrM  s	   &&       r5   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"	)rA  rB  r@  rT   rC   )gü©ñÒMbP?)r_   r`   ra   rb   rc   r–   r>  rU  r`  rË   rp   rq   rr   rs   s   @@r5   r8  r8  Z  s>   ù‡ € ñ÷>ó >ô
'÷ð ÷Dò D÷,1÷ 1ð 1r7   r8  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[ /# r�   r’   )r>   r?   s   "€r5   r@   ÚXcodec2ISTFTHead.__annotate__µ  s   ø€ ÷ :ñ :™}ñ :r7   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:   Fr<  N)r0   r–   r—   r˜   rU   rM   ÚlinearrH   r#  r{   Úhann_windowr?  Úwindow)r2   r‘   rz  r4   s   && €r5   r–   ÚXcodec2ISTFTHead.__init__µ  s†   ø€ Ü‰ÑÔÜ—i’i × 2Ñ 2°F·L±LÀ1Õ4DÓEˆŒØ—\‘\ˆŒ
Ø ×+Ñ+ˆŒØŸ
™
 T§_¡_Õ4¸Õ:ˆŒÜ×"Ò" 6§<¡<Ó0ˆÜ—i’i °5Ô9ˆŽr7   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r/  r0  )r>   r?   s   "€r5   r@   rv  ¾  s#   ø€ ÷ ""ñ ""¡U§\¡\ð ""±e·l±lñ ""r7   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:   ri  g      Y@)ÚmaxÚbackward)rG  ÚnormºNNN)Úoutput_sizer"  rÚ   g•dyáý¥=)Úminr²   )Nr�  N)rx  Úchunkr]   r{   ÚexpÚclampÚpolarÚfftÚirfftrM   r¶   rz  r³   rH   rÜ   Úfoldr#  Úsquarerä   ÚsqueezerL  )r2   r©   Ú	stft_predÚ	magnitudeÚphaseÚspectrogram_complexÚtime_framesÚ
num_framesr‚  ÚaudioÚwindow_envelopes   &&         r5   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Ó!Ð!r7   )rH   rx  rM   r#  rz  ©
r_   r`   ra   rb   rc   r–   rË   rp   rq   rr   rs   s   @@r5   rt  rt  ­  s#   ù‡ € ñ÷:ó :÷""÷ ""ð ""r7   rt  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[ /# r�   r’   )r>   r?   s   "€r5   r@   ÚXcodec2Quantizer.__annotate__ä  s   ø€ ÷ _ñ _™}ñ _r7   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 # rC   )r0   r–   r8  Ú	quantizerr—   r˜   rS   r  rT   Ú
project_inÚproject_outr›   s   &&€r5   r–   ÚXcodec2Quantizer.__init__ä  sa   ø€ Ü‰ÑÔÜ8¸Ó@ˆŒÜŸ)š) F×$;Ñ$;¼SÀ×A[ÑA[Ó=\Ó]ˆŒÜŸ9š9¤S¨×)CÑ)CÓ%DÀf×F]ÑF]Ó^ˆÖr7   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rR  r0  )r>   r?   s   "€r5   r@   rš  ê  s#   ø€ ÷ 'ñ '¡%§,¡,ð '±5·<±<ñ 'r7   c                ó€   € VP                  R4      pV P                  P                  V,          pV P                  V4      # ©rÕ   r²   )rŒ  rœ  rB  rž  )r2   rM  rT  s   && r5   Ú
from_codesÚXcodec2Quantizer.from_codesê  s5   € Ø—/‘/ "Ó%ˆØ—‘×'Ñ'¨Õ0ˆØ×Ñ Ó&Ð&r7   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          /# r/  rc  )r>   r?   s   "€r5   r@   rš  ï  s1   ø€ ÷ &ñ &¡U§\¡\ð &±e¹E¿L¹LÉ%Ï,É,Ð<VÕ6Wñ &r7   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�  rã   rœ  r`  rž  râ   rL  )r2   r©   ro  Úquantized_outrM  s   &&   r5   rË   ÚXcodec2Quantizer.forwardï  st   € ØŸ™¨Ó6ˆØ&×,Ñ,ˆØŸ™×,Ñ,¨]Ó;ˆØ!%§¡°Ó!>ÑˆØ×(Ñ(¨×)9Ñ)9¸.Ó)IÓJˆØ×#Ñ# BÓ'ˆØÐ%Ð%r7   )r�  rž  rœ  )
r_   r`   ra   rb   r–   r£  rË   rp   rq   rr   rs   s   @@r5   r˜  r˜  ã  s*   ù‡ € ÷_ó _÷'ð '÷
&÷ &ð &r7   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	# )ÚXcodec2Decoderiù  zVVocos-based decoder with ResNet, Transformer, and ISTFT head for audio reconstruction.c                ó    <€ V ^8„  d   QhRS[ /# r�   r’   )r>   r?   s   "€r5   r@   ÚXcodec2Decoder.__annotate__ü  s   ø€ ÷ -ñ -™}ñ -r7   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 )é   )r"  r#  )r‘   r  )r   N)r0   r–   r—   r˜   rU   r(   Úfcr(  ÚembedÚ
ModuleListr  Ú	prior_netrW   rŠ   Ú
rotary_embÚranger+   rÏ   ÚlayersÚpost_netÚ	LayerNormr€  rt  Úheadr¦   s   && €r5   r–   ÚXcodec2Decoder.__init__ü  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/  r0  )r>   r?   s   "€r5   r@   r¬  
  s#   ø€ ÷ 3ñ 3¡U§\¡\ð 3ÁÇÁñ 3r7   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      # )rÕ   rF  rª   )r¯  r¶   r°  r²  r{   rK  rW   rE  rL  r³  rµ  r¶  r¸  r€  )r2   r©   r3   ÚlayerÚposition_idsrª   s   &&,   r5   rË   ÚXcodec2Decoder.forward
  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Ð2r7   )	r°  r¯  r¸  rµ  r€  rW   r¶  r²  r³  r–  rs   s   @@r5   rª  rª  ù  s!   ù‡ € Ù`÷-ó -÷3÷ 3ð 3r7   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# )ÚXcodec2SemanticAdapteri%  c                ó    <€ V ^8„  d   QhRS[ /# r�   r’   )r>   r?   s   "€r5   r@   Ú#Xcodec2SemanticAdapter.__annotate__&  s   ø€ ÷ 
ñ 
™}ñ 
r7   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_channelsr"  r#  r•   T)r"  r#  r•   N)r0   r–   r—   r(  r(   rU   r)  ÚReLUÚact1r,  Úact2Úconv3Úconv4r›   s   &&€r5   r–   ÚXcodec2SemanticAdapter.__init__&  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ØØØô
ˆŽ
r7   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r/  r0  )r>   r?   s   "€r5   r@   rÂ  G  s#   ø€ ÷ 	ñ 	¡U§\¡\ð 	±e·l±lñ 	r7   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# rC   )r)  rÈ  r,  rÉ  rÊ  rË  r4  s   && r5   rË   ÚXcodec2SemanticAdapter.forwardG  si   € ØŸ
™
 =Ó1ˆØŸ	™	 -Ó0ˆØ ˆØŸ
™
 =Ó1ˆØŸ	™	 -Ó0ˆØŸ
™
 =Ó1ˆØ%Õ0ˆØŸ
™
 =Ó1ˆØÐr7   )rÈ  rÉ  r)  r,  rÊ  rË  rÍ   rs   s   @@r5   rÀ  rÀ  %  s   ù‡ € ÷
ó 
÷B	÷ 	ð 	r7   rÀ  c                   ó>   a € ] tR tRt o RtRtR	tR]R]/tR t	Rt
V tR# )
ÚXcodec2PreTrainedModeliS  r'   Úinput_valuesr©   Ú
attentionsc                óˆ  € \         P                  ! 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# )rF  rY  g333333ã?N)r
   Ú_init_weightsr-   rÑ   ÚinitÚzeros_ÚalphaÚbetart  r{   ry  rM   Úcopy_rz  r8  r>  r@  rE  rA  rB  rê   r"   rì   r"  rá   rÓ   ÚcutoffrO  )r2   Úmodulerz  r@  rA  rB  Úfilter_tensors   &&     r5   rÕ  Ú$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ñ 5r7   r,   N)r“  )r_   r`   ra   rb   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesrÏ   Ú_can_record_outputsrÕ  rp   rq   r€   s   @r5   rÑ  rÑ  S  s4   ø‡ € Ø!ÐØ$€OØ!ÐàÐ,ØÐ)ðÐ÷
5ð 5r7   rÑ  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# )ÚXcodec2Modeliq  c                ó    <€ V ^8„  d   QhRS[ /# r�   r’   )r>   r?   s   "€r5   r@   ÚXcodec2Model.__annotate__u  s   ø€ ÷ ñ ™}ñ r7   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 # rC   )r0   r–   rH   r   Úfrom_configr(   Úsemantic_encoderrÀ  Úsemantic_adapterr  Úacoustic_encoderr—   r˜   rU   Ú
fc_encoderr˜  rœ  rª  Úacoustic_decoderÚ	post_initr›   s   &&€r5   r–   ÚXcodec2Model.__init__u  s¹   ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ )× 5Ò 5°f×6RÑ6RÓ SˆÔÜ 6°vÓ >ˆÔÜ .¨vÓ 6ˆÔÜŸ)š)Ø×Ñ ×!=Ñ!=×!IÑ!IÕIØ×Ñ ×!=Ñ!=×!IÑ!IÕIó
ˆŒô *¨&Ó1ˆŒÜ .¨vÓ 6ˆÔà�‰Ör7   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:   rÒ  Úinput_featuresÚpadding_maskNÚinput_features_maskÚoutput_latentsr3   r;   )r{   r~   Úboolr   r   r\   r‚   )r>   r?   s   "€r5   r@   rç  ‡  sw   ø€ ÷ 2
ñ 2
á—l‘lð2
ñ Ÿ™ð2
ñ —l‘l TÕ)ð	2
ñ
 #Ÿ\™\¨DÕ0ð2
ñ ð2
ñ Ñ+Õ,ð2
ñ 
Ñ%Õ	%ñ2
r7   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«   Nri  T)rG  ÚkeepdimrF  )rx   ry   rz   r²   )r{   Úno_gradrê  Úlast_hidden_stater¶   rë  rì  Úcatrí  rœ  rn  rH   rK  r³   rE  rµ   râ   rã   r‚   )r2   rÒ  ró  rô  rõ  rö  r3   Úsemantic_outputÚsemantic_hidden_statesÚacoustic_hidden_statesr©   ry   rx   rz   Úaudio_lengthÚtoken_lengthÚidxs   &&&&&&,          r5   Ú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:   rx   Nry   r3   r;   )r{   r~   r   r   r\   r†   )r>   r?   s   "€r5   r@   rç  ½  sQ   ø€ ÷ >ñ >á—\‘\ DÕ(ð>ñ —‘ Õ$ð>ñ Ñ+Õ,ð	>ñ
 
Ñ%Õ	%ñ>r7   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.)rw   )Ú
ValueErrorrœ  r£  r¶   rî  r†   )r2   rx   ry   r3   Úrecon_audios   &&&, r5   ÚdecodeÚXcodec2Model.decode»  ss   € ð Š?˜{Ò2ÜÐRÓSÐSàÒ"Ø—n‘n×/Ñ/°×0EÑ0EÀaÈÓ0KÓL‰Gà×'Ñ'¨¨1Ó-ˆGà×+Ò+¨GÑ>°vÑ>ˆÜ#°Ô=Ð=r7   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ò  )r{   r~   r÷  r   r   r\   ru   )r>   r?   s   "€r5   r@   rç  Ö  sv   ø€ ÷ :
ñ :
á—l‘lð:
ñ Ÿ™ð:
ñ —l‘l TÕ)ð	:
ñ
 #Ÿ\™\¨DÕ0ð:
ñ ð:
ñ Ñ+Õ,ð:
ñ 
‘Õ	ñ:
r7   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)ró  rô  rõ  rö  Úreturn_dictry   r  .N)rw   rx   ry   rz   r²   r,   )r³   r  r	  ry   ru   rx   rz   )
r2   rÒ  ró  rô  rõ  rö  r3   ÚlengthÚencoder_outputsrw   s
   &&&&&&,   r5   rË   ÚXcodec2Model.forwardÔ  s¦   € ðV ×#Ñ# BÕ'ˆàŸ+™+ØØ)Ø%Ø 3ØØð &ó 
ˆð —{’{Ñ_¨?×+BÑ+BÐ_ÐPTÐ_ÐX^Ñ_Ð`aÕbÐcfÐhoÐioÐhoÐcoÕpˆäØ%Ø'×3Ñ3ß/=�O×+Ò+À4Ø,×=Ñ=ô	
ð 	
r7   )rî  rì  rí  rH   rœ  rë  rê  )NNF)NN)r_   r`   ra   rb   r&   Úconfig_classr–   r   r   r  r	  rË   rp   rq   rr   rs   s   @@r5   rå  rå  q  s}   ù‡ € à €L÷ó ð  Ø÷2
ñ 2
ó ó ð2
ðh Ø÷>ñ >ó ó ð>ð. Ø÷:
ñ :
ó ó ÷:
ð :
r7   rå  )r&   rå  rÑ  )TÚcollections.abcr   Údataclassesr   ÚnumpyrD   r{   Útorch.nnr—   Útorch.nn.functionalr3  rÜ   Úhuggingface_hub.dataclassesr   Ú r   rÖ  Úcache_utilsr   Úconfiguration_utilsr   Úmodeling_utilsr	   r
   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr   Úautor   r   r   Úclip.modeling_clipr   Údac.modeling_dacr   r   r   Úllama.configuration_llamar   Úllama.modeling_llamar   r   r   r   r   Ú"qwen2_5_omni.modeling_qwen2_5_omnir   r   r    r!   r"   Úvoxtral.modeling_voxtralr#   r&   ru   r‚   r†   rŠ   rŽ   rŸ   rÏ   rÑ   rÓ   rê   rð   rþ   r  r  ÚModuler  r8  rt  r˜  rª  rÀ  rÑ  rå  Ú__all__r,   r7   r5   Ú<module>r(     s5  ðõ %Ý !ã Û Ý ß Ð Ý .å &Ý  Ý 3ß FÝ &÷ó õ ,ß 8Ñ 8Ý (ß KÑ KÝ 3÷õ ÷õ õ >ñ Ð2Ô3ØôE#�Kó E#ó ó 4ðE#ðP Ø
ô1�Kó 1ó ó ð1ð( Ø
ô1˜;ó 1ó ó ð1ð" Ø
ô2˜;ó 2ó ó ð2ô	Ð1ô 	ôW�ô Wô.)�~ô .)ôb	Ð+ô 	ô	Ð+ô 	ôÐ1ô ôÐ-ô ôLÐ%Gô Lô(]˜/ô ]ôb˜/ô bô[�Zô [ô:˜Ÿ™ô :ô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Ð3ô 5ñ< Ð@ÔAô^
Ð)ó ^
ó Bð^
òB F‚r7   