+
    œ°³jˆ‡  ã                   óÜ  € R t ^ RIt^ RIHt ^ RIt^ RIHt ^RIHt ^RI	H
t
 ^RIHtHtHt ^RIHt ]P"                  ! ]4      t]] ! R R	]4      4       4       t]] ! R
 R]4      4       4       t]] ! R R]4      4       4       t ! R R]P.                  4      t ! R R]P.                  4      t ! R R]P.                  4      t ! R R]P.                  4      t ! R R]P.                  4      t ! R R]P.                  4      t ! R R]P.                  4      t ! R R]P.                  4      t ! R R]P.                  4      t ] ! R  R!]
4      4       t!]! R"R#7       ! R$ R%]!4      4       t"R%R!.t#R# )&zPyTorch EnCodec model.N)Ú	dataclass)Únn)Úinitialization)ÚPreTrainedAudioTokenizerBase)ÚModelOutputÚauto_docstringÚlogging©ÚEncodecConfigc                   ó8   a € ] tR t^&t o RtRtRtV 3R ltRtV t	R# )ÚEncodecOutputaH  
audio_codes (`torch.LongTensor`  of shape `(nb_frames, batch_size, nb_quantizers, frame_len)`, *optional*):
    Discrete code embeddings computed using `model.encode`.
audio_values (`torch.FloatTensor`  of shape `(batch_size, segment_length)`, *optional*):
    Decoded audio values, obtained using the decoder part of Encodec.
Nc                óv   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   # )é   NÚaudio_codesÚaudio_values)ÚtorchÚ
LongTensorÚFloatTensor)ÚformatÚ__classdict__s   "€Úm/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/encodec/modeling_encodec.pyÚ__annotate__ÚEncodecOutput.__annotate__&   s5   ø‡ ‚ ñ ×!Ñ! DÕ(Ñ/ñ ñ ×#Ñ# dÕ*Ñ1ò ó    © )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r   &   s   ø‡ € ñð ,0€KØ-1€L÷ ƒ r   r   c                   ó<   a € ] tR t^4t o RtRtRtRtV 3R ltRt	V t
R# )ÚEncodecEncoderOutputa”  
audio_codes (`torch.LongTensor`  of shape `(nb_frames, batch_size, nb_quantizers, frame_len)`, *optional*):
    Discrete code embeddings computed using `model.encode`.
audio_scales (list of length `nb_frames` of `torch.Tensor` of shape `(batch_size, 1)`, *optional*):
    Scaling factor for each `audio_codes` input. This is used to unscale each chunk of audio when decoding.
last_frame_pad_length (`int`, *optional*):
    The length of the padding in the last frame, if any. This is used to ensure that the encoded frames can be
    outputted as a tensor. This value should be passed during decoding to ensure padding is removed from the
    encoded frames.
Nc                ó�   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[R,          ;R&   # )r   Nr   Úaudio_scalesÚlast_frame_pad_length)r   r   r   Úint)r   r   s   "€r   r   Ú!EncodecEncoderOutput.__annotate__4   sF   ø‡ ‚ ñ ×!Ñ! DÕ(Ñ/ñ ñ ×#Ñ# dÕ*Ñ1ñ ñ   �:Ñ,ò! r   r   )r   r   r   r   r   r   r'   r(   r    r!   r"   r#   s   @r   r%   r%   4   s#   ø‡ € ñ	ð ,0€KØ-1€LØ(,Ð÷! ƒ r   r%   c                   ó4   a € ] tR t^Gt o RtRtV 3R ltRtV tR# )ÚEncodecDecoderOutputz 
audio_values (`torch.FloatTensor`  of shape `(batch_size, segment_length)`, *optional*):
    Decoded audio values, obtained using the decoder part of Encodec.
Nc                óH   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   # )r   Nr   )r   r   )r   r   s   "€r   r   Ú!EncodecDecoderOutput.__annotate__G   s   ø‡ ‚ ñ ×#Ñ# dÕ*Ñ1ò r   r   )	r   r   r   r   r   r   r    r!   r"   r#   s   @r   r,   r,   G   s   ø‡ € ñð
 .2€L÷ ƒ r   r,   c                   ó~   a a€ ] tR t^Rt oRtR
