§
    ‚Štj€„  ã                   óÀ  — d dl mZ d dlmZ d dlZd dlZd dlmZ d dl	mc m
Z d dlmZ ddlmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZmZmZmZ ddlm Z  ddl!m"Z"m#Z#m$Z$ ddl%m&Z& ddl'm(Z(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z:  ed¬¦  «        e G d„ de,¦  «        ¦   «         ¦   «         Z;ee G d„ de¦  «        ¦   «         ¦   «         Z<ee G d„ de¦  «        ¦   «         ¦   «         Z=ee G d„ de¦  «        ¦   «         ¦   «         Z> G d„ d e0¦  «        Z? G d!„ d"e&¦  «        Z@ G d#„ d$e.¦  «        ZA G d%„ d&e/¦  «        ZB G d'„ d(e6¦  «        ZC G d)„ d*e5¦  «        ZD G d+„ d,e7¦  «        ZE G d-„ d.e4¦  «        ZF G d/„ d0e*¦  «        ZG G d1„ d2e)¦  «        ZH G d3„ d4e(¦  «        ZI G d5„ d6ejJ        ¦  «        ZK G d7„ d8ejJ        ¦  «        ZL G d9„ d:ejJ        ¦  «        ZM G d;„ d<ejJ        ¦  «        ZN G d=„ d>ejJ        ¦  «        ZO G d?„ d@ejJ        ¦  «        ZP G dA„ dBe:¦  «        ZQ edC¬D¦  «         G dE„ dFeQ¦  «        ¦   «         ZRg dG¢ZSdS )Hé    )Ú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                   ó  ‡ — e Zd ZU dZdZdeiZdZee	d<   dZ
ee         eedf         z  e	d<   d	Zeez  d	z  e	d<   d
Zee	d<   dZee	d<   dZee	d<   dZee         eedf         z  e	d<   dZee	d<   dZee	d<   dZee	d<   dZee	d<   dZee	d<   dZee	d<   dZee	d<    e¦   «         Z e¦   «         Z e¦   «         Z e¦   «         Z  e¦   «         Z! e¦   «         Z" e¦   «         Z# e¦   «         Z$ˆ fd„Z%e&defd „¦   «         Z'e&defd!„¦   «         Z(ˆ xZ)S )"ÚXcodec2Configa©  
    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_configé0   Úencoder_hidden_size)r   r   é   r-   é   .Údownsampling_ratiosNi€>  Úsampling_rategš™™™™™¹?Úactivation_dropouti   Úquantization_dim)r-   r-   r-   r-   r-   r-   r-   r-   Úquantization_levelsi   Úhidden_sizei   Úintermediate_sizeé   Únum_attention_headsÚnum_key_value_headsé   Únum_hidden_layersé@   Úhead_dimÚmax_position_embeddingsc                 óH  •— t          | j        t          ¦  «        rK| j                             dd¦  «        | j        d<   t	          | j        d                  di | j        ¤Ž| _        n"| j        €t	          d         d¬¦  «        | _         t          ¦   «         j        di |¤Ž d S )NÚ
model_typezwav2vec2-bertr6   )r:   © )Ú
isinstancer*   ÚdictÚgetr   ÚsuperÚ__post_init__)ÚselfÚkwargsÚ	__class__s     €úi/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/xcodec2/modular_xcodec2.pyrE   zXcodec2Config.__post_init__n   sµ   ø€ Ý�dÔ0µ$Ñ7Ô7ð 	_Ø7;Ô7Q×7UÒ7UÐVbÐdsÑ7tÔ7tˆDÔ& |Ñ4Ý)7¸Ô8RÐS_Ô8`Ô)að *ð *ØÔ,ð*ð *ˆDÔ&Ð&ð Ô'Ð/Ý)7¸Ô)HÐ[]Ð)^Ñ)^Ô)^ˆDÔ&à�‰ŒÔÐ'Ð' Ð'Ð'Ð'Ð'Ð'ó    Úreturnc                 óN   — t          t          j        | j        ¦  «        ¦  «        S ©N)ÚintÚnpÚprodr/   ©rF   s    rI   Ú
hop_lengthzXcodec2Config.hop_lengthy   s   € å•2”7˜4Ô3Ñ4Ô4Ñ5Ô5Ð5rJ   c                 ó   — | j         dz  S )Nr-   )rR   rQ   s    rI   Ún_fftzXcodec2Config.n_fft}   s   € àŒ Ñ"Ð"rJ   )*Ú__name__Ú
__module__Ú__qualname__Ú__doc__r?   r   Úsub_configsr,   rN   Ú__annotations__r/   ÚlistÚtupler*   rB   r	   r0   r1   Úfloatr2   r3   r4   r5   r7   r8   r:   r<   r=   ÚAttributeErrorÚ
vocab_sizeÚbos_token_idÚeos_token_idÚpretraining_tpÚmlp_biasÚ	use_cacheÚbase_model_tp_planÚbase_model_pp_planrE   ÚpropertyrR   rT   Ú__classcell__©rH   s   @rI   r(   r(   8   s%  ø€ € € € € € ðð ð2 €JØ*¨JÐ7€Kà!Ð˜Ð!Ð!Ñ!Ø7FÐ˜˜cœ U¨3°¨8¤_Ñ4ÐFÐFÑFØ<@Ð˜4Ð"2Ñ2°TÑ9Ð@Ð@Ñ@Ø€M�3ÐÐÑØ #Ð˜Ð#Ð#Ñ#Ø Ð�cÐ Ð Ñ Ø7OÐ˜˜cœ U¨3°¨8¤_Ñ4ÐOÐOÑOØ€K�ÐÐÑØ!Ð�sÐ!Ð!Ñ!Ø!Ð˜Ð!Ð!Ñ!Ø!Ð˜Ð!Ð!Ñ!ØÐ�sÐÐÑØ€HˆcÐÐÑØ#'Ð˜SÐ'Ð'Ñ'Ø�Ñ!Ô!€JØ!�>Ñ#Ô#€LØ!�>Ñ#Ô#€LØ#�^Ñ%Ô%€NØˆ~ÑÔ€HØ�Ñ Ô €IØ'˜Ñ)Ô)ÐØ'˜Ñ)Ô)Ðð	(ð 	(ð 	(ð 	(ð 	(ð ð6˜Cð 6ð 6ð 6ñ „Xð6ð ð#�sð #ð #ð #ñ „Xð#ð #ð #ð #ð #rJ   r(   c                   óŒ   — e Zd ZU dZdZej        dz  ed<   dZej	        dz  ed<   dZ
ej        dz  ed<   dZej        dz  ed<   dS )ÚXcodec2OutputaL  
    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`.
    NÚaudio_valuesÚaudio_codesÚlatentsÚaudio_codes_mask)rU   rV   rW   rX   rl   ÚtorchÚFloatTensorrZ   rm   Ú
LongTensorrn   ÚTensorro   r@   rJ   rI   rk   rk   ‚   s}   € € € € € € ðð ð .2€L�%Ô# dÑ*Ð1Ð1Ñ1Ø+/€K�Ô! DÑ(Ð/Ð/Ñ/Ø#'€GˆUŒ\˜DÑ Ð'Ð'Ñ'Ø,0Ð�e”l TÑ)Ð0Ð0Ñ0Ð0Ð0rJ   rk   c                   ón   — e Zd ZU dZdZej        dz  ed<   dZej	        dz  ed<   dZ
ej	        dz  ed<   dS )ÚXcodec2EncoderOutputat  
    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`.
    Nrm   rn   ro   )rU   rV   rW   rX   rm   rp   rr   rZ   rn   rs   ro   r@   rJ   rI   ru   ru   ˜   se   € € € € € € ð	ð 	ð ,0€K�Ô! DÑ(Ð/Ð/Ñ/Ø#'€GˆUŒ\˜DÑ Ð'Ð'Ñ'Ø,0Ð�e”l TÑ)Ð0Ð0Ñ0Ð0Ð0rJ   ru   c                   ó2   — e Zd ZU dZdZej        dz  ed<   dS )Ú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.
    Nrl   )rU   rV   rW   rX   rl   rp   rq   rZ   r@   rJ   rI   rw   rw   «   s6   € € € € € € ðð ð .2€L�%Ô# dÑ*Ð1Ð1Ñ1Ð1Ð1rJ   rw   c                   ó   — e Zd ZdS )ÚXcodec2RotaryEmbeddingN©rU   rV   rW   r@   rJ   rI   ry   ry   ¸   ó   € € € € € Ø€DrJ   ry   c                   ó$   ‡ — e Zd Zdefˆ fd„Zˆ xZS )Ú
Xcodec2MLPÚconfigc                 óâ   •— t          ¦   «                              |¦  «         t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        d S )NF)Úbias)rD   Ú__init__ÚnnÚLinearr4   r5   Úfc1Úfc2©rF   r~   rH   s     €rI   r�   zXcodec2MLP.__init__½   s]   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”9˜VÔ/°Ô1IÐPUÐVÑVÔVˆŒÝ”9˜VÔ5°vÔ7IÐPUÐVÑVÔVˆŒˆˆrJ   ©rU   rV   rW   r(   r�   rh   ri   s   @rI   r}   r}   ¼   sO   ø€ € € € € ðW˜}ð Wð Wð Wð Wð Wð Wð Wð Wð Wð WrJ   r}   c                   óÊ   ‡ — e Zd Zdedefˆ fd„Z	 	 	 ddej        deej        ej        f         dz  dej        dz  de	dz  d	e
e         d
eej        ej        f         fd„Zˆ xZS )ÚXcodec2Attentionr~   Ú	layer_idxc                 óZ   •— t          ¦   «                              ||¦  «         d| _        d S )NF)rD   r�   Ú	is_causal)rF   r~   rŠ   rH   s      €rI   r�   zXcodec2Attention.__init__Ä   s(   ø€ Ý‰Œ×Ò˜ Ñ+Ô+Ð+ØˆŒˆˆrJ   NÚhidden_statesÚposition_embeddingsÚattention_maskÚpast_key_valuesrG   rK   c                 ó&  — |j         d d…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }	|                      |¦  «                             |¦  «                             dd¦  «        }
|\  }}t          ||	||d¬¦  «        \  }}	|�|                     |	|
| j	        ¦  «        \  }	}
t          j        | j        j        t          ¦  «        } || ||	|
|f| j        sdn| j        | j        dœ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }|                      |¦  «        }||fS )Néÿÿÿÿé   r   )Úunsqueeze_dimç        )ÚdropoutÚscaling)Úshaper<   Úq_projÚviewÚ	transposeÚk_projÚv_projr   ÚupdaterŠ   r
   Úget_interfacer~   Ú_attn_implementationr   ÚtrainingÚattention_dropoutr—   ÚreshapeÚ
contiguousÚo_proj)rF   r�   rŽ   r�   r�   rG   Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚcosÚsinÚattention_interfaceÚattn_outputÚattn_weightss                   rI   ÚforwardzXcodec2Attention.forwardÈ   sÈ  € ð $Ô)¨#¨2¨#Ô.ˆØ8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆà—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆØ—[’[ Ñ/Ô/×4Ò4°\ÑBÔB×LÒLÈQÐPQÑRÔRˆ
Ø—{’{ =Ñ1Ô1×6Ò6°|ÑDÔD×NÒNÈqÐRSÑTÔTˆà&‰ˆˆSõ $8¸ÀjÐRUÐWZÐjkÐ#lÑ#lÔ#lÑ ˆ�jàÐ&Ø'6×'=Ò'=¸jÈ,ÐX\ÔXfÑ'gÔ'gÑ$ˆJ˜å(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð	%
ð  $œ}ÐH�C�C°$Ô2HØ”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ—k’k +Ñ.Ô.ˆØ˜LÐ(Ð(rJ   )NNN)rU   rV   rW   r(   rN   r�   rp   rs   r\   r   r   r   r°   rh   ri   s   @rI   r‰   r‰   Ã   sß   ø€ € € € € ð˜}ð ¸ð ð ð ð ð ð ð IMØ.2Ø(,ð))ð ))à”|ð))ð # 5¤<°´Ð#=Ô>ÀÑEð))ð œ tÑ+ð	))ð
  ™ð))ð Ð+Ô,ð))ð 
ˆuŒ|˜Uœ\Ð)Ô	*ð))ð ))ð ))ð ))ð ))ð ))ð ))ð ))rJ   r‰   c                   ó   — e Zd ZdS )ÚXcodec2DecoderLayerNrz   r@   rJ   rI   r²   r²   ô   r{   rJ   r²   c                   ó   — e Zd ZdS )ÚXcodec2SnakeBetaNrz   r@   rJ   rI   r´   r´   ø   r{   rJ   r´   c                   ó   — e Zd Zd„ ZdS )ÚXcodec2DownSample1dc                 ó  — |j         d         }t          j        || j        | j        fd¬¦  «        }t          j        || j                             |j        ¦  «         	                    |dd¦  «        | j
        |¬¦  «        }|S )Nr“   Ú	replicate©Úmoder’   ©ÚstrideÚgroups)r˜   ÚFÚpadÚpad_leftÚ	pad_rightÚconv1dÚfilterÚtoÚdtypeÚexpandr¼   )rF   r�   ÚchannelsÚouts       rI   r°   zXcodec2DownSample1d.forwardý   s}   € Ø Ô& qÔ)ˆÝœ˜m¨d¬m¸T¼^Ð-LÐS^Ð_Ñ_Ô_ˆÝŒhØàŒK�NŠN˜=Ô.Ñ/Ô/×6Ò6°xÀÀRÑHÔHØ”;Øð
ñ 
ô 
ˆð ˆ
rJ   N©rU   rV   rW   r°   r@   rJ   rI   r¶   r¶   ü   s#   € € € € € ð
ð 
ð 
ð 
ð 
rJ   r¶   c                   ó   — e Zd Zd„ ZdS )ÚXcodec2UpSample1dc           	      óB  — |j         d         }t          j        || j        | j        fd¬¦  «        }| j        t          j        || j                             |j        ¦  «                             |dd¦  «        | j	        |¬¦  «        z  }|d| j
        | j         …f         }|S )Nr“   r¸   r¹   r’   r»   .)r˜   r¾   r¿   ÚratioÚconv_transpose1drÃ   rÄ   rÅ   rÆ   r¼   rÀ   rÁ   )rF   r�   rÇ   s      rI   r°   zXcodec2UpSample1d.forward  s¡   € Ø Ô& qÔ)ˆÝœ˜m¨d¬h¸¼Ð-AÈÐTÑTÔTˆØœ
¥QÔ%7ØàŒK�NŠN˜=Ô.Ñ/Ô/×6Ò6°xÀÀRÑHÔHØ”;Øð&
ñ &
ô &
ñ 
ˆð & c¨4¬=¸D¼N¸?Ð+JÐ&JÔKˆØÐrJ   NrÉ   r@   rJ   rI   rË   rË   
  s#   € € € € € ðð ð ð ð rJ   rË   c            	       ó:   ‡ — e Zd Z	 	 	 	 ddedededefˆ fd„Zˆ xZS )	ÚXcodec2AntiAliasedActivation1dr   r9   Úup_ratioÚ
down_ratioÚup_kernel_sizeÚdown_kernel_sizec                 ó¨   •— t          ¦   «                              |||||¬¦  «         t          ||¦  «        | _        t	          ||¦  «        | _        d S )N)Ú
activationrÑ   rÒ   rÓ   rÔ   )rD   r�   rË   Úupsampler¶   Ú
downsample)rF   rÖ   rÑ   rÒ   rÓ   rÔ   rH   s         €rI   r�   z'Xcodec2AntiAliasedActivation1d.__init__  s^   ø€ õ 	‰Œ×ÒØ!ØØ!Ø)Ø-ð 	ñ 	
ô 	
ð 	
õ *¨(°NÑCÔCˆŒÝ-¨jÐ:JÑKÔKˆŒˆˆrJ   )r   r   r9   r9   )rU   rV   rW   rN   r�   rh   ri   s   @rI   rÐ   rÐ     s‡   ø€ € € € € ð ØØ Ø "ðLð Lð ðLð ð	Lð
 ðLð ðLð Lð Lð Lð Lð Lð Lð Lð Lð LrJ   rÐ   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚXcodec2ResidualUnitc                 óÔ   •— t          ¦   «                              ||¦  «         t          t          |¦  «        ¬¦  «        | _        t          t          |¦  «        ¬¦  «        | _        d S )N©rÖ   )rD   r�   rÐ   r´   Úsnake1Úsnake2)rF   Ú	dimensionÚdilationrH   s      €rI   r�   zXcodec2ResidualUnit.__init__.  sY   ø€ Ý‰Œ×Ò˜ HÑ-Ô-Ð-Ý4Õ@PÐQZÑ@[Ô@[Ð\Ñ\Ô\ˆŒÝ4Õ@PÐQZÑ@[Ô@[Ð\Ñ\Ô\ˆŒˆˆrJ   )rU   rV   rW   r�   rh   ri   s   @rI   rÚ   rÚ   -  sA   ø€ € € € € ð]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]rJ   rÚ   c                   ó.   ‡ — e Zd Zddededefˆ fd„Zˆ xZS )ÚXcodec2EncoderBlockr“   r~   r¼   Ústride_indexc                 ó²   •— t          ¦   «                              |||¦  «         |j        d|z  z  }t          t	          |dz  ¦  «        ¬¦  «        | _        d S ©Nr   rÜ   )rD   r�   r,   rÐ   r´   rÝ   )rF   r~   r¼   rã   rß   rH   s        €rI   r�   zXcodec2EncoderBlock.__init__5  sV   ø€ Ý‰Œ×Ò˜ ¨Ñ6Ô6Ð6ØÔ.°°L±Ñ@ˆ	Ý4Õ@PÐQZÐ^_ÑQ_Ñ@`Ô@`ÐaÑaÔaˆŒˆˆrJ   )r“   r“   )rU   rV   rW   r(   rN   r�   rh   ri   s   @rI   râ   râ   4  se   ø€ € € € € ðbð b˜}ð b°cð bÈSð bð bð bð bð bð bð bð bð bð brJ   râ   c                   ó$   ‡ — e Zd Zdefˆ fd„Zˆ xZS )ÚXcodec2Encoderr~   c                 óÌ   •— t          ¦   «                              |¦  «         |j        dt          |j        ¦  «        z  z  }t          t          |¦  «        ¬¦  «        | _        d S rå   )rD   r�   r,   Úlenr/   rÐ   r´   rÝ   )rF   r~   Úd_modelrH   s      €rI   r�   zXcodec2Encoder.__init__<  sX   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØÔ,¨qµC¸Ô8RÑ4SÔ4SÑ/SÑSˆÝ4Õ@PÐQXÑ@YÔ@YÐZÑZÔZˆŒˆˆrJ   r‡   ri   s   @rI   rç   rç   ;  sO   ø€ € € € € ð[˜}ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [rJ   rç   c                   óH   ‡ — e Zd Zdefˆ fd„Zdej        dej        fd„Zˆ xZS )ÚXcodec2ResNetBlockr~   c                 óè  •— t          ¦   «                              ¦   «          t          j        d|j        dd¬¦  «        | _        t          j        ¦   «         | _        t          j        |j        |j        ddd¬¦  «        | _	        t          j        d|j        dd¬¦  «        | _
        t          j        ¦   «         | _        |j        | _        t          j        |j        |j        ddd¬¦  «        | _        d S )Né    ç�íµ ÷Æ°>T)Ú
num_groupsÚnum_channelsÚepsÚaffiner   r“   )Úkernel_sizer¼   Úpadding)rD   r�   r‚   Ú	GroupNormr4   Únorm1ÚSiLUÚactivation1ÚConv1dÚconv1Únorm2Úactivation2r1   Úconv2r†   s     €rI   r�   zXcodec2ResNetBlock.__init__C  sÌ   ø€ Ý‰Œ×ÒÑÔÐÝ”\¨R¸fÔ>PÐVZÐcgÐhÑhÔhˆŒ
Ýœ7™9œ9ˆÔÝ”Y˜vÔ1°6Ô3EÐSTÐ]^ÐhiÐjÑjÔjˆŒ
Ý”\¨R¸fÔ>PÐVZÐcgÐhÑhÔhˆŒ
Ýœ7™9œ9ˆÔØ"(Ô";ˆÔÝ”Y˜vÔ1°6Ô3EÐSTÐ]^ÐhiÐjÑjÔjˆŒ
ˆ
ˆ
rJ   r�   rK   c                 ó¸  — |                      dd¦  «        }|}|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }t          j                             || j	        | j
        ¬¦  «        }|                      |¦  «        }||z                         dd¦  «        S )Nr“   r   )Úpr¡   )r›   r÷   rù   rû   rü   rý   r‚   Ú
functionalr–   r1   r¡   rþ   ©rF   r�   Úresiduals      rI   r°   zXcodec2ResNetBlock.forwardM  sÄ   € Ø%×/Ò/°°1Ñ5Ô5ˆØ ˆØŸ
š
 =Ñ1Ô1ˆØ×(Ò(¨Ñ7Ô7ˆØŸ
š
 =Ñ1Ô1ˆØŸ
š
 =Ñ1Ô1ˆØ×(Ò(¨Ñ7Ô7ˆÝœ×-Ò-¨m¸tÔ?VÐaeÔanÐ-ÑoÔoˆØŸ
š
 =Ñ1Ô1ˆØ Ñ(×3Ò3°A°qÑ9Ô9Ð9rJ   ©	rU   rV   rW   r(   r�   rp   rs   r°   rh   ri   s   @rI   rì   rì   B  sq   ø€ € € € € ðk˜}ð kð kð kð kð kð kð
: U¤\ð 
:°e´lð 
:ð 
:ð 
:ð 
:ð 
:ð 
:ð 
:ð 
:rJ   rì   c                   ó¼   ‡ — e Zd ZdZdefˆ fd„Zdd„Zdej        dej        fd„Z	dd
ej        de
dej        fd„Zd
ej        deej        ej        f         fd„Zˆ xZS )ÚXcodec2FiniteScalarQuantizationa!  
    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.
    r~   c                 ó:  •— t          ¦   «                              ¦   «          t          |j        ¦  «        | _        |                      ¦   «         \  }}}|                      d|d¬¦  «         |                      d|d¬¦  «         |                      d|d¬¦  «         d S )NÚlevelsF©Ú
persistentÚbasisÚcodebook)rD   r�   r[   r3   Ú_compute_buffersÚregister_buffer)rF   r~   r  r  r  rH   s        €rI   r�   z(Xcodec2FiniteScalarQuantization.__init__c  s›   ø€ Ý‰Œ×ÒÑÔÐÝ#'¨Ô(BÑ#CÔ#CˆÔ Ø"&×"7Ò"7Ñ"9Ô"9Ñˆ��xØ×Ò˜X v¸%ÐÑ@Ô@Ð@Ø×Ò˜W e¸ÐÑ>Ô>Ð>Ø×Ò˜Z¨¸eÐÑDÔDÐDÐDÐDrJ   Nc                 ó¨  — t          j        | j        t           j        |¬¦  «        }t          j        t          j        dg| j        dd…         z   |¬¦  «        dt           j        ¬¦  «        }t          j        t          t          j        | j        ¦  «        ¦  «        |¬¦  «         	                    d¦  «        }||z  |z  }|dz  }||z
  |z  }|||fS )	zFCompute the levels, basis, and codebook buffers for the FSQ quantizer.)rÅ   Údevicer“   Nr’   ©r  r   )ÚdimrÅ   r   )
rp   Útensorr3   Úint32ÚcumprodÚarangerN   rO   rP   Ú	unsqueeze)rF   r  r  r  ÚindicesÚlevel_indicesÚ
half_widthr  s           rI   r  z0Xcodec2FiniteScalarQuantization._compute_buffersk  sÐ   € å”˜dÔ6½e¼kÐRXÐYÑYÔYˆÝ”ÝŒL˜!˜˜tÔ7¸¸¸Ô<Ñ<ÀVÐLÑLÔLÐRSÕ[`Ô[fð
ñ 
ô 
ˆõ ”,�s¥2¤7¨4Ô+CÑ#DÔ#DÑEÔEÈfÐUÑUÔU×_Ò_Ð`bÑcÔcˆØ  EÑ)¨VÑ3ˆØ˜q‘[ˆ
Ø! JÑ.°*Ñ<ˆØ�u˜hÐ&Ð&rJ   r  rK   c                 óx   — |                      d¦  «        }|| j        z  | j        z  }| j        dz  }||z
  |z  }|S )z`
        Convert integer codebook indices to normalized per-dimension codes in [-1, 1].
        r’   r   )r  r  r  )rF   r  r  r  Úcodess        rI   Ú_indices_to_codesz1Xcodec2FiniteScalarQuantization._indices_to_codesw  sJ   € ð ×#Ò# BÑ'Ô'ˆØ  D¤JÑ.°$´+Ñ=ˆØ”[ AÑ%ˆ
Ø Ñ+¨zÑ9ˆØˆrJ   çü©ñÒMbP?r�   rò   c                 óÔ   — | j         dz
  d|z   z  dz  }t          j        | j         dz  dk    dd¦  «        }||z                       ¦   «         }||z                        ¦   «         |z  |z
  S )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   ç      à?r•   )r  rp   ÚwhereÚatanhÚtanh)rF   r�   rò   Ú
half_rangeÚoffsetÚshifts         rI   Úboundz%Xcodec2FiniteScalarQuantization.bound�  sr   € ð" ”k A‘o¨!¨c©'Ñ2°QÑ6ˆ
Ý”˜Tœ[¨1™_°Ò1°3¸Ñ<Ô<ˆØ˜*Ñ$×+Ò+Ñ-Ô-ˆØ Ñ%×+Ò+Ñ-Ô-°
Ñ:¸VÑCÐCrJ   c                 ó\  — |j         }t          |j        j        t          ¦  «        r|j        j        dk    r|j        j        nd}t          |d¬¦  «        5  |                     ¦   «         }| j        dz  }|                      |¦  «        }| 	                    ¦   «         }|||z
   
                    ¦   «         z   }||z  }||z  |z   }|| j        z                       d¬¦  «                             t          j        ¦  «        }d d d ¦  «         n# 1 swxY w Y   |                     |¦  «        |fS )NÚmpsÚcpuF)Údevice_typeÚenabledr   r’   ©r  )rÅ   rA   r  ÚtypeÚstrr   r]   r  r'  ÚroundÚdetachr  ÚsumrÄ   rp   r  )	rF   r�   Úoriginal_dtyper+  r  Úroundedr  Úcode_scaledr  s	            rI   r°   z'Xcodec2FiniteScalarQuantization.forward—  s€  € à&Ô,ˆõ ˜-Ô.Ô3µSÑ9Ô9ðØ>KÔ>RÔ>WÐ[`Ò>`Ð>`ð Ô Ô%Ð%àð 	õ
 ¨¸UÐCÑCÔCð 
	Mð 
	MØ)×/Ò/Ñ1Ô1ˆMØœ¨Ñ)ˆJà ŸJšJ }Ñ5Ô5ˆMØ#×)Ò)Ñ+Ô+ˆGØ! W¨}Ñ%<×$DÒ$DÑ$FÔ$FÑFˆEØ˜JÑ&ˆEà  :Ñ-°Ñ;ˆKØ" T¤ZÑ/×4Ò4¸Ð4Ñ<Ô<×?Ò?ÅÄÑLÔLˆGð
	Mð 
	Mð 
	Mñ 
	Mô 
	Mð 
	Mð 
	Mð 
	Mð 
	Mð 
	Mð 
	Møøøð 
	Mð 
	Mð 
	Mð 
	Mð �xŠx˜Ñ'Ô'¨Ð0Ð0s   ÁB*DÄDÄDrM   )r  )rU   rV   rW   rX   r(   r�   r  rp   rs   r  r]   r'  r\   r°   rh   ri   s   @rI   r  r  Z  sû   ø€ € € € € ðð ðE˜}ð Eð Eð Eð Eð Eð Eð