V3R lV 3R llltV3R lR lt]RV3R lR ll4       tR t	R	t
VtV ;t# )ÚEncodecConv1dz;Conv1d with asymmetric or causal padding and normalization.c          
      ó8   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ RS[ /# )r   Úin_channelsÚout_channelsÚkernel_sizeÚstrideÚdilation©r)   )r   r   s   "€r   r   ÚEncodecConv1d.__annotate__U   s<   ø€ ÷ 'Oñ 'OÙ#&ð'OÙ69ð'OÙHKð'OÙUXð'OÙhkñ'Or   c           	     ó  <€ \         SV `  4        VP                  V n        VP                  V n        VP
                  V n        V P
                  R9  d   \        RV P
                   24      hV^8”  d'   V^8”  d    \        P                  RV RV RV R24       \        P                  ! W#WEVR7      V n        \        P                  P                  p\        \        P                  P                  R 4      '       d%   \        P                  P                  P                  pV P
                  R 8X  d   V! V P                  4      V n        M-V P
                  R8X  d   \        P                   ! ^V4      V n        V P                  P$                  ^ ,          p\&        P(                  ! V P                  P*                  ^ ,          \&        P,                  R7      pV P                  P.                  ^ ,          p\&        P(                  ! V^,
          V,          ^,           \&        P,                  R7      p\        P0                  ! VR	R
7      V n        \        P0                  ! VR	R
7      V n        \        P0                  ! WE,
          R	R
7      V n        R# )Úweight_normÚtime_group_normúIself.norm_type must be one of `"weight_norm"`, `"time_group_norm"`), got zQEncodecConv1d has been initialized with stride > 1 and dilation > 1 (kernel_size=z stride=z, dilation=z).©r6   ©ÚdtypeF)Ú
persistentN©r:   r;   )ÚsuperÚ__init__Úuse_causal_convÚcausalÚpad_modeÚ	norm_typeÚ
ValueErrorÚloggerÚwarningr   ÚConv1dÚconvÚutilsr:   ÚhasattrÚparametrizationsÚ	GroupNormÚnormr4   r   Útensorr5   Úint64r6   ÚBufferÚpadding_total)	ÚselfÚconfigr2   r3   r4   r5   r6   r:   Ú	__class__s	   &&&&&&& €r   rC   ÚEncodecConv1d.__init__U   sÒ  ø€ ô 	‰ÑÔØ×,Ñ,ˆŒØŸ™ˆŒØ×)Ñ)ˆŒà�>‰>Ð!CÔCÜØ[Ð\`×\jÑ\jÐ[kÐlóð ð
 �AŒ:˜( Qœ,Ü�N‰Nð!Ø!, ¨X°f°X¸[ÈÈ
ÐRTðVôô
 —I’I˜k¸ÐW_Ô`ˆŒ	Ü—h‘h×*Ñ*ˆÜ”2—8‘8×,Ñ,¨m×<Ò<ÜŸ(™(×3Ñ3×?Ñ?ˆKà�>‰>˜]Ô*Ù# D§I¡IÓ.ˆD�IØ�^‰^Ð0Ô0ÜŸš Q¨Ó5ˆDŒIà—i‘i×+Ñ+¨AÕ.ˆÜ—’˜dŸi™i×.Ñ.¨qÕ1¼¿¹ÔEˆØ—9‘9×%Ñ% aÕ(ˆô —l’l K°!¥O°xÕ#?À!Õ#CÌ5Ï;É;ÔWˆä—i’i °5Ô9ˆŒÜŸ9š9 [¸UÔCˆÔÜŸYšY {Õ';ÈÔNˆÖr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Úhidden_statesÚreturn©r   ÚTensor)r   r   s   "€r   r   r8   ~   s'   ø€ ÷ 
%ñ 
%á—|‘|ð
%ñ 
�‰ñ
%r   c                óŠ  € VP                   R,          pW P                  ,
          V P                  ,           V P                  ,          ^,           p\        P
                  ! V4      P                  \        P                  4      ^,
          pW0P                  ,          V P                  ,           V P                  ,
          pWB,
          # )zSee `pad_for_conv1d`.éÿÿÿÿ)Úshaper4   rU   r5   r   ÚceilÚtorS   )rV   r[   ÚlengthÚn_framesÚideal_lengths   &&   r   Ú_get_extra_padding_for_conv1dÚ+EncodecConv1d._get_extra_padding_for_conv1d~   s‰   € ð
 ×$Ñ$ RÕ(ˆØ×-Ñ-Õ-°×0BÑ0BÕBÀdÇkÁkÕQÐTUÕUˆÜ—:’:˜hÓ'×*Ñ*¬5¯;©;Ó7¸!Õ;ˆØ§+¡+Õ-°×0@Ñ0@Õ@À4×CUÑCUÕUˆàÕ$Ð$r   c                ó\   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[RS[/# )r   r[   ÚpaddingsÚmodeÚvalue)r   r^   Útupler)   ÚstrÚfloat)r   r   s   "€r   r   r8   ‹   s6   ø€ ÷ !ñ !™eŸl™lð !±e¹CÁ¸Hµoð !ÉSð !Ñbgñ !r   c                ó”  € V P                   R,          pVw  rVVR8w  d!   \        P                  P                  WW#4      # \	        WV4      p^ pWG8:  d2   Wt,
          ^,           p\        P                  P                  V ^ V34      p \        P                  P                  WW#4      p	V	P                   R,          V,
          p
V	RRV
13,          # )zºTiny wrapper around torch.nn.functional.pad, just to allow for reflect padding on small input.
If this is the case, we insert extra 0 padding to the right before the reflection happens.
Úreflect.Nr`   )ra   r   Ú
functionalÚpadÚmax)r[   rj   rk   rl   rd   Úpadding_leftÚpadding_rightÚmax_padÚ	extra_padÚpaddedÚends   &&&&       r   Ú_pad1dÚEncodecConv1d._pad1dŠ   s³   € ð
 ×$Ñ$ RÕ(ˆØ&.Ñ#ˆØ�9ÔÜ—=‘=×$Ñ$ ]¸dÓJÐJä�lÓ2ˆØˆ	ØÔØÕ(¨1Õ,ˆIÜŸM™M×-Ñ-¨m¸aÀ¸^ÓLˆMÜ—‘×"Ñ" =¸DÓHˆØ�l‰l˜2Õ Õ*ˆØ�c˜4˜C˜4�iÕ Ð r   c                óœ  € V P                  V4      pV P                  '       d+   V P                  WP                  V3V P                  R 7      pMKV P                  ^,          pV P                  V,
          pV P                  WW2,           3V P                  R 7      pV P                  V4      pV P                  R8X  d   V P                  V4      pV# ))rk   r;   )rg   rE   r{   rU   rF   rL   rG   rQ   )rV   r[   Úextra_paddingrv   ru   s   &&   r   ÚforwardÚEncodecConv1d.forward�   s¹   € Ø×:Ñ:¸=ÓIˆà�;�;ˆ;à ŸK™K¨×8JÑ8JÈMÐ7ZÐae×anÑan˜KÓo‰Mð !×.Ñ.°!Õ3ˆMØ×-Ñ-°Õ=ˆLØ ŸK™KØ¨mÕ.KÐLÐSW×S`ÑS`ð (ó ˆMð Ÿ	™	 -Ó0ˆà�>‰>Ð.Ô.Ø ŸI™I mÓ4ˆMàÐr   )rE   rL   r4   rQ   rG   rF   rU   r5   )é   r�   )Úzeroç        )r   r   r   r   r   rC   rg   Ústaticmethodr{   r   r!   r"   Ú__classcell__©rX   r   s   @@r   r0   r0   R   sB   ù‡ € ÙE÷'Oõ 'O÷R
%ð 
%ð ÷!ñ !ó ð!÷$ò r   r0   c                   óL   a a€ ] tR t^³t oRtRV3R lV 3R llltR tRtVtV ;t	# )ÚEncodecConvTranspose1dzDConvTranspose1d with asymmetric or causal padding and normalization.c                ó2   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ /# )r   r2   r3   r4   r5   r7   )r   r   s   "€r   r   Ú#EncodecConvTranspose1d.__annotate__¶   s1   ø€ ÷ cñ c©Cð c¹sð cÑQTð cÑ^añ cr   c                óð  <€ \         SV `  4        VP                  V n        VP                  V n        VP
                  V n        V P
                  R9  d   \        RV P
                   24      h\        P                  ! W#WE4      V n	        \        P                  P                  p\        \        P                  P                  R 4      '       d%   \        P                  P                  P                  pVP
                  R 8X  d   V! V P                  4      V n	        M-VP
                  R8X  d   \        P                  ! ^V4      V n        V P                  '       g   V P                  R8X  g   \        R4      hR# R# )r:   r;   r<   g      ð?zB`trim_right_ratio` != 1.0 only makes sense for causal convolutionsNrA   )rB   rC   rD   rE   Útrim_right_ratiorG   rH   r   ÚConvTranspose1drL   rM   r:   rN   rO   rP   rQ   )rV   rW   r2   r3   r4   r5   r:   rX   s   &&&&&& €r   rC   ÚEncodecConvTranspose1d.__init__¶   s  ø€ Ü‰ÑÔØ×,Ñ,ˆŒØ &× 7Ñ 7ˆÔØ×)Ñ)ˆŒØ�>‰>Ð!CÔCÜØ[Ð\`×\jÑ\jÐ[kÐlóð ô ×&Ò& {À+ÓVˆŒ	ä—h‘h×*Ñ*ˆÜ”2—8‘8×,Ñ,¨m×<Ò<ÜŸ(™(×3Ñ3×?Ñ?ˆKà×Ñ˜}Ô,Ù# D§I¡IÓ.ˆD�IØ×ÑÐ!2Ô2ÜŸš Q¨Ó5ˆDŒIà——�˜t×4Ñ4¸Ô;ÜÐaÓbÐbñ  <‘r   c                óÐ  € V P                   P                  ^ ,          pV P                   P                  ^ ,          pW#,
          pV P                  V4      pV P                  R8X  d   V P	                  V4      pV P
                  '       d(   \        P                  ! W@P                  ,          4      pM	V^,          pWE,
          pVP                  R,          V,
          pVRWg13,          pV# )é    r;   .r`   )
rL   r4   r5   rG   rQ   rE   Úmathrb   rŒ   ra   )rV   r[   r4   r5   rU   rv   ru   rz   s   &&      r   r   ÚEncodecConvTranspose1d.forwardÎ   sÂ   € Ø—i‘i×+Ñ+¨AÕ.ˆØ—‘×!Ñ! !Õ$ˆØ#Õ,ˆàŸ	™	 -Ó0ˆà�>‰>Ð.Ô.Ø ŸI™I mÓ4ˆMð �;�;ˆ;ô !ŸIšI m×6KÑ6KÕ&KÓL‰Mð *¨QÕ.ˆMà$Õ4ˆð ×!Ñ! "Õ%¨Õ5ˆØ% c¨<Ð+;Ð&;Õ<ˆØÐr   )rE   rL   rQ   rG   rŒ   )r�   ©
r   r   r   r   r   rC   r   r!   r"   r…   r†   s   @@r   rˆ   rˆ   ³   s   ù‡ € ÙN÷cõ c÷0ò r   rˆ   c                   óH   a a€ ] tR t^ìt oRtV3R lV 3R lltR tRtVtV ;t	# )ÚEncodecLSTMzr
LSTM without worrying about the hidden state, nor the layout of the data. Expects input as convolutional layout.
c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   rW   Ú	dimension)r
   r)   )r   r   s   "€r   r   ÚEncodecLSTM.__annotate__ñ   s   ø€ ÷ Jñ J™}ð J¹ñ Jr   c                óp   <€ \         SV `  4        \        P                  ! W"VP                  4      V n        R # ©N)rB   rC   r   ÚLSTMÚnum_lstm_layersÚlstm)rV   rW   r—   rX   s   &&&€r   rC   ÚEncodecLSTM.__init__ñ   s&   ø€ Ü‰ÑÔÜ—G’G˜I°&×2HÑ2HÓIˆŽ	r   c                ó�   € VP                  ^^ ^4      pV P                  V4      ^ ,          V,           pVP                  ^^^ 4      pV# )r   )Úpermuter�   )rV   r[   s   &&r   r   ÚEncodecLSTM.forwardõ   sH   € Ø%×-Ñ-¨a°°AÓ6ˆØŸ	™	 -Ó0°Õ3°mÕCˆØ%×-Ñ-¨a°°AÓ6ˆØÐr   )r�   r“   r†   s   @@r   r•   r•   ì   s    ù‡ € ñ÷Jó J÷ò r   r•   c                   óH   a a€ ] tR t^üt oRtV3R lV 3R lltR tRtVtV ;t	# )ÚEncodecResnetBlockz6