'ð 
'ð 
'ð 
'ð¨¬ð ¸%¼,ð ð ð ð ðDð D 5¤<ð D°eð DÀuÄ|ð Dð Dð Dð Dð,1 U¤\ð 1°e¸E¼LÈ%Ì,Ð<VÔ6Wð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1rJ   r  c                   óL   ‡ — e Zd ZdZdefˆ fd„Zdej        dej        fd„Zˆ xZ	S )ÚXcodec2ISTFTHeadzù
    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
    r~   c                 óV  •— t          ¦   «                              ¦   «          t          j        |j        |j        dz   ¦  «        | _        |j        | _        |j        | _        | j        | j        z
  dz  | _        t          j
        |j        ¦  «        }|                      d|d¬¦  «         d S )Nr   ÚwindowFr	  )rD   r�   r‚   rƒ   r4   rT   ÚlinearrR   rõ   rp   Úhann_windowr  )rF   r~   r9  rH   s      €rI   r�   zXcodec2ISTFTHead.__init__µ  s‘   ø€ Ý‰Œ×ÒÑÔÐÝ”i Ô 2°F´LÀ1Ñ4DÑEÔEˆŒØ”\ˆŒ
Ø Ô+ˆŒØœ
 T¤_Ñ4¸Ñ:ˆŒÝÔ" 6¤<Ñ0Ô0ˆØ×Ò˜X v¸%ÐÑ@Ô@Ð@Ð@Ð@rJ   r�   rK   c                 ó  — |                       |¦  «                             dd¦  «        }|                     dd¬¦  «        \  }}|                     ¦   «         }|                     ¦   «         }t	          j        |¦  «                             d¬¦  «        }|t	          j        d|z  ¦  «        z  }t          j                             || j	        dd¬¦  «        }|| j
        d d d …d f         z  }|j        d	         }|dz
  | j        z  | j	        z   }t          j        |d|fd| j	        fd| j        f¬
¦  «        d d …dd| j        | j         …f         }	t          j        | j
                             ¦   «                              d|d	¦  «                             dd¦  «        d|fd| j	        fd| j        f¬
¦  «                             ¦   «         | j        | j         …         }
|
                     d¬¦  «        }
|	|
z  }	|	                     d¦  «        S )Nr“   r   r-  g      Y@)Úmaxy              ð?Úbackward)r  Únormr’   )Úoutput_sizerô   r¼   r   g•dyáý¥=)Úmin)r:  r›   Úchunkr]   rp   ÚexpÚclampÚfftÚirfftrT   r9  r˜   rR   r¾   Úfoldrõ   ÚsquarerÆ   Úsqueezer  )rF   r�   Ú	stft_predÚ	magnitudeÚphaseÚspectrogram_complexÚtime_framesÚ
num_framesr@  ÚaudioÚwindow_envelopes              rI   r°   zXcodec2ISTFTHead.forward¾  sÿ  € Ø—K’K Ñ.Ô.×8Ò8¸¸AÑ>Ô>ˆ	Ø$Ÿ?š?¨1°!˜?Ñ4Ô4Ñˆ	�5à—O’OÑ%Ô%ˆ	Ø—’‘”ˆå”I˜iÑ(Ô(×.Ò.°3Ð.Ñ7Ô7ˆ	Ø'­%¬)°B¸±JÑ*?Ô*?Ñ?Ðõ ”i—o’oÐ&9¸4¼:È1ÐS]�oÑ^Ô^ˆØ! D¤K°°a°a°a¸°Ô$>Ñ>ˆØ(Ô.¨rÔ2ˆ
Ø! A‘~¨¬Ñ8¸4¼:ÑEˆÝ”ØØ˜KÐ(Ø˜DœJ˜Ø�t”Ð'ð	
ñ 
ô 
ð
 ˆ!ˆ!ˆQ��4”< 4¤< -Ð/Ð
/ô1ˆõ œ&ØŒK×ÒÑ Ô ×'Ò'¨¨:°rÑ:Ô:×DÒDÀQÈÑJÔJØ˜KÐ(Ø˜DœJ˜Ø�t”Ð'ð	
ñ 
ô 
÷
 Š'‰)Œ)�D”L D¤L =Ð0ô2ˆð *×/Ò/°EÐ/Ñ:Ô:ˆØ˜Ñ'ˆØ�Š˜qÑ!Ô!Ð!rJ   ©
rU   rV   rW   rX   r(   r�   rp   rs   r°   rh   ri   s   @rI   r7  r7  ­  s{   ø€ € € € € ðð ðA˜}ð Að Að Að Að Að Að!" U¤\ð !"°e´lð !"ð !"ð !"ð !"ð !"ð !"ð !"ð !"rJ   r7  c                   ó†   ‡ — e Zd Zdefˆ fd„Zdej        dej        fd„Zdej        deej        ej        f         fd„Z	ˆ xZ
S )ÚXcodec2Quantizerr~   c                 ó4  •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          j        |j        t          |j        ¦  «        ¦  «        | _	        t	          j        t          |j        ¦  «        |j        ¦  «        | _
        d S rM   )rD   r�   r  Ú	quantizerr‚   rƒ   r2   ré   r3   Ú
project_inÚproject_outr†   s     €rI   r�   zXcodec2Quantizer.__init__ã  sq   ø€ Ý‰Œ×ÒÑÔÐÝ8¸Ñ@Ô@ˆŒÝœ) FÔ$;½SÀÔA[Ñ=\Ô=\Ñ]Ô]ˆŒÝœ9¥S¨Ô)CÑ%DÔ%DÀfÔF]Ñ^Ô^ˆÔÐÐrJ   r  rK   c                 óz   — |                      d¦  «        }| j        j        |         }|                      |¦  «        S ©Nr’   )rI  rV  r  rX  )rF   r  r  s      rI   Ú
from_codeszXcodec2Quantizer.from_codesé  s6   € Ø—/’/ "Ñ%Ô%ˆØ”Ô'¨Ô0ˆØ×Ò Ñ&Ô&Ð&rJ   r�   c                 ó   — |                       |¦  «        }|j        }| j                             |¦  «        }|                      |¦  «        \  }}|                      |                     |¦  «        ¦  «        }|                     d¦  «        }||fS rZ  )rW  rÅ   rV  r'  rX  rÄ   r  )rF   r�   r3  Úquantized_outr  s        rI   r°   zXcodec2Quantizer.forwardî  s…   € ØŸš¨Ñ6Ô6ˆØ&Ô,ˆØœ×,Ò,¨]Ñ;Ô;ˆØ!%§¢°Ñ!>Ô!>Ñˆ�wØ×(Ò(¨×)9Ò)9¸.Ñ)IÔ)IÑJÔJˆØ×#Ò# BÑ'Ô'ˆØ˜gÐ%Ð%rJ   )rU   rV   rW   r(   r�   rp   rs   r[  r\   r°   rh   ri   s   @rI   rT  rT  â  s£   ø€ € € € € ð_˜}ð _ð _ð _ð _ð _ð _ð' %¤,ð '°5´<ð 'ð 'ð 'ð 'ð
& U¤\ð &°e¸E¼LÈ%Ì,Ð<VÔ6Wð &ð &ð &ð &ð &ð &ð &ð &rJ   rT  c                   óL   ‡ — e Zd ZdZdefˆ fd„Zdej        dej        fd„Zˆ xZ	S )ÚXcodec2DecoderzVVocos-based decoder with ResNet, Transformer, and ISTFT head for audio reconstruction.r~   c                 óæ  •‡— t          ¦   «                              ¦   «          t          j        ‰j        ‰j        j        z   ‰j        ¦  «        | _        t          j        ‰j        ‰j        dd¬¦  «        | _        t          j	        t          ‰¦  «        t          ‰¦  «        g¦  «        | _        ‰j        | _        t          ‰¬¦  «        | _        t          j	        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        t          j	        t          ‰¦  «        t          ‰¦  «        g¦  «        | _        t          j        ‰j        d¬¦  «        | _        t+          ‰¦  «        | _        d S )Né   r   )rô   rõ   )r~   c                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r@   )r²   )Ú.0rŠ   r~   s     €rI   ú
<listcomp>z+Xcodec2Decoder.__init__.<locals>.<listcomp>  s$   ø€ ÐeÐeÐe¸	Õ  ¨Ñ3Ô3ÐeÐeÐerJ   rï   )rò   )rD   r�   r‚   rƒ   r4   r*   Úfcrú   ÚembedÚ
ModuleListrì   Ú	prior_netr7   ry   Ú
rotary_embÚranger:   ÚlayersÚpost_netÚ	LayerNormr?  r7  Úheadr†   s    `€rI   r�   zXcodec2Decoder.__init__û  s3  øø€ Ý‰Œ×ÒÑÔÐÝ”)˜FÔ.°Ô1MÔ1YÑYÐ[aÔ[mÑnÔnˆŒÝ”Y˜vÔ1°6Ô3EÐSTÐ^_Ð`Ñ`Ô`ˆŒ
ÝœÕ(:¸6Ñ(BÔ(BÕDVÐW]ÑD^ÔD^Ð'_Ñ`Ô`ˆŒØ#)Ô#=ˆÔ Ý0¸Ð?Ñ?Ô?ˆŒÝ”mØeÐeÐeÐeÅUÈ6ÔKcÑEdÔEdÐeÑeÔeñ
ô 
ˆŒõ œÕ'9¸&Ñ'AÔ'AÕCUÐV\ÑC]ÔC]Ð&^Ñ_Ô_ˆŒÝ”L Ô!3¸Ð>Ñ>Ô>ˆŒ	Ý$ VÑ,Ô,ˆŒ	ˆ	ˆ	rJ   r�   rK   c                 ó  — |                       |¦  «        }|                     dd¦  «        }|                      |¦  «        }|                     dd¦  «        }| j        D ]} ||¦  «        }Œt	          j        | j        |j        ¬¦  «                             d¦  «        }|  	                    ||¦  «        }| j
        D ]} ||fd|i|¤Ž}Œ| j        D ]} ||¦  «        }Œ|                      |                      |¦  «        ¦  «        S )Nr“   r   r  r   rŽ   )re  r›   rf  rh  rp   r  r7   r  r  ri  rk  rl  rn  r?  )rF   r�   rG   ÚlayerÚposition_idsrŽ   s         rI   r°   zXcodec2Decoder.forward	  s&  € ØŸš Ñ.Ô.ˆØ%×/Ò/°°1Ñ5Ô5ˆØŸ