Residual block from SEANet model as used by EnCodec.
c                ó<   <€ V ^8„  d   QhRS[ RS[RS[S[,          /# )r   rW   ÚdimÚ	dilations)r
   r)   Úlist)r   r   s   "€r   r   ÚEncodecResnetBlock.__annotate__  s&   ø€ ÷ *ñ *™}ð *±3ð *Á4ÉÅ9ñ *r   c           
     óZ  <€ \         SV `  4        VP                  ^3p\        V4      \        V4      8w  d   \	        R4      hW!P
                  ,          p. p\        \        WC4      4       Fa  w  pw  r‰V^ 8X  d   TMTp
V\        V4      ^,
          8X  d   TMTpV\        P                  ! 4       .,          pV\        WW¸V	R7      .,          pKc  	  \        P                  ! V4      V n        VP                  '       d   \        WV^R7      V n        R# \        P                  ! 4       V n        R# )r�   z7Number of kernel sizes should match number of dilationsr=   )r4   N)rB   rC   Úresidual_kernel_sizeÚlenrH   ÚcompressÚ	enumerateÚzipr   ÚELUr0   Ú
ModuleListÚblockÚuse_conv_shortcutÚshortcutÚIdentity)rV   rW   r¥   r¦   Úkernel_sizesÚhiddenr±   Úir4   r6   Úin_chsÚout_chsrX   s   &&&&        €r   rC   ÚEncodecResnetBlock.__init__  sò   ø€ Ü‰ÑÔØ×3Ñ3°QÐ7ˆÜˆ|Ó¤ I£Ô.ÜÐVÓWÐWàŸ™Õ'ˆØˆÜ*3´C¸Ó4PÖ*QÑ&ˆAÑ&�Ø œF‘S¨ˆFØ¤# lÓ"3°aÕ"7Ô7‘c¸VˆGØ”b—f’f“h�ZÕˆEØ”m F°GÐS[Ô\Ð]Õ]ŠEñ	 +Rô
 —]’] 5Ó)ˆŒ
à×#×#Ð#Ü)¨&°sÈÔJˆDŽMäŸKšK›MˆDŽMr   c                ól   € TpV P                    F  pV! V4      pK  	  V P                  V4      V,           # rš   ©r±   r³   )rV   r[   ÚresidualÚlayers   &&  r   r   ÚEncodecResnetBlock.forward  s5   € Ø ˆØ—Z”ZˆEÙ! -Ó0ŠMñ  ð �}‰}˜XÓ&¨Õ6Ð6r   r¼   r“   r†   s   @@r   r£   r£   ü   s   ù‡ € ñ÷*ó *÷(7ò 7r   r£   c                   óH   a a€ ] tR tRt oRtV3R lV 3R lltR tRtVtV ;t	# )ÚEncodecEncoderi  z"SEANet encoder as used by EnCodec.c                ó    <€ V ^8„  d   QhRS[ /# ©r   rW   r	   )r   r   s   "€r   r   ÚEncodecEncoder.__annotate__   s   ø€ ÷ +ñ +™}ñ +r   c           
     ó$  <€ \         SV `  4        \        WP                  VP                  VP
                  4      .p^p\        VP                  4       F£  pW1P                  ,          p\        VP                  4       F*  pV\        WVP                  V,          ^.4      .,          pK,  	  V\        P                  ! 4       .,          pV\        WV^,          V^,          VR7      .,          pV^,          pK¥  	  V\        WVP                  ,          4      .,          pV\        P                  ! 4       .,          pV\        WVP                  ,          VP                  VP                   4      .,          p\        P"                  ! V4      V n        R# )r�   ©r4   r5   N)rB   rC   r0   Úaudio_channelsÚnum_filtersr4   ÚreversedÚupsampling_ratiosÚrangeÚnum_residual_layersr£   Údilation_growth_rater   r¯   r•   Úhidden_sizeÚlast_kernel_sizer°   Úlayers)rV   rW   ÚmodelÚscalingÚratioÚcurrent_scaleÚjrX   s   &&     €r   rC   ÚEncodecEncoder.__init__   sI  ø€ Ü‰ÑÔÜ˜v×'<Ñ'<¸f×>PÑ>PÐRX×RdÑRdÓeÐfˆØˆô ˜f×6Ñ6Ö7ˆEØ#×&8Ñ&8Õ8ˆMä˜6×5Ñ5Ö6�ØÔ,¨VÀV×E`ÑE`ÐbcÕEcÐefÐDgÓhÐiÕi’ñ 7ð ”b—f’f“h�ZÕˆEØ”m F¸=È1Õ;LÐZ_ÐbcÕZcÐlqÔrÐsÕsˆEØ�q�LŠGñ 8ð 	”+˜f°×0BÑ0BÕ&BÓCÐDÕDˆØ”"—&’&“(�ÕˆØ”- °&×2DÑ2DÕ(DÀf×FXÑFXÐZ`×ZqÑZqÓrÐsÕsˆä—m’m EÓ*ˆŽr   c                ó<   € V P                    F  pV! V4      pK  	  V# rš   ©rÐ   ©rV   r[   r¾   s   && r   r   ÚEncodecEncoder.forward6  ó    € Ø—[”[ˆEÙ! -Ó0ŠMñ !àÐr   rØ   r“   r†   s   @@r   rÁ   rÁ     s   ù‡ € Ù,÷+ó +÷,ò r   rÁ   c                   óH   a a€ ] tR tRt oRtV3R lV 3R lltR tRtVtV ;t	# )ÚEncodecDecoderi<  z"SEANet decoder as used by EnCodec.c                ó    <€ V ^8„  d   QhRS[ /# rÃ   r	   )r   r   s   "€r   r   ÚEncodecDecoder.__annotate__?  s   ø€ ÷ +ñ +™}ñ +r   c           
     ód  <€ \         SV `  4        \        ^\        VP                  4      ,          4      p\        WP                  W!P                  ,          VP                  4      .pV\        WVP                  ,          4      .,          pVP                   Fª  pW!P                  ,          pV\        P                  ! 4       .,          pV\        WV^,          V^,          VR7      .,          p\        VP                  4       F1  pV\        W^,          VP                   V,          ^34      .,          pK3  	  V^,          pK¬  	  V\        P                  ! 4       .,          pV\        WP                  VP"                  VP$                  4      .,          p\        P&                  ! V4      V n        R# )r   rÆ   N)rB   rC   r)   r«   rÊ   r0   rÎ   rÈ   r4   r•   r   r¯   rˆ   rË   rÌ   r£   rÍ   rÇ   rÏ   r°   rÐ   )rV   rW   rÒ   rÑ   rÓ   rÔ   rÕ   rX   s   &&     €r   rC   ÚEncodecDecoder.__init__?  sa  ø€ Ü‰ÑÔÜ�aœ3˜v×7Ñ7Ó8Õ8Ó9ˆÜ˜v×'9Ñ'9¸7×EWÑEWÕ;WÐY_×YkÑYkÓlÐmˆà”+˜f°×0BÑ0BÕ&BÓCÐDÕDˆð ×-Ô-ˆEØ#×&8Ñ&8Õ8ˆMà”b—f’f“h�ZÕˆEØÜ& v¸mÈqÕ>PÐ^cÐfgÕ^gÐpuÔvðõ ˆEô ˜6×5Ñ5Ö6�ØÔ,¨VÀaÕ5GÈ&×JeÑJeÐghÕJhÐjkÐIlÓmÐnÕn’ñ 7à˜�MŠGñ .ð 	”"—&’&“(�ÕˆØ”- ×(:Ñ(:¸F×<QÑ<QÐSY×SjÑSjÓkÐlÕlˆÜ—m’m EÓ*ˆŽr   c                ó<   € V P                    F  pV! V4      pK  	  V# rš   rØ   rÙ   s   && r   r   ÚEncodecDecoder.forwardX  rÛ   r   rØ   r“   r†   s   @@r   rÝ   rÝ   <  s   ù‡ € Ù,÷+ó +÷2ò r   rÝ   c                   óT   a a€ ] tR tRt oRtV3R lV 3R lltR tR tR tRt	Vt
V ;t# )	ÚEncodecEuclideanCodebooki^  z!Codebook with Euclidean distance.c                ó    <€ V ^8„  d   QhRS[ /# rÃ   r	   )r   r   s   "€r   r   Ú%EncodecEuclideanCodebook.__annotate__a  s   ø€ ÷ 	2ñ 	2™}ñ 	2r   c                óö  <€ \         SV `  4        \        P                  ! VP                  VP
                  4      pVP                  V n        \        P                  ! \        P                  ! R .4      4      V n	        \        P                  ! \        P                  ! VP                  4      4      V n
        \        P                  ! V4      V n        \        P                  ! VP                  4       4      V n        R# )TN)rB   rC   r   ÚzerosÚcodebook_sizeÚcodebook_dimr   rT   r^   ÚinitedÚcluster_sizeÚembedÚcloneÚ	embed_avg)rV   rW   rî   rX   s   && €r   rC   Ú!EncodecEuclideanCodebook.__init__a  s™   ø€ Ü‰ÑÔÜ—’˜F×0Ñ0°&×2EÑ2EÓFˆà#×1Ñ1ˆÔä—i’i¤§¢¨d¨VÓ 4Ó5ˆŒÜŸIšI¤e§k¢k°&×2FÑ2FÓ&GÓHˆÔÜ—Y’Y˜uÓ%ˆŒ
ÜŸš 5§;¡;£=Ó1ˆŽr   c                ó4  € V P                   P                  4       pVP                  ^4      P                  ^RR7      pV^V,          V,          ,
          VP                  ^4      P                  ^ RR7      ,           ) pVP	                  RR7      P
                  pV# )r   T©Úkeepdim)r¥   r`   )rî   ÚtÚpowÚsumrt   Úindices)rV   r[   rî   Úscaled_statesÚdistÚ	embed_inds   &&    r   ÚquantizeÚ!EncodecEuclideanCodebook.quantizel  s‚   € Ø—
‘
—‘“ˆØ%×)Ñ)¨!Ó,×0Ñ0°¸DÐ0ÓAˆØ  ]Õ!2°UÕ!:Õ:¸U¿Y¹YÀq»\×=MÑ=MÈaÐY]Ð=MÓ=^Õ^Ð_ˆØ—H‘H �HÓ$×,Ñ,ˆ	ØÐr   c                óš   € VP                   pVP                  RVR,          34      pV P                  V4      pVP                  ! VRR !  pV# )r�   Nr`   )ra   Úreshaperü   Úview)rV   r[   ra   rû   s   &&  r   ÚencodeÚEncodecEuclideanCodebook.encodes  sM   € Ø×#Ñ#ˆà%×-Ñ-¨r°5¸µ9¨oÓ>ˆà—M‘M -Ó0ˆ	à—N’N E¨#¨2 JÑ/ˆ	ØÐr   c                óX   € \         P                  P                  WP                  4      pV# rš   )r   rr   Ú	embeddingrî   ©rV   rû   rü   s   && r   ÚdecodeÚEncodecEuclideanCodebook.decode}  s   € Ü—=‘=×*Ñ*¨9·j±jÓAˆØˆr   )rí   rê   rî   rð   rì   )r   r   r   r   r   rC   rü   r  r  r!   r"   r…   r†   s   @@r   rå   rå   ^  s&   ù‡ € Ù+÷	2ó 	2òò÷ò r   rå   c                   óN   a a€ ] tR tRt oRtV3R lV 3R lltR tR tRtVt	V ;t
# )ÚEncodecVectorQuantizationi‚  zQ
Vector quantization implementation. Currently supports only euclidean distance.
c                ó    <€ V ^8„  d   QhRS[ /# rÃ   r	   )r   r   s   "€r   r   Ú&EncodecVectorQuantization.__annotate__‡  s   ø€ ÷ 9ñ 9™}ñ 9r   c                óD   <€ \         SV `  4        \        V4      V n        R # rš   )rB   rC   rå   Úcodebook©rV   rW   rX   s   &&€r   rC   Ú"EncodecVectorQuantization.__init__‡  s   ø€ Ü‰ÑÔÜ0°Ó8ˆŽr   c                ób   € VP                  ^ ^^4      pV P                  P                  V4      pV# ©r�   )r    r  r  )rV   r[   Úembed_ins   && r   r  Ú EncodecVectorQuantization.encode‹  s/   € Ø%×-Ñ-¨a°°AÓ6ˆØ—=‘=×'Ñ'¨Ó6ˆØˆr   c                ób   € V P                   P                  V4      pVP                  ^ ^^4      pV# r  )r  r  r    r  s   && r   r  Ú EncodecVectorQuantization.decode�  s/   € Ø—=‘=×'Ñ'¨	Ó2ˆØ×#Ñ# A q¨!Ó,ˆØˆr   )r  )r   r   r   r   r   rC   r  r  r!   r"   r…   r†   s   @@r   r	  r	  ‚  s#   ù‡ € ñ÷9ó 9ò÷
ò r   r	  c                   ó€   a a€ ] tR tRt oRtV3R lV 3R lltRV3R lR lltRV3R lR lltV3R	 lR
 ltRt	Vt
V ;t# )ÚEncodecResidualVectorQuantizeri–  zResidual Vector Quantizer.c                ó    <€ V ^8„  d   QhRS[ /# rÃ   r	   )r   r   s   "€r   r   Ú+EncodecResidualVectorQuantizer.__annotate__™  s   ø€ ÷ oñ o™}ñ or   c                ó"  <€ \         SV `  4        VP                  V n        VP                  V n        VP                  V n        \
        P                  ! \        VP                  4       Uu. uF  p\        V4      NK  	  up4      V n	        R # u upi rš   )
rB   rC   rê   Ú
frame_rateÚnum_quantizersr   r°   rË   r	  rÐ   )rV   rW   Ú_rX   s   && €r   rC   Ú'EncodecResidualVectorQuantizer.__init__™  sn   ø€ Ü‰ÑÔØ#×1Ñ1ˆÔØ ×+Ñ+ˆŒØ$×3Ñ3ˆÔÜ—m’mÔPUÐV\×VkÑVkÔPlÓ$mÑPlÈ1Ô%>¸vÖ%FÑPlÑ$mÓnˆŽùÒ$ms   Á*Bc                ó4   <€ V ^8„  d   QhRS[ R,          RS[/# )r   Ú	bandwidthNr\   )ro   r)   )r   r   s   "€r   r   r     s    ø€ ÷ ñ ¹%À$½,ð ÑRUñ r   c           	     ó  € \         P                  ! V P                  4      V P                  ,          pV P                  pVe?   VR8”  d8   \        \        ^\         P                  ! VR,          V,          4      4      4      pV# )z:Return num_quantizers based on specified target bandwidth.rƒ   iè  )r‘   Úlog2rê   r  r  r)   rt   Úfloor)rV   r   Úbw_per_qr  s   &&  r   Ú get_num_quantizers_for_bandwidthÚ?EncodecResidualVectorQuantizer.get_num_quantizers_for_bandwidth   s`   € ä—9’9˜T×/Ñ/Ó0°4·?±?ÕBˆØ×,Ñ,ˆØÒ  Y°¤_Ü ¤ Q¬¯
ª
°9¸tÕ3CÀhÕ3NÓ(OÓ!PÓQˆNØÐr   c                ób   <€ V ^8„  d   QhRS[ P                  RS[R,          RS[ P                  /# )r   Ú
embeddingsr   Nr\   )r   r^   ro   )r   r   s   "€r   r   r  ¨  s1   ø€ ÷ ñ ¡§¡ð ¹%À$½,ð ÑRW×R^ÑR^ñ r   c                óþ   € V P                  V4      pTp. pV P                  RV  F>  pVP                  V4      pVP                  V4      pWH,
          pVP	                  V4       K@  	  \
        P                  ! V4      p	V	# )zÂ
Encode a given input tensor with the specified frame rate at the given bandwidth. The RVQ encode method sets
the appropriate number of quantizers to use and returns indices for each quantizer.
N)r%  rÐ   r  r  Úappendr   Ústack)
rV   r(  r   r  r½   Úall_indicesr¾   rø   Ú	quantizedÚout_indicess
   &&&       r   r  Ú%EncodecResidualVectorQuantizer.encode¨  s{   € ð
 ×>Ñ>¸yÓIˆØˆØˆØ—[‘[  .Ó1ˆEØ—l‘l 8Ó,ˆGØŸ™ WÓ-ˆIØÕ+ˆHØ×Ñ˜wÖ'ñ	 2ô
 —k’k +Ó.ˆØÐr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   Úcodesr\   r]   )r   r   s   "€r   r   r  ¸  s#   ø€ ÷ ñ ™EŸL™Lð ©U¯\©\ñ r   c                óÌ   € \         P                  ! RRVP                  R7      p\        V4       F1  w  r4V P                  V,          pVP                  V4      pW&,           pK3  	  V# )z7Decode the given codes to the quantized representation.rƒ   )Údevicer   )r   Úfullr3  r­   rÐ   r  )rV   r1  Úquantized_outr·   rø   r¾   r-  s   &&     r   r  Ú%EncodecResidualVectorQuantizer.decode¸  sT   € äŸ
š
 2 s°5·<±<Ô@ˆÜ# EÖ*‰JˆAØ—K‘K •NˆEØŸ™ WÓ-ˆIØ)Õ5ŠMñ +ð Ðr   )rê   r  rÐ   r  rš   )r   r   r   r   r   rC   r%  r  r  r!   r"   r…   r†   s   @@r   r  r  –  s7   ù‡ € Ù$÷oó o÷ò ÷ò ÷ ÷ ð r   r  c                   ón   a a€ ] tR tRt oRtRt]P                  ! 4       V 3R l4       tV3R lt	Rt
VtV ;t# )ÚEncodecPreTrainedModeliÂ  ÚencodecÚinput_valuesc                óp  <€ \         SV `  V4       \        V\        P                  4      '       d    \
        P                  ! VP                  4       VP                  ep   \        P                  ! VP                  VP                  VP                  ^ ,          ,          ,          4      p\
        P                  ! VP                  V) VR7       R # R # \        V\        4      '       Ed"   VP                   P                  ^ ,          p\"        P$                  ! VP                   P&                  ^ ,          \"        P(                  R7      pVP                   P*                  ^ ,          p\"        P$                  ! V^,
          V,          ^,           \"        P(                  R7      p\
        P,                  ! VP&                  V4       \
        P,                  ! VP                  V4       \
        P,                  ! VP.                  W4,
          4       R # \        V\0        4      '       d™   \
        P,                  ! VP2                  \"        P4                  ! R.4      4       \
        P6                  ! VP8                  4       \
        P6                  ! VP:                  4       \
        P6                  ! VP<                  4       R # R # )N)ÚaÚbr>   T)rB   Ú_init_weightsÚ
isinstancer   rK   ÚinitÚkaiming_normal_ÚweightÚbiasr‘   ÚsqrtÚgroupsr2   r4   Úuniform_r0   rL   r   rR   r5   rS   r6   Úcopy_rU   rå   rì   r^   Úzeros_rí   rî   rð   )rV   ÚmoduleÚkr4   r5   r6   rX   s   &&    €r   r>  Ú$EncodecPreTrainedModel._init_weightsÈ  s£  ø€ ä‰Ñ˜fÔ%Ü�fœbŸi™i×(Ò(Ü× Ò  §¡Ô/Ø�{‰{Ò&Ü—I’I˜fŸm™m¨v×/AÑ/AÀF×DVÑDVÐWXÕDYÕ/YÕZÓ[�Ü—’˜fŸk™k¨a¨R°1×5ñ 'ô ˜¤×.Ó.Ø Ÿ+™+×1Ñ1°!Õ4ˆKÜ—\’\ &§+¡+×"4Ñ"4°QÕ"7¼u¿{¹{ÔKˆFØ—{‘{×+Ñ+¨AÕ.ˆHäŸ,š,¨°a­¸8Õ'CÀaÕ'GÌuÏ{É{Ô[ˆKÜ�JŠJ�v—}‘} fÔ-Ü�JŠJ�v×)Ñ)¨;Ô7Ü�JŠJ�v×+Ñ+¨[Õ-AÖBÜ˜Ô 8×9Ò9Ü�JŠJ�v—}‘}¤e§l¢l°D°6Ó&:Ô;Ü�KŠK˜×+Ñ+Ô,Ü�KŠK˜Ÿ™Ô%Ü�KŠK˜×(Ñ(Ö)ñ	 :r   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rÃ   r	   )r   r   s   "€r   r   Ú#EncodecPreTrainedModel.__annotate__Â  s   ø‡ ‚ áÑò r   r   )r   r   r   r   Úbase_model_prefixÚmain_input_namer   Úno_gradr>  r    r!   r"   r…   r†   s   @@r   r8  r8  Â  s1   ù‡ € ð "ÐØ$€Oà
‡]‚]ƒ_ô*ó ð*÷ … r   r8  z/
    The EnCodec neural audio codec model.
    )Úcustom_introc                   óÎ   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V3R lR llt]V3R lR	 l4       tRV3R
 lR llt	RV3R lR llt
]RV3R lR ll4       tRtVtV ;t# )ÚEncodecModelià  c                ó    <€ V ^8„  d   QhRS[ /# rÃ   r	   )r   r   s   "€r   r   ÚEncodecModel.__annotate__æ  s   ø€ ÷ ñ ™}ñ r   c                ó�  <€ \         SV `  V4       Wn        \        V4      V n        \        V4      V n        \        V4      V n        \        \        P                  ! V P                  P                  4      4      V n        ^V P                  ,          V P                  P                  8w  d   \        R4      hV P                  4        R# )r   z'The codebook_size must be a power of 2.N)rB   rC   rW   rÁ   ÚencoderrÝ   Údecoderr  Ú	quantizerr)   r‘   r"  rê   Úbits_per_codebookrH   Ú	post_initr  s   &&€r   rC   ÚEncodecModel.__init__æ  sŽ   ø€ Ü‰Ñ˜Ô ØŒä% fÓ-ˆŒÜ% fÓ-ˆŒä7¸Ó?ˆŒä!$¤T§Y¢Y¨t¯{©{×/HÑ/HÓ%IÓ!JˆÔØˆd×$Ñ$Õ$¨¯©×(AÑ(AÔAÜÐFÓGÐGð 	�‰Ör   c          	      óŒ   <€ V ^8„  d   QhRS[ P                  RS[RS[S[ P                  S[ P                  R,          3,          /# )r   r:  r   r\   N)r   r^   ro   rm   )r   r   s   "€r   r   rU  ö  sD   ø€ ÷ ñ ©%¯,©,ð Á5ð ÉUÑSX×S_ÑS_Ñaf×amÑamÐptÕatÐStÕMuñ r   c                óà  € VP                   R	,          pW0P                  P                  ,          pV P                  P                  eH   VRV P                  P                  ,           8”  d&   \	        RV RV P                  P                   24      hRpV P                  P
                  '       dƒ   \        P                  ! V^RR7      VP                   ^,          ,          pVP                  ^4      P                  R	RR7      P                  4       R,           pW,          pVP                  R	^4      pV P                  V4      pV P                  P                  Wr4      pVP                  ^ ^4      pW…3# )
z¶
Encodes the given input using the underlying VQVAE. If `config.normalize` is set to `True` the input is first
normalized. The padding mask is required to compute the correct scale.
Ngñhãˆµøä>zDuration of frame (z) is longer than chunk Tró   )r¥   rô   g:Œ0âŽyE>r`   )ra   rW   Úsampling_rateÚchunk_length_sÚRuntimeErrorÚ	normalizer   r÷   rö   ÚmeanrD  r   rW  rY  r  Ú	transpose)	rV   r:  r   rd   ÚdurationÚscaleÚmonor(  r1  s	   &&&      r   Ú_encode_frameÚEncodecModel._encode_frameö  s)  € ð
 ×#Ñ# BÕ'ˆØŸK™K×5Ñ5Õ5ˆà�;‰;×%Ñ%Ò1°hÀÈÏÉ×HbÑHbÕAbÔ6bÜÐ!4°X°JÐ>UÐVZ×VaÑVa×VpÑVpÐUqÐrÓsÐsàˆØ�;‰;× × Ð Ü—9’9˜\¨1°dÔ;¸l×>PÑ>PÐQRÕ>SÕSˆDØ—H‘H˜Q“K×$Ñ$¨°TÐ$Ó:×?Ñ?ÓAÀDÕHˆEØ'Õ/ˆLØ—J‘J˜r 1Ó%ˆEà—\‘\ ,Ó/ˆ
Ø—‘×%Ñ% jÓ<ˆØ—‘  1Ó%ˆØˆ|Ðr   c                óê   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[R,          RS[R,          RS[S[ P                  S[ P                  R,          S[3,          S[,          /# )r   r:  Úpadding_maskNr   Úreturn_dictr\   )r   r^   ro   Úboolrm   r)   r%   )r   r   s   "€r   r   rU    s   ø€ ÷ OSñ OSá—l‘lðOSñ —l‘l TÕ)ðOSñ ˜4•<ð	OSñ
 ˜D•[ðOSñ 
‰u�|‰|™UŸ\™\¨DÕ0±#Ð5Õ	6Ñ9MÕ	MñOSr   c                óÂ  € Ve   TMV P                   P                  pVf   V P                   P                  ^ ,          pW0P                   P                  9  d'   \        RV RV P                   P                   R24      hVP                  w  rVpV^8  g   V^8”  d   \        RV 24      hV P                   P
                  pVf   TpTp	MV P                   P                  p	Vf&   \        P                  ! V4      P                  4       pM5VP                  VP                  ^ ,          RVP                  R,          4      p. p
. p\        ^ Wy4       Fs  pVRWÌV,           13,          P                  4       pWÑRWÌV,           13,          ,          pV P                  Wã4      w  ppV
P                  V4       VP                  V4       Ku  	  V
^ ,          P                  R,          V
R,          P                  R,          ,
          pV^ 8”  d1   \        P                  P!                  V
R,          ^ V3^ R7      pVV
R&   \        P"                  ! V
4      p
V'       g   W«V3# \%        W«V4      # )aB  
Encodes the input audio waveform into discrete codes of shape
`(nb_frames, batch_size, nb_quantizers, frame_len)`.

- `nb_frames=1` if `self.config.chunk_length=None` (as the encoder is applied on the full audio), which is the
case for the 24kHz model. Otherwise, `nb_frames=ceil(input_length/self.config.chunk_stride)`, which is the case
for the 48kHz model.
- `frame_len` is the length of each frame, which is equal to `ceil(input_length/self.config.hop_length)` if
`self.config.chunk_length=None` (e.g., for the 24kHz model). Otherwise, if `self.config.chunk_length` is
defined, `frame_len=self.config.chunk_length/self.config.hop_length`, e.g., the case for the 48kHz model with
`frame_len=150`.

Args:
    input_values (`torch.Tensor` of shape `(batch_size, channels, sequence_length)`):
        Float values of the input audio waveform.
    padding_mask (`torch.Tensor` of shape `(batch_size, channels, sequence_length)`):
        Padding mask used to pad the `input_values`.
    bandwidth (`float`, *optional*):
        The target bandwidth. Must be one of `config.target_bandwidths`. If `None`, uses the smallest possible
        bandwidth. bandwidth is represented as a thousandth of what it is, e.g. 6kbps bandwidth is represented
        as bandwidth == 6.0

Returns:
    EncodecEncoderOutput dict or a tuple containing:
    - audio_codes (`torch.LongTensor`  of shape `(nb_frames, batch_size, nb_quantizers, frame_len)`, *optional*),
    - audio_scales (list of length `nb_frames` of `torch.Tensor` of shape `(batch_size, 1)`, *optional*),
    - last_frame_pad_length (`int`, *optional*).
z)This model doesn't support the bandwidth z. Select one of Ú.z1Number of audio channels must be 1 or 2, but got .)rl   r`   )rW   rl  Útarget_bandwidthsrH   ra   Úchunk_lengthÚchunk_strider   Ú	ones_likerm  r   rË   rh  r*  r   rr   rs   r+  r%   )rV   r:  rk  r   rl  r  ÚchannelsÚinput_lengthrq  r5   Úencoded_framesÚscalesÚoffsetÚmaskÚframeÚencoded_framerf  r(   Ú
last_frames   &&&&&              r   r  ÚEncodecModel.encode  s4  € ðF &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆàÒØŸ™×5Ñ5°aÕ8ˆIØŸK™K×9Ñ9Ô9ÜØ;¸I¸;ÐFVÐW[×WbÑWb×WtÑWtÐVuÐuvÐwóð ð %1×$6Ñ$6Ñ!ˆ�\à�aŒ<˜8 aœ<ÜÐPÐQYÐPZÐ[Ó\Ð\à—{‘{×/Ñ/ˆØÒØ'ˆLØ!‰Fà—[‘[×-Ñ-ˆFàÒÜ Ÿ?š?¨<Ó8×=Ñ=Ó?‰Là'×,Ñ,¨\×-?Ñ-?ÀÕ-BÀBÈ×HZÑHZÐ[]ÕH^Ó_ˆLàˆØˆÜ˜A˜|Ö4ˆFØ  V°|Õ.CÐ%CÐ CÕD×IÑIÓKˆDØ¨¨V¸|Õ6KÐ-KÐ(KÕLÕLˆEØ#'×#5Ñ#5°eÓ#GÑ ˆM˜5Ø×!Ñ! -Ô0Ø�M‰M˜%Ö ñ 5ð !/¨qÕ 1× 7Ñ 7¸Õ ;¸nÈRÕ>P×>VÑ>VÐWYÕ>ZÕ ZÐØ  1Ô$ÜŸ™×*Ñ*¨>¸"Õ+=ÀÐCXÐ?YÐabÐ*ÓcˆJØ!+ˆN˜2ÑÜŸš ^Ó4ˆçØ"Ð,AÐBÐBÜ# NÐ<QÓRÐRr   c                óJ   <€ V ^8„  d   QhRS[ S[P                  ,          RS[/# )r   Úframesr5   )r§   r   r^   r)   )r   r   s   "€r   r   rU  _  s$   ø€ ÷ , ñ , ¡D©¯©Õ$6ð , Áñ , r   c                ól  € \        V 4      ^ 8X  d   \        R4      hV ^ ,          P                  pV ^ ,          P                  pV ^ ,          P                  RR
 pV\        V 4      ^,
          ,          V R
,          P                  R
,          ,           pV ^ ,          P                  R
,          p\
        P                  ! ^ ^V^,           W#R7      ^R
 pRVR,
          P                  4       ,
          p\
        P                  ! WRVR7      p	\
        P                  ! . VOVN5RVRV/ p
^ pV  Fa  pVP                  R
,          pV
RW»V,           13;;,          VRV V,          ,          uu&   W›W¶,           ;;; VRV ,          uuu% W±,          pKc  	  V	P                  4       ^ 8X  d   \        RV	 R	24      hW©,          # )r�   z!`frames` cannot be an empty list.N)r3  r?   g      à?r3  r?   .z7`sum_weight` minimum element must be bigger than zero: Ú`r`   )
r«   rH   r3  r?   ra   r   ÚlinspaceÚabsré   Úmin)r  r5   r3  r?   ra   Ú
total_sizeÚframe_lengthÚtime_vecrB  Ú
sum_weightÚoutrx  rz  s   &&           r   Ú_linear_overlap_addÚ EncodecModel._linear_overlap_add^  s‡  € ô( ˆv‹;˜!ÔÜÐ@ÓAÐAà˜•×!Ñ!ˆØ�q•	—‘ˆØ�q•	—‘  Ð$ˆØœs 6›{¨Q�Õ/°&¸µ*×2BÑ2BÀ2Õ2FÕFˆ
à˜a•y—‘ rÕ*ˆÜ—>’> ! Q¨°qÕ(8ÀÔUÐVWÐXZÐ[ˆØ˜ 3�×+Ñ+Ó-Õ-ˆä—[’[ À%ÔHˆ
Ü�kŠkÐI˜5ÐI *ÒI°VÐIÀ5ÑIˆØˆãˆEØ Ÿ;™; r�?ˆLØ��V |Õ3Ð3Ð3×4¸¸}ÀÐ8MÐPUÕ8UÕUÓ4Ø Õ 5Ó6¸&ÀÀ,Ð:OÕOÓ6ØÕŠFñ	 ð �>‰>Ó˜qÔ ÜÐVÐWaÐVbÐbcÐdÓeÐeàÕÐr   c                óv   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  /# )r   r1  rf  Nr\   r]   )r   r   s   "€r   r   rU  �  s6   ø€ ÷ ñ ¡5§<¡<ð ¹¿¹ÀtÕ8Kð ÑW\×WcÑWcñ r   c                ó¼   € VP                  ^ ^4      pV P                  P                  V4      pV P                  V4      pVe   WBP	                  R^^4      ,          pV# )r�   r`   )rd  rY  r  rX  r   )rV   r1  rf  r(  Úoutputss   &&&  r   Ú_decode_frameÚEncodecModel._decode_frame�  sT   € Ø—‘  1Ó%ˆØ—^‘^×*Ñ*¨5Ó1ˆ
Ø—,‘,˜zÓ*ˆØÒØ§
¡
¨2¨q°!Ó 4Õ4ˆGØˆr   c                óò   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  R,          RS[R,          RS[R,          RS[S[ P                  S[ P                  3,          S[,          /# )r   r   r'   rk  Nrl  r(   r\   )r   r   r^   rm  r)   rm   r,   )r   r   s   "€r   r   rU  •  sz   ø€ ÷ 52ñ 52á×%Ñ%ð52ñ —l‘lð52ñ —l‘l TÕ)ð	52ñ
 ˜D•[ð52ñ  # T�zð52ñ 
‰u�|‰|™UŸ\™\Ð)Õ	*Ñ-AÕ	Añ52r   c                ó*  € Ve   TMV P                   P                  pV P                   P                  pVf_   \        V4      ^8w  d   \	        R\        V4       24      hV^ ,          pV^ 8”  d   VRRV) 13,          pV P                  Wr^ ,          4      pMŸ. p	\        \        W4      4       FV  w  p
w  r{V
\        V4      ^,
          8X  d   V^ 8”  d   VRRV) 13,          pV P                  W{4      pV	P                  V4       KX  	  T P                  Y�P                   P                  ;'       g    ^4      pVeH   VP                  R,          VP                  R,          8  d   VRRVP                  R,          13,          pV'       g   V3# \        V4      # )a—  
Decodes the given frames into an output audio waveform.

Note that the output might be a bit bigger than the input. In that case, any extra steps at the end can be
trimmed.

Args:
    audio_codes (`torch.LongTensor`  of shape `(nb_frames, batch_size, nb_quantizers, frame_len)`, *optional*):
        Discrete code embeddings computed using `model.encode`.
    audio_scales (list of length `nb_frames` of `torch.Tensor` of shape `(batch_size, 1)`, *optional*):
        Scaling factor for each `audio_codes` input.
    padding_mask (`torch.Tensor` of shape `(channels, sequence_length)`):
        Padding mask used to pad the `input_values`.
    return_dict (`bool`, *optional*):
        Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
    last_frame_pad_length (`int`, *optional*):
        Integer representing the length of the padding in the last frame, which is removed during decoding.

NzExpected one frame, got .r`   )rW   rl  rq  r«   rH   r�  r­   r®   r*  rŠ  rr  ra   r,   )rV   r   r'   rk  rl  r(   rq  rz  r   Údecoded_framesr·   rf  r  s   &&&&&&       r   r  ÚEncodecModel.decode•  s†  € ð6 &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà—{‘{×/Ñ/ˆØÒÜ�;Ó 1Ô$Ü Ð#;¼CÀÓ<LÐ;MÐ!NÓOÐOØ •NˆEØ$ qÔ(Ø˜cÐ#:Ð%:Ð$:Ð#:Ð:Õ;�Ø×-Ñ-¨eÀ!µ_ÓE‰LàˆNÜ%.¬s°;Ó/MÖ%NÑ!�‘>�EØœ˜KÓ(¨1Õ,Ô,Ð1FÈÔ1JØ! #Ð'>Ð)>Ð(>Ð'>Ð">Õ?�EØ×+Ñ+¨EÓ9�Ø×%Ñ% fÖ-ñ	 &Oð  ×3Ñ3°NÇKÁK×D\ÑD\×DaÐDaÐ`aÓbˆLð Ò#¨×(:Ñ(:¸2Õ(>À×ASÑASÐTVÕAWÔ(WØ'¨Ð-E¨|×/AÑ/AÀ"Õ/EÐ-EÐ(EÕFˆLçØ �?Ð"Ü# LÓ1Ð1r   c                ó<  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P
                  R,          RS[R,          RS[R,          R	S[S[ P
                  S[ P
                  3,          S[	,          /# )
r   r:  rk  Nr   r   r'   rl  r(   r\   )
r   r   Ú
BoolTensorro   r   r^   rm  r)   rm   r   )r   r   s   "€r   r   rU  Í  s·   ø€ ÷ [Qñ [Qá×'Ñ'ð[Qñ ×&Ñ&¨Õ-ð[Qñ ˜4•<ð	[Qñ
 ×%Ñ%¨Õ,ð[Qñ —l‘l TÕ)ð[Qñ ˜D•[ð[Qñ  # T�zð[Qñ 
‰u�|‰|™UŸ\™\Ð)Õ	*©]Õ	:ñ[Qr   c                óæ  € Ve   TMV P                   P                  pVf&   \        P                  ! V4      P	                  4       pM5VP                  VP                  ^ ,          RVP                  R,          4      pVe   Vf   \        R4      hVe   Vf   \        R4      hVf   Vf   V P                  WVR4      w  rEpV P                  VVVVVR7      ^ ,          pV'       g   WH3# \        WHR7      # )a¿	  
input_values (`torch.FloatTensor` of shape `(batch_size, channels, sequence_length)`, *optional*):
    Raw audio input converted to Float and padded to the appropriate length in order to be encoded using chunks
    of length self.chunk_length and a stride of `config.chunk_stride`.
padding_mask (`torch.BoolTensor` of shape `(batch_size, channels, sequence_length)`, *optional*):
    Mask to avoid computing scaling factors on padding token indices (can we avoid computing conv on these+).
    Mask values selected in `[0, 1]`:

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

    <Tip warning={true}>

    `padding_mask` should always be passed, unless the input was truncated or not padded. This is because in
    order to process tensors effectively, the input audio should be padded so that `input_length % stride =
    step` with `step = chunk_length-stride`. This ensures that all chunks are of the same shape

    </Tip>
bandwidth (`float`, *optional*):
    The target bandwidth. Must be one of `config.target_bandwidths`. If `None`, uses the smallest possible
    bandwidth. bandwidth is represented as a thousandth of what it is, e.g. 6kbps bandwidth is represented as
    `bandwidth == 6.0`
audio_codes (`torch.LongTensor`  of shape `(nb_frames, batch_size, nb_quantizers, frame_len)`, *optional*):
    Discrete code embeddings computed using `model.encode`.
audio_scales (list of length `nb_frames` of `torch.Tensor` of shape `(batch_size, 1)`, *optional*):
    Scaling factor for each `audio_codes` input.
return_dict (`bool`, *optional*):
    Whether to return outputs as a dict.
last_frame_pad_length (`int`, *optional*):
    The length of the padding in the last frame, if any. This is used to ensure that the encoded frames can be
    outputted as a tensor. This value should be passed during decoding to ensure padding is removed from the
    encoded frames.

Examples:

```python
>>> from datasets import load_dataset
>>> from transformers import AutoProcessor, EncodecModel

>>> dataset = load_dataset("hf-internal-testing/ashraq-esc50-1-dog-example")
>>> audio_sample = dataset["train"]["audio"][0]["array"]

>>> model_id = "facebook/encodec_24khz"
>>> model = EncodecModel.from_pretrained(model_id)
>>> processor = AutoProcessor.from_pretrained(model_id)

>>> inputs = processor(raw_audio=audio_sample, return_tensors="pt")

>>> outputs = model(**inputs)
>>> audio_codes = outputs.audio_codes
>>> audio_values = outputs.audio_values
```zBYou specified `audio_codes` but did not specify the `audio_scales`zBYou specified `audio_scales` but did not specify the `audio_codes`F)rl  r(   )r   r   r`   )rW   rl  r   rs  rm  r   ra   rH   r  r  r   )	rV   r:  rk  r   r   r'   rl  r(   r   s	   &&&&&&&& r   r   ÚEncodecModel.forwardÌ  s  € ð~ &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆàÒÜ Ÿ?š?¨<Ó8×=Ñ=Ó?‰Lð (×,Ñ,¨\×-?Ñ-?ÀÕ-BÀBÈ×HZÑHZÐ[]ÕH^Ó_ˆLàÒ" |Ò';ÜÐaÓbÐbàÒ#¨Ò(;ÜÐaÓbÐbàÒ KÒ$7Ø?C¿{¹{Ø¨I°uó@Ñ<ˆKÐ'<ð —{‘{ØØØØ#Ø"7ð #ó 
ð õˆ÷ ØÐ.Ð.ä¨ÔPÐPr   )rZ  rW   rX  rW  rY  )NNNrš   )NNr�   )NNNNNr�   )r   r   r   r   rC   rh  r  r„   rŠ  r�  r  r   r   r!   r"   r…   r†   s   @@r   rS  rS  à  sx   ù‡ € ÷ó ÷ ð ÷.OSò OSðb ÷, ó ð, ÷\ò ÷52ò 52ðn ÷[Qñ [Qó ÷[Qð [Qr   rS  )$r   r‘   Údataclassesr   r   r   Ú r   r@  Úmodeling_utilsr   rM   r   r   r   Úconfiguration_encodecr
   Ú
get_loggerr   rI   r   r%   r,   ÚModuler0   rˆ   r•   r£   rÁ   rÝ   rå   r	  r  r8  rS  Ú__all__r   r   r   Ú<module>r      s”  ðñ ã Ý !ã Ý å &Ý :÷ñ õ
 1ð 
×	Ò	˜HÓ	%€ð Ø
ô	2�Kó 	2ó ó ð	2ð Ø
ô-˜;ó -ó ó ð-ð" Ø
ô2˜;ó 2ó ó ð2ô^�B—I‘Iô ^ôB6˜RŸY™Yô 6ôr�"—)‘)ô ô 7˜Ÿ™ô 7ôB�R—Y‘Yô ô>�R—Y‘Yô ôD!˜rŸy™yô !ôH §	¡	ô ô() R§Y¡Yô )ðX ô*Ð9ó *ó ð*ñ: ðôô
CQÐ)ó CQóð
CQðL
 Ð3Ð
4‚r   