š
 =Ñ1Ô1ˆØ%×/Ò/°°1Ñ5Ô5ˆð ”^ð 	1ð 	1ˆEØ!˜E -Ñ0Ô0ˆMˆMõ ”| DÔ$<À]ÔEYÐZÑZÔZ×dÒdÐefÑgÔgˆØ"Ÿošo¨m¸\ÑJÔJÐØ”[ð 	dð 	dˆEØ!˜E -ÐcÐcÐEXÐcÐ\bÐcÐcˆMˆMð ”]ð 	1ð 	1ˆEØ!˜E -Ñ0Ô0ˆMˆMà�yŠy˜Ÿš =Ñ1Ô1Ñ2Ô2Ð2rJ   rR  ri   s   @rI   r_  r_  ø  sp   ø€ € € € € Ø`Ð`ð-˜}ð -ð -ð -ð -ð -ð -ð3 U¤\ð 3ÀÄð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3rJ   r_  c                   óH   ‡ — e Zd Zdefˆ fd„Zdej        dej        fd„Zˆ xZS )ÚXcodec2SemanticAdapterr~   c                 ó8  •— t          ¦   «                              ¦   «          t          j        |j        j        |j        j        ddd¬¦  «        | _        t          j        ¦   «         | _        t          j        |j        j        |j        j        ddd¬¦  «        | _	        t          j        ¦   «         | _
        t          j        |j        j        |j        j        ddd¬¦  «        | _        t          j        |j        j        |j        j        ddd¬¦  «        | _        d S )Nr   r“   F)Úin_channelsÚout_channelsrô   rõ   r€   T)rô   rõ   r€   )rD   r�   r‚   rú   r*   r4   rû   ÚReLUÚact1rþ   Úact2Úconv3Úconv4r†   s     €rI   r�   zXcodec2SemanticAdapter.__init__%  s	  ø€ Ý‰Œ×ÒÑÔÐÝ”YØÔ4Ô@ØÔ5ÔAØØØð
ñ 
ô 
ˆŒ
õ ”G‘I”IˆŒ	Ý”YØÔ(Ô4ØÔ(Ô4ØØØð
ñ 
ô 
ˆŒ
õ ”G‘I”IˆŒ	Ý”YØÔ(Ô4ØÔ(Ô4ØØØð
ñ 
ô 
ˆŒ
õ ”YØÔ4Ô@ØÔ5ÔAØØØð
ñ 
ô 
ˆŒ
ˆ
ˆ
rJ   r�   rK   c                 ó  — |                       |¦  «        }|                      |¦  «        }|}|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }||z   }|                      |¦  «        }|S rM   )rû   rx  rþ   ry  rz  r{  r  s      rI   r°   zXcodec2SemanticAdapter.forwardF  s}   € ØŸ
š
 =Ñ1Ô1ˆØŸ	š	 -Ñ0Ô0ˆØ ˆØŸ
š
 =Ñ1Ô1ˆØŸ	š	 -Ñ0Ô0ˆØŸ
š
 =Ñ1Ô1ˆØ%¨Ñ0ˆØŸ
š
 =Ñ1Ô1ˆØÐrJ   r  ri   s   @rI   rs  rs  $  sk   ø€ € € € € ð
˜}ð 
ð 
ð 
ð 
ð 
ð 
ðB	 U¤\ð 	°e´lð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	rJ   rs  c                   ó*   — e Zd ZdZdZdZeedœZd„ ZdS )ÚXcodec2PreTrainedModelr)   Úinput_values)rP  )r�   Ú
attentionsc                 ó¶  — t          j        |¦  «         t          |t          ¦  «        r4t	          j        |j        ¦  «         t	          j        |j        ¦  «         d S t          |t          ¦  «        r5t          j
        |j        ¦  «        }t	          j        |j        |¦  «         d S t          |t          ¦  «        rt|                     |j        j        ¬¦  «        \  }}}t	          j        |j        |¦  «         t	          j        |j        |¦  «         t	          j        |j        |¦  «         d S t          |t(          ¦  «        rBt+          d|j        z  d|j        z  |j        ¦  «        }t	          j        |j        |¦  «         d S t          |t2          ¦  «        r<t+          |j        |j        |j        ¦  «        }t	          j        |j        |¦  «         d S d S )Nr  r   g333333ã?)r   Ú_init_weightsrA   r´   ÚinitÚzeros_ÚalphaÚbetar7  rp   r;  rT   Úcopy_r9  r  r  r  r  r  r  rË   r$   rÍ   rô   rÃ   r¶   Úcutoffr  )rF   Úmoduler9  r  r  r  Úfilter_tensors          rI   r‚  z$Xcodec2PreTrainedModel._init_weights[  s§  € ÝÔ% fÑ-Ô-Ð-Ý�fÕ.Ñ/Ô/ð 	5ÝŒK˜œÑ%Ô%Ð%ÝŒK˜œÑ$Ô$Ð$Ð$Ð$Ý˜Õ 0Ñ1Ô1ð 	5ÝÔ& v¤|Ñ4Ô4ˆFÝŒJ�v”} fÑ-Ô-Ð-Ð-Ð-Ý˜Õ ?Ñ@Ô@ð 
	5Ø&,×&=Ò&=ÀVÄ]ÔEYÐ&=Ñ&ZÔ&ZÑ#ˆF�E˜8ÝŒJ�v”} fÑ-Ô-Ð-ÝŒJ�v”| UÑ+Ô+Ð+ÝŒJ�v”¨Ñ1Ô1Ð1Ð1Ð1Ý˜Õ 1Ñ2Ô2ð 	5Ý0°°v´|Ñ1CÀSÈ6Ì<ÑEWÐY_ÔYkÑlÔlˆMÝŒJ�v”} mÑ4Ô4Ð4Ð4Ð4Ý˜Õ 3Ñ4Ô4ð 	5Ý0°´ÀÔ@QÐSYÔSeÑfÔfˆMÝŒJ�v”} mÑ4Ô4Ð4Ð4Ð4ð	5ð 	5rJ   N)	rU   rV   rW   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesr²   Ú_can_record_outputsr‚  r@   rJ   rI   r~  r~  R  sG   € € € € € Ø!ÐØ$€OØ!Ðà,Ø)ðð Ðð
5ð 5ð 5ð 5ð 5rJ   r~  z!Xcodec2 neural audio codec model.)Úcustom_introc                   ó¼  ‡ — e Zd ZeZdefˆ fd„Zee	 	 	 ddej	        dej	        dej	        dz  dej	        dz  d	e
d
ee         deez  fd„¦   «         ¦   «         Zee	 	 ddej	        dz  dej	        dz  d
ee         deez  fd„¦   «         ¦   «         Zee	 	 	 ddej	        dej	        dej	        dz  dej	        dz  d	e
d
ee         deez  fd„¦   «         ¦   «         Zˆ xZS )ÚXcodec2Modelr~   c                 óâ  •— t          ¦   «                              |¦  «         |j        | _        t          j        |j        ¦  «        | _        t          |¦  «        | _        t          |¦  «        | _
        t          j        |j        |j        j        z   |j        |j        j        z   ¦  «        | _        t          |¦  «        | _        t#          |¦  «        | _        |                      ¦   «          d S rM   )rD   r�   rR   r   Úfrom_configr*   Úsemantic_encoderrs  Úsemantic_adapterrç   Úacoustic_encoderr‚   rƒ   r4   Ú
fc_encoderrT  rV  r_  Úacoustic_decoderÚ	post_initr†   s     €rI   r�   zXcodec2Model.__init__t  sÇ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð à Ô+ˆŒÝ )Ô 5°fÔ6RÑ SÔ SˆÔÝ 6°vÑ >Ô >ˆÔÝ .¨vÑ 6Ô 6ˆÔÝœ)ØÔ Ô!=Ô!IÑIØÔ Ô!=Ô!IÑIñ
ô 
ˆŒõ *¨&Ñ1Ô1ˆŒÝ .¨vÑ 6Ô 6ˆÔà�ŠÑÔÐÐÐrJ   NFr  Úinput_featuresÚpadding_maskÚinput_features_maskÚoutput_latentsrG   rK   c                 ó@  — t          j        ¦   «         5  |                      ||¬¦  «        }ddd¦  «         n# 1 swxY w Y   |j                             dd¦  «        }|                      |¦  «        }|                      |¦  «        }	t          j        ||	gd¬¦  «        }
|                      |
                     dd¦  «        ¦  «        }
|  	                    |
¦  «        \  }}|                     dd¦  «        }|                     dd¦  «        }d}|�y| 
                    dd¬¦  «        }|| j        z  }t          j        |j        d         |j        ¬	¦  «                             dd¦  «        }||k                          |j        ¦  «        }t%          ||r|nd|¬
¦  «        S )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�   Nr“   r   r-  r’   T)r  Úkeepdimr  )rm   rn   ro   )rp   Úno_gradr”  Úlast_hidden_stater›   r•  r–  Úcatr—  rV  r2  rR   r  r˜   r  rš   rÄ   rÅ   ru   )rF   r  rš  r›  rœ  r�  rG   Úsemantic_outputÚsemantic_hidden_statesÚacoustic_hidden_statesr�   rn   rm   ro   Úaudio_lengthÚtoken_lengthÚidxs                    rI   ÚencodezXcodec2Model.encode„  sû  € õ2 Œ]‰_Œ_ð 	hð 	hØ"×3Ò3°NÐSfÐ3ÑgÔgˆOð	hð 	hð 	hñ 	hô 	hð 	hð 	hð 	hð 	hð 	hð 	høøøð 	hð 	hð 	hð 	hà!0Ô!B×!LÒ!LÈQÐPQÑ!RÔ!RÐØ!%×!6Ò!6Ð7MÑ!NÔ!NÐð "&×!6Ò!6°|Ñ!DÔ!DÐÝœ	Ð#9Ð;QÐ"RÐXYÐZÑZÔZˆØŸš¨×(?Ò(?ÀÀ1Ñ(EÔ(EÑFÔFˆð  $Ÿ~š~¨mÑ<Ô<Ñˆ�Ø×#Ò# A qÑ)Ô)ˆØ!×+Ò+¨A¨qÑ1Ô1ˆð  ÐØÐ#Ø'×+Ò+°¸DÐ+ÑAÔAˆLØ'¨4¬?Ñ:ˆLÝ”,˜{Ô0°Ô4¸\Ô=PÐQÑQÔQ×VÒVÐWXÐZ\Ñ]Ô]ˆCØ # lÒ 2×6Ò6°|Ô7IÑJÔJÐå#Ø#Ø-Ð7�G�G°4Ø-ð
ñ 
ô 
ð 	
s   ”8¸<¿<rm   rn   c                 óò   — |€|€t          d¦  «        ‚|�/| j                             |                     dd¦  «        ¦  «        }n|                     dd¦  «        } | j        |fi |¤Ž}t          |¬¦  «        S )a3  
        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.
        Nz3Either `latents` or `audio_codes` must be provided.r“   r   )rl   )Ú
ValueErrorrV  r[  r›   r˜  rw   )rF   rm   rn   rG   Úrecon_audios        rI   ÚdecodezXcodec2Model.decodeº  sŠ   € ð ˆ?˜{Ð2ÝÐRÑSÔSÐSàÐ"Ø”n×/Ò/°×0EÒ0EÀaÈÑ0KÔ0KÑLÔLˆGˆGà×'Ò'¨¨1Ñ-Ô-ˆGà+�dÔ+¨GÐ>Ð>°vÐ>Ð>ˆÝ#°Ð=Ñ=Ô=Ð=rJ   c                 óè   — |j         d         }|                      ||||dd¬¦  «        } | j        d	|j        ddœ|¤Žd         dd|…f         }	t	          |	|j        |r|j        nd|j        ¬¦  «        S )
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.

        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
        ```r’   T)rš  r›  rœ  r�  Úreturn_dict)rn   r¯  r   .N)rl   rm   rn   ro   r@   )r˜   r©  r­  rn   rk   rm   ro   )
rF   r  rš  r›  rœ  r�  rG   ÚlengthÚencoder_outputsrl   s
             rI   r°   zXcodec2Model.forwardÓ  s¯   € ðV Ô# BÔ'ˆàŸ+š+ØØ)Ø%Ø 3ØØð &ñ 
ô 
ˆð #�t”{Ð_¨?Ô+BÐPTÐ_Ð_ÐX^Ð_Ð_Ð`aÔbÐcfÐhoÐioÐhoÐcoÔpˆåØ%Ø'Ô3Ø/=ÐG�OÔ+Ð+À4Ø,Ô=ð	
ñ 
ô 
ð 	
rJ   )NNF)NN)rU   rV   rW   r(   Úconfig_classr�   r   r   rp   rs   Úboolr   r   r\   ru   r©  rw   r­  rk   r°   rh   ri   s   @rI   r‘  r‘  p  sû  ø€ € € € € à €Lð˜}ð ð ð ð ð ð ð  Øð
 -1Ø37Ø$ð2
ð 2
à”lð2
ð œð2
ð ”l TÑ)ð	2
ð
 #œ\¨DÑ0ð2
ð ð2
ð Ð+Ô,ð2
ð 
Ð%Ñ	%ð2
ð 2
ð 2
ñ Ôñ „^ð2
ðh Øð ,0Ø'+ð>ð >à”\ DÑ(ð>ð ” Ñ$ð>ð Ð+Ô,ð	>ð
 
Ð%Ñ	%ð>ð >ð >ñ Ôñ „^ð>ð. Øð
 -1Ø37Ø$ð:
ð :
à”lð:
ð œð:
ð ”l TÑ)ð	:
ð
 #œ\¨DÑ0ð:
ð ð:
ð Ð+Ô,ð:
ð 
�Ñ	ð:
ð :
ð :
ñ Ôñ „^ð:
ð :
ð :
ð :
ð :
rJ   r‘  )r(   r‘  r~  )TÚcollections.abcr   Údataclassesr   ÚnumpyrO   rp   Útorch.nnr‚   Útorch.nn.functionalr  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(   rk   ru   rw   ry   r}   r‰   r²   r´   r¶   rË   rÐ   rÚ   râ   rç   ÚModulerì   r  r7  rT  r_  rs  r~  r‘  Ú__all__r@   rJ   rI   ú<module>rÊ     så  ðð %Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .à &Ð &Ð &Ð &Ð &Ð &Ø  Ð  Ð  Ð  Ð  Ð  Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð ð ð ð ð ,Ð +Ð +Ð +Ð +Ð +Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø (Ð (Ð (Ð (Ð (Ð (Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KØ 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð >Ð =Ð =Ð =Ð =Ð =ð €Ð2Ð3Ñ3Ô3ØðE#ð E#ð E#ð E#ð E#�Kñ E#ô E#ñ „ñ 4Ô3ðE#ðP Ø
ð1ð 1ð 1ð 1ð 1�Kñ 1ô 1ñ „ñ „ð1ð( Ø
ð1ð 1ð 1ð 1ð 1˜;ñ 1ô 1ñ „ñ „ð1ð" Ø
ð2ð 2ð 2ð 2ð 2˜;ñ 2ô 2ñ „ñ „ð2ð	ð 	ð 	ð 	ð 	Ð1ñ 	ô 	ð 	ðWð Wð Wð Wð W�ñ Wô Wð Wð.)ð .)ð .)ð .)ð .)�~ñ .)ô .)ð .)ðb	ð 	ð 	ð 	ð 	Ð+ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð+ñ 	ô 	ð 	ðð ð ð ð Ð1ñ ô ð ðð ð ð ð Ð-ñ ô ð ðLð Lð Lð Lð LÐ%Gñ Lô Lð Lð(]ð ]ð ]ð ]ð ]˜/ñ ]ô ]ð ]ðbð bð bð bð b˜/ñ bô bð bð[ð [ð [ð [ð [�Zñ [ô [ð [ð:ð :ð :ð :ð :˜œñ :ô :ð :ð0P1ð P1ð P1ð P1ð P1 b¤iñ P1ô P1ð P1ðf2"ð 2"ð 2"ð 2"ð 2"�r”yñ 2"ô 2"ð 2"ðj&ð &ð &ð &ð &�r”yñ &ô &ð &ð,)3ð )3ð )3ð )3ð )3�R”Yñ )3ô )3ð )3ðX+ð +ð +ð +ð +˜RœYñ +ô +ð +ð\5ð 5ð 5ð 5ð 5Ð3ñ 5ô 5ð 5ð< €Ð@ÐAÑAÔAð^
ð ^
ð ^
ð ^
ð ^
Ð)ñ ^
ô ^
ñ BÔAð^
ðB FÐ
EÐ
E€€€rJ   