+
    œ°³j@X  ã                   ó$  € ^ RI t ^ RIHt ^ RIt^ RIHt ^ RIHu Ht ^RI	H
t ^RIHt ^RIHt ^RIHtHt ^RIHt ^RIHt ^R	IHtHtHtHt ^R
IHt ^RIHt ^RI H!t! ]! RR7      ] ! R R]4      4       4       t"]! RR7      ] ! R R]4      4       4       t#]! R4       ! R R]PH                  4      4       t% ! R R]PH                  4      t& ! R R]PH                  4      t' ! R R]PH                  4      t( ! R R]PH                  4      t) ! R R ]PH                  4      t* ! R! R"]PH                  4      t+ ! R# R$]PH                  4      t,] ! R% R&]4      4       t-]! R'R7       ! R( R)]-4      4       t.]! R*R7       ! R+ R,]-]!4      4       t/. R-Ot0R# ).é    N)Ú	dataclass)Úinitialization)ÚACT2FN)Úuse_kernel_forward_from_hub)ÚBaseModelOutputWithPastÚBaseModelOutputWithPooling)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚtorch_compilable_check)Ú	AutoModel©ÚVibeVoiceConfig)ÚVibeVoiceGenerationMixinzDBase class for VibeVoice outputs, with hidden states and attentions.©Úcustom_introc                   ó4   a € ] tR t^(t o RtRtV 3R ltRtV tR# )Ú VibeVoiceBaseModelOutputWithPastz½
audio_features (`torch.FloatTensor` of shape `(batch_size, sequence_length, feature_size)`, *optional*):
    Extracted audio features that can be used for conditioning the language model.
Nc                óH   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   # )é   NÚaudio_features©ÚtorchÚFloatTensor)ÚformatÚ__classdict__s   "€Úq/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/vibevoice/modeling_vibevoice.pyÚ__annotate__Ú-VibeVoiceBaseModelOutputWithPast.__annotate__(   s   ø‡ ‚ ñ ×%Ñ%¨Õ,Ñ3ò ó    © )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r   (   s   ø‡ € ñð
 04€N÷ ƒ r"   r   z(VibeVoice causal language model outputs.c                   ó<   a € ] tR t^3t o RtRtRtRtV 3R ltRt	V t
R# )ÚVibeVoiceCausalLMOutputWithPasta  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
    Language modeling loss (for next-token prediction).
logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.vocab_size)`):
    Prediction scores of the language modeling head (scores for each vocabulary token before SoftMax).
audio_features (`torch.FloatTensor` of shape `(batch_size, sequence_length, feature_size)`, *optional*):
    Extracted audio features that can be used for conditioning the language model.
Nc                ó¤   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   # )r   NÚlossÚlogitsr   r   )r   r   s   "€r   r    Ú,VibeVoiceCausalLMOutputWithPast.__annotate__3   sM   ø‡ ‚ ñ ×
Ñ
˜dÕ
"Ñ)ñ ñ ×Ñ Õ$Ñ+ñ ñ ×%Ñ%¨Õ,Ñ3ò r"   r#   )r$   r%   r&   r'   r(   r0   r1   r   r)   r*   r+   r,   s   @r   r.   r.   3   s"   ø‡ € ñð &*€DØ'+€FØ/3€N÷ ƒ r"   r.   ÚRMSNormc                   óZ   a a€ ] tR t^Dt oRV3R lV 3R llltV3R lR ltR tRtVtV ;t	# )ÚVibeVoiceRMSNormc                ó$   <€ V ^8„  d   QhRS[ RR/# )r   ÚepsÚreturnN)Úfloat)r   r   s   "€r   r    ÚVibeVoiceRMSNorm.__annotate__F   s   ø€ ÷ $ñ $©ð $¸$ñ $r"   c                óŽ   <€ \         SV `  4        \        P                  ! \        P
                  ! V4      4      V n        W n        R# )z/
VibeVoiceRMSNorm is equivalent to T5LayerNorm
N)ÚsuperÚ__init__ÚnnÚ	Parameterr   ÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizer7   Ú	__class__s   &&&€r   r=   ÚVibeVoiceRMSNorm.__init__F   s/   ø€ ô 	‰ÑÔÜ—l’l¤5§:¢:¨kÓ#:Ó;ˆŒØ #Ör"   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   Úhidden_statesr8   ©r   ÚTensor)r   r   s   "€r   r    r:   N   s#   ø€ ÷ ;ñ ;¡U§\¡\ð ;±e·l±lñ ;r"   c                ó:  € VP                   pVP                  \        P                  4      pVP	                  ^4      P                  RRR7      pV\        P                  ! W0P                  ,           4      ,          pV P                  VP                  V4      ,          # )r   T)Úkeepdiméÿÿÿÿ)	ÚdtypeÚtor   Úfloat32ÚpowÚmeanÚrsqrtrB   rA   )rC   rI   Úinput_dtypeÚvariances   &&  r   ÚforwardÚVibeVoiceRMSNorm.forwardN   sw   € Ø#×)Ñ)ˆØ%×(Ñ(¬¯©Ó7ˆØ ×$Ñ$ QÓ'×,Ñ,¨R¸Ð,Ó>ˆØ%¬¯ª°H×?TÑ?TÕ4TÓ(UÕUˆØ�{‰{˜]×-Ñ-¨kÓ:Õ:Ð:r"   c                ó^   € \        V P                  P                  4       R V P                   2# )z, eps=)ÚtuplerA   ÚshaperB   )rC   s   &r   Ú
extra_reprÚVibeVoiceRMSNorm.extra_reprU   s*   € Ü˜Ÿ™×)Ñ)Ó*Ð+¨6°$×2GÑ2GÐ1HÐIÐIr"   )rB   rA   )ç�íµ ÷Æ°>)
r$   r%   r&   r'   r=   rW   r\   r*   r+   Ú__classcell__©rE   r   s   @@r   r5   r5   D   s%   ù‡ € ÷$õ $÷;ð ;÷Jò Jr"   r5   c                   óH   a a€ ] tR t^Yt oV 3R lt]R 4       tR tRtVt	V ;t
# )Ú)VibeVoiceDiffusionHeadSinusoidalEmbeddingc                óˆ   <€ \         SV `  4        Wn        \        P                  ! V P                  V4      R R7      V n        R# )F)Ú
persistentN)r<   r=   Úconfigr>   ÚBufferÚcompute_default_freqÚfreq©rC   re   rE   s   &&€r   r=   Ú2VibeVoiceDiffusionHeadSinusoidalEmbedding.__init__Z   s0   ø€ Ü‰ÑÔØŒÜ—I’I˜d×7Ñ7¸Ó?ÈEÔRˆŽ	r"   c                óö   € V P                   ^,          p\        P                  ! \        P                  ! V P
                  4      ) \        P                  ! V\        P                  R7      ,          V,          4      # )r   )rO   )Úfrequency_embedding_sizer   ÚexpÚmathÚlogÚdiffusion_max_periodÚarangerQ   )re   Údims   & r   rg   Ú>VibeVoiceDiffusionHeadSinusoidalEmbedding.compute_default_freq_   sP   € à×-Ñ-°Õ2ˆÜ�yŠyœ$Ÿ(š( 6×#>Ñ#>Ó?Ð?Ä%Ç,Â,ÈsÔZ_×ZgÑZgÔBhÕhÐknÕnÓoÐor"   c                ó  € VR,          P                  4       V P                  R,          P                  VP                  4      ,          p\        P
                  ! \        P                  ! V4      \        P                  ! V4      .RR7      pV# )ºNNNN©rr   ©ru   NrN   )r9   rh   rP   Údevicer   ÚcatÚcosÚsin)rC   Ú	timestepsrh   Ú	embeddings   &&  r   rW   Ú1VibeVoiceDiffusionHeadSinusoidalEmbedding.forwardd   s^   € Ø˜Õ!×'Ñ'Ó)¨D¯I©I°d­O×,>Ñ,>¸y×?OÑ?OÓ,PÕPˆÜ—I’IœuŸyšy¨›´·	²	¸$³Ð@ÀbÔIˆ	ØÐr"   )re   rh   )r$   r%   r&   r'   r=   Ústaticmethodrg   rW   r*   r+   r_   r`   s   @@r   rb   rb   Y   s+   ù‡ € õSð
 ñpó ðp÷ò r"   rb   c                   óD   a a€ ] tR t^jt oV 3R ltV3R lR ltRtVtV ;t# )ÚVibeVoiceDiffusionHeadMLPc                ó0  <€ \         SV `  4        Wn        \        VP                  ,          V n        \        P                  ! VP                  VP                  R R7      V n
        \        P                  ! VP                  VP                  R R7      V n        R# ©F©ÚbiasN)r<   r=   re   r   Ú
hidden_actÚactivation_fnr>   ÚLinearrl   rD   Úfc1Úfc2ri   s   &&€r   r=   Ú"VibeVoiceDiffusionHeadMLP.__init__k   sg   ø€ Ü‰ÑÔØŒÜ# F×$5Ñ$5Õ6ˆÔÜ—9’9˜V×<Ñ<¸f×>PÑ>PÐW\Ô]ˆŒÜ—9’9˜V×/Ñ/°×1CÑ1CÈ%ÔPˆŽr"   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rH   rJ   )r   r   s   "€r   r    Ú&VibeVoiceDiffusionHeadMLP.__annotate__r   s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r"   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# ©N)r‰   r‡   rŠ   )rC   rI   s   &&r   rW   Ú!VibeVoiceDiffusionHeadMLP.forwardr   s4   € ØŸ™ Ó/ˆØ×*Ñ*¨=Ó9ˆØŸ™ Ó/ˆØÐr"   )r‡   re   r‰   rŠ   ©	r$   r%   r&   r'   r=   rW   r*   r+   r_   r`   s   @@r   r�   r�   j   s   ù‡ € õQ÷÷ ð r"   r�   c                   ó8   a a€ ] tR t^yt oV 3R ltR tRtVtV ;t# )ÚVibeVoiceMLPc                ó  <€ \         SV `  4        Wn        VP                  V n        VP                  V n        \
        P                  ! V P                  V P                  VP                  R 7      V n        \
        P                  ! V P                  V P                  VP                  R 7      V n	        \
        P                  ! V P                  V P                  VP                  R 7      V n
        \        VP                  ,          V n        R# )r„   N)r<   r=   re   rD   Úintermediate_sizer>   rˆ   Úmlp_biasÚ	gate_projÚup_projÚ	down_projr   r†   Úact_fnri   s   &&€r   r=   ÚVibeVoiceMLP.__init__z   s¶   ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ!'×!9Ñ!9ˆÔÜŸš 4×#3Ñ#3°T×5KÑ5KÐRX×RaÑRaÔbˆŒÜ—y’y ×!1Ñ!1°4×3IÑ3IÐPV×P_ÑP_Ô`ˆŒÜŸš 4×#9Ñ#9¸4×;KÑ;KÐRX×RaÑRaÔbˆŒÜ˜V×.Ñ.Õ/ˆŽr"   c                ó�   € V P                  V P                  V P                  V4      4      V P                  V4      ,          4      pV# r�   )r™   rš   r—   r˜   )rC   Úxr™   s   && r   rW   ÚVibeVoiceMLP.forward„   s6   € Ø—N‘N 4§;¡;¨t¯~©~¸aÓ/@Ó#AÀDÇLÁLÐQRÃOÕ#SÓTˆ	ØÐr"   )rš   re   r™   r—   rD   r•   r˜   r‘   r`   s   @@r   r“   r“   y   s   ù‡ € õ0÷ò r"   r“   c                   ó8   a a€ ] tR t^‰t oV 3R ltR tRtVtV ;t# )Ú"VibeVoiceDiffusionHeadAdaLayerNormc                ó\  <€ \         SV `  4        ^V n        \        V4      V n        \        VP                  VP                  R7      V n        \        VP                  ,          V n        \        P                  ! VP                  VP                  V P                  ,          RR7      V n        R# )é   ©r7   Fr„   N)r<   r=   Ú
num_chunksr“   Úffnr5   rD   Úrms_norm_epsÚnormr   r†   rš   r>   rˆ   Úlinearri   s   &&€r   r=   Ú+VibeVoiceDiffusionHeadAdaLayerNorm.__init__Š   sw   ø€ Ü‰ÑÔØˆŒÜ Ó'ˆŒÜ$ V×%7Ñ%7¸V×=PÑ=PÔQˆŒ	Ü˜V×.Ñ.Õ/ˆŒÜ—i’i × 2Ñ 2°F×4FÑ4FÈÏÉÕ4XÐ_dÔeˆŽr"   c                ó
  € V P                  V P                  V4      4      P                  V P                  RR7      w  r4pV P	                  V4      ^V,           ,          V,           pWV P                  V4      ,          ,           pV# )é   rv   rN   )r¨   rš   Úchunkr¤   r§   r¥   )rC   rI   Ú	conditionÚ	shift_ffnÚ	scale_ffnÚgate_ffnÚmodulated_hidden_statess   &&&    r   rW   Ú*VibeVoiceDiffusionHeadAdaLayerNorm.forward’   sp   € Ø)-¯©°T·[±[ÀÓ5KÓ)L×)RÑ)RÐSW×SbÑSbÐhjÐ)RÓ)kÑ&ˆ	˜hØ"&§)¡)¨MÓ":¸aÀ)½mÕ"LÈyÕ"XÐØ%°4·8±8Ð<SÓ3TÕ(TÕTˆØÐr"   )rš   r¥   r¨   r§   r¤   r‘   r`   s   @@r   r    r    ‰   s   ù‡ € õf÷ò r"   r    c                   ó8   a a€ ] tR t^™t oV 3R ltR tRtVtV ;t# )Ú VibeVoiceDiffusionHeadFinalLayerc                ób  <€ \         SV `  4        ^V n        VP                  V n        \        P
                  ! VP                  V P                  VP                  ,          RR7      V n        \        VP                  ,          V n
        \        P
                  ! VP                  VRR7      V n        R# )r   Fr„   N)r<   r=   r¤   r¦   r>   rˆ   rD   Úlinear_1r   r†   rš   Úlinear_2)rC   re   Úoutput_sizerE   s   &&&€r   r=   Ú)VibeVoiceDiffusionHeadFinalLayer.__init__š   sy   ø€ Ü‰ÑÔØˆŒØ"×/Ñ/ˆÔÜŸ	š	 &×"4Ñ"4°d·o±oÈ×HZÑHZÕ6ZÐafÔgˆŒÜ˜V×.Ñ.Õ/ˆŒÜŸ	š	 &×"4Ñ"4°kÈÔNˆŽr"   c                ó8  € V P                  V P                  V4      4      P                  V P                  RR7      w  r4\        P
                  ! WP                  R,          3V P                  R7      pV^V,           ,          V,           pV P                  V4      pV# )r«   rv   r£   rN   )	r¶   rš   r¬   r¤   ÚFÚrms_normr[   r¦   r·   )rC   rI   r­   ÚshiftÚscaleÚnormeds   &&&   r   rW   Ú(VibeVoiceDiffusionHeadFinalLayer.forward¢   s{   € Ø—}‘} T§[¡[°Ó%;Ó<×BÑBÀ4Ç?Á?ÐXZÐBÓ[‰ˆÜ—’˜M×,?Ñ,?ÀÕ,CÐ+EÈ4×K\ÑK\Ô]ˆØ ! e¥)Õ,¨uÕ4ˆØŸ™ mÓ4ˆØÐr"   )rš   r¶   r·   r¤   r¦   r‘   r`   s   @@r   r´   r´   ™   s   ù‡ € õO÷ò r"   r´   c                   ó8   a a€ ] tR t^ªt oV 3R ltR tRtVtV ;t# )ÚVibeVoiceDiffusionHeadc                óú  <€ \         SV `  4        \        P                  ! VP                  VP
                  R R7      V n        \        P                  ! VP
                  VP
                  R R7      V n        \        V4      V n	        \        V4      V n        \        P                  ! \        VP                  4       Uu. uF  p\        V4      NK  	  up4      V n        \#        WP                  R7      V n        R# u upi )Fr„   )r¸   N)r<   r=   r>   rˆ   Úlatent_sizerD   Únoisy_images_projÚ	cond_projrb   Útimestep_embeddingr�   Útimestep_projÚ
ModuleListÚrangeÚnum_hidden_layersr    Úlayersr´   Úfinal_layer)rC   re   Ú_rE   s   && €r   r=   ÚVibeVoiceDiffusionHead.__init__«   s»   ø€ Ü‰ÑÔÜ!#§¢¨6×+=Ñ+=¸v×?QÑ?QÐX]Ô!^ˆÔÜŸš 6×#5Ñ#5°v×7IÑ7IÐPUÔVˆŒÜ"KÈFÓ"SˆÔÜ6°vÓ>ˆÔÜ—m’mÜAFÀv×G_ÑG_ÔA`ÓaÑA`¸AÔ/°Ö7ÑA`Ñaó
ˆŒô <¸F×PbÑPbÔcˆÖùò bs   Â;C8c                ó(  € V P                  V4      pV P                  V4      P                  VP                  4      pV P	                  V4      pV P                  V4      pW5,           pV P                   F  pV! WC4      pK  	  V P                  WC4      pV# )zL
Forward pass of the prediction head. Returns the predicted noise/velocity.
)rÅ   rÇ   rP   rO   rÈ   rÆ   rÌ   rÍ   )rC   Únoisy_imagesr|   r­   rI   Úembedded_timestepsÚlayers   &&&&   r   rW   ÚVibeVoiceDiffusionHead.forward¶   sŠ   € ð ×.Ñ.¨|Ó<ˆØ!×4Ñ4°YÓ?×BÑBÀ9Ç?Á?ÓSÐØ!×/Ñ/Ð0BÓCÐØ—N‘N 9Ó-ˆ	ØÕ2ˆ	Ø—[”[ˆEÙ! -Ó;ŠMñ !à×(Ñ(¨ÓBˆØÐr"   )rÆ   rÍ   rÌ   rÅ   rÇ   rÈ   r‘   r`   s   @@r   rÂ   rÂ   ª   s   ù‡ € õ	d÷ò r"   rÂ   c                   ó8   a a€ ] tR t^Åt oV 3R ltR tRtVtV ;t# )ÚVibeVoiceMultiModalProjectorc                ó´   <€ \         SV `  4        \        P                  ! W4      V n        \        VR R7      V n        \        P                  ! W"4      V n        R# )r^   r£   N)r<   r=   r>   rˆ   r¶   r5   Úactr·   )rC   Ú	input_dimÚ
output_dimrE   s   &&&€r   r=   Ú%VibeVoiceMultiModalProjector.__init__Æ   s<   ø€ Ü‰ÑÔÜŸ	š	 )Ó8ˆŒÜ# J°DÔ9ˆŒÜŸ	š	 *Ó9ˆŽr"   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r�   )r¶   rØ   r·   )rC   r   rI   s   && r   rW   Ú$VibeVoiceMultiModalProjector.forwardÌ   s2   € ØŸ™ nÓ5ˆØŸ™ Ó/ˆØŸ™ mÓ4ˆØÐr"   )rØ   r¶   r·   r‘   r`   s   @@r   rÖ   rÖ   Å   s   ù‡ € õ:÷ò r"   rÖ   c                   ón   a a€ ] tR t^Ót oRtRtRtR.tR.tRt	Rt
RtRtRtRtV 3R ltV3R ltRtVtV ;t# )	ÚVibeVoicePreTrainedModelÚmodelTrÂ   Úpast_key_valuesc                ó–  <€ \         SV `  V4       \        VR 4      '       d"   \        P                  ! VP
                  R4       \        VR4      '       d"   \        P                  ! VP                  R4       \        V\        4      '       d=   \        P                  ! VP                  VP                  VP                  4      4       R# R# )Úlatent_scaling_factorç      ð?Úlatent_bias_factorç        N)r<   Ú_init_weightsÚhasattrÚinitÚ	constant_rã   rå   Ú
isinstancerb   Úcopy_rh   rg   re   )rC   ÚmodulerE   s   &&€r   rç   Ú&VibeVoicePreTrainedModel._init_weightsâ   s‰   ø€ Ü‰Ñ˜fÔ%Ü�6Ð2×3Ò3Ü�NŠN˜6×7Ñ7¸Ô=Ü�6Ð/×0Ò0Ü�NŠN˜6×4Ñ4°cÔ:Ü�fÔG×HÒHÜ�JŠJ�v—{‘{ F×$?Ñ$?ÀÇÁÓ$NÖOñ Ir"   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r   re   r   )r   r   s   "€r   r    Ú%VibeVoicePreTrainedModel.__annotate__Ó   s   ø‡ ‚ áÑò r"   r#   )ÚaudioÚtext)r$   r%   r&   r'   Úbase_model_prefixÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_supports_cache_classÚ_supports_attention_backendÚ_can_compile_fullgraphrç   r)   r*   r+   r_   r`   s   @@r   rß   rß   Ó   s[   ù‡ € ð  ÐØ(ÐØ&*Ð#Ø1Ð2ÐØ#4Ð"5ÐØÐØ€NØÐØ ÐØ"&ÐØ!ÐõP÷ … r"   rß   zw
    The VibeVoice model which consists of audio tokenizers and an LLM backbone, without a language modeling head.
    c                   ó¢   a a€ ] tR t^ìt oV 3R lt]]! RR7      V3R lR l4       4       tV3R lR lt]]RV3R lR	 ll4       4       t	R
t
VtV ;t# )ÚVibeVoiceModelc                óø  <€ \         SV `  V4       \        P                  ! VP                  4      V n        \        P                  ! VP                  4      V n        \        VP                  P                  VP                  P                  4      V n
        \        P                  ! VP                  4      V n        \        VP                  P                  VP                  P                  4      V n        \        VP                  4      V n        \"        P$                  ! \&        P(                  ! R 4      4      V n        \"        P$                  ! \&        P(                  ! R4      4      V n        V P/                  4        R# )rä   ræ   N)r<   r=   r   Úfrom_configÚaudio_configÚaudio_towerÚtext_configÚlanguage_modelrÖ   rD   Úmulti_modal_projectorÚsemantic_model_configÚsemantic_tokenizer_encoderÚsemantic_connectorrÂ   Údiffusion_head_configÚdiffusion_headr>   r?   r   Útensorrã   rå   Ú	post_initri   s   &&€r   r=   ÚVibeVoiceModel.__init__ò   s  ø€ Ü‰Ñ˜Ô Ü$×0Ò0°×1DÑ1DÓEˆÔÜ'×3Ò3°F×4FÑ4FÓGˆÔÜ%AØ×Ñ×+Ñ+¨V×-?Ñ-?×-KÑ-Kó&
ˆÔ"ô +4×*?Ò*?À×@\Ñ@\Ó*]ˆÔ'Ü">Ø×(Ñ(×4Ñ4°f×6HÑ6H×6TÑ6Tó#
ˆÔô 5°V×5QÑ5QÓRˆÔÜ%'§\¢\´%·,²,¸sÓ2CÓ%DˆÔ"Ü"$§,¢,¬u¯|ª|¸CÓ/@Ó"AˆÔØ�‰Ör"   zÁThis method is used to get the audio embeddings (that replace placeholder audio tokens in the input sequence) and the acoustic features (used as diffusion target) from the input audio waveform.r   c          	      óz   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[,          RS[S[,          /# )r   Úinput_valuesÚpadding_maskÚkwargsr8   )r   r   rK   r
   r   rZ   r   )r   r   s   "€r   r    ÚVibeVoiceModel.__annotate__  sI   ø€ ÷ 
ñ 
á×'Ñ'ð
ñ —l‘lð
ñ Ñ+Õ,ð	
ñ
 
Ñ+Õ	+ñ
r"   c                ón  € \         P                  ! 4       ;_uu_ 4        V P                  P                  VRR7      P                  pRRR4       XV P
                  P                  VP                  4      ,          pW@P                  P                  VP                  4      ,          p\         P                  ! VP                  RR7      V P                  P                  P                  ,          4      P                  \         P                  4      p\         P                  ! VP!                  4       VP                  R7      VR,          8  pV P#                  V4      p\%        WBP                  VP                  4      ,          WbP                  VP                  4      ,          R7      #   + '       g   i     ELf; i)	zÔ
input_values (`torch.FloatTensor`):
    Float values of (normalized) audio waveform.
padding_mask (`torch.Tensor` of shape `(batch_size, padded_audio_length)`):
    Padding mask to remove padded parts of audio.
T)ÚsampleNrv   )rx   )Úlast_hidden_stateÚpooler_outputrN   rw   )r   Úno_gradr  ÚencodeÚlatentsrå   rP   rx   rã   ÚceilÚsumre   r  Ú
hop_lengthÚint64rq   Úmaxr  r   )rC   r  r  r  Úacoustic_featuresÚnum_audio_tokensr  s   &&&,   r   Úget_audio_featuresÚ!VibeVoiceModel.get_audio_features  s@  € ô& �]Š]�_�_Ø $× 0Ñ 0× 7Ñ 7¸ÈTÐ 7Ó R× ZÑ ZÐ÷ à˜T×4Ñ4×7Ñ7Ð8I×8PÑ8PÓQÕQÐØ×7Ñ7×:Ñ:Ð;L×;SÑ;SÓTÕTÐô !Ÿ:š: l×&6Ñ&6¸2Ð&6Ó&>ÀÇÁ×AYÑAY×AdÑAdÕ&dÓe×hÑhÔin×itÑitÓuÐÜ—|’|Ð$4×$8Ñ$8Ó$:ÐCS×CZÑCZÔ[Ð^nÐovÕ^wÑwˆà×2Ñ2Ð3DÓEˆÜ)Ø/·±Ð@Q×@XÑ@XÓ0YÕZØ'¯©¸×8LÑ8LÓ(MÕNô
ð 	
÷ �_ˆ_ús   ž(F#Æ#F4	c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   Ú	input_idsÚinputs_embedsr   )r   Ú
LongTensorr   )r   r   s   "€r   r    r  $  s7   ø€ ÷ "ñ "Ù×)Ñ)ð"Ù:?×:KÑ:Kð"Ù]b×]nÑ]nñ"r"   c           
     ó@  € Vfo   W P                  4       ! \        P                  ! RV P                  P                  \        P
                  VP                  R7      4      8H  pVP                  R4      pMWP                  P                  8H  pVP                  4       pVP                  ^ ,          pVP                  R4      P                  V4      P                  VP                  4      p\        W$,          P                  4       VP                  4       8H  RV RV 24       V# )z×
Obtains multimodal placeholder mask from `input_ids` or `inputs_embeds`, and checks that the placeholder token count is
equal to the length of multimodal features. If the lengths are different, an error is raised.
©rO   rx   z6Audio features and audio tokens do not match, tokens: z, features: r#   rN   )Úget_input_embeddingsr   Úfullre   Úaudio_token_idÚlongrx   Úallr  r[   Ú	unsqueezeÚ	expand_asrP   r   Únumel)rC   r%  r&  r   Úspecial_audio_maskÚn_audio_tokensÚn_audio_featuress   &&&&   r   Úget_placeholder_maskÚ#VibeVoiceModel.get_placeholder_mask$  sþ   € ð ÒØ!.×2KÑ2KÔ2MÜ—
’
˜2˜tŸ{™{×9Ñ9ÄÇÁÐTa×ThÑThÔió3ñ "Ðð "4×!7Ñ!7¸Ó!;Ñà!*¯k©k×.HÑ.HÑ!HÐà+×/Ñ/Ó1ˆØ)×/Ñ/°Õ2ÐØ/×9Ñ9¸"Ó=×GÑGÈÓV×YÑYÐZg×ZnÑZnÓoÐÜØÕ-×3Ñ3Ó5¸×9MÑ9MÓ9OÑOØDÀ^ÐDTÐT`ÐaqÐ`rÐsô	
ð "Ð!r"   c                óØ   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[S[,          RS[S[,          /# )r   r%  r&  Nr  r  r  r8   )r   r'  r   Ú
BoolTensorr
   r   rZ   r   )r   r   s   "€r   r    r  >  s‚   ø€ ÷ Zñ Zá×#Ñ#ðZñ ×(Ñ(¨4Õ/ðZñ ×'Ñ'¨$Õ.ð	Zñ
 ×&Ñ&¨Õ-ðZñ Ñ+Õ,ðZñ 
Ñ(Õ	(ñZr"   c                óP  € Vf   V P                  4       ! V4      pRpVeg   V P                  W44      pVP                  pVP                  pV P	                  WVR7      p	VP                  W˜P                  VP                  4      4      pV P                  ! RRV/VB p
\        RRV/V
B # )z
padding_mask (`torch.Tensor` of shape `(batch_size, padded_audio_length)`):
    Padding mask to remove padded parts of audio.
N)r&  r   r&  r   r#   )
r*  r"  r  r  r5  Úmasked_scatterrP   rx   r  r   )rC   r%  r&  r  r  r  r   Úaudio_outputsÚaudio_embedsr2  Úoutputss   &&&&&,     r   rW   ÚVibeVoiceModel.forward<  sº   € ð Ò Ø ×5Ñ5Ô7¸	ÓBˆMàˆØÒ#Ø ×3Ñ3°LÓOˆMØ(×6Ñ6ˆLØ*×<Ñ<ˆNð "&×!:Ñ!:ØÀ|ð ";ó "Ðð *×8Ñ8Ð9KÏ_É_Ð]j×]qÑ]qÓMrÓsˆMà×%Ò%ÑL°MÐLÀVÑLˆÜ/ÑY¸~ÐYÐQXÑYÐYr"   )r  r  r  rå   rã   r  r	  r  )NNNN)r$   r%   r&   r'   r=   r   r   r"  r5  rW   r*   r+   r_   r`   s   @@r   rÿ   rÿ   ì   se   ù‡ € õð  Ùðnô÷
ó	ó ð

÷:"ð "ð0 Ø÷Zñ Zó ó ÷Zð Zr"   rÿ   zv
    The VibeVoice model, which consists of a language model, audio tokenizers, connectors, and a diffusion head.
    c                   óˆ   a a€ ] tR tRt oRR/tRR/tV 3R lt]V3R lR l4       t]	]
RV3R	 lR
 ll4       4       tRtVtV ;t# )Ú!VibeVoiceForConditionalGenerationi]  zlm_head.weightz(model.language_model.embed_tokens.weightÚlm_headÚcolwise_gather_outputc                óò   <€ \         SV `  V4       \        V4      V n        \        P
                  ! VP                  P                  VP                  P                  R R7      V n	        V P                  4        R# rƒ   )r<   r=   rÿ   rà   r>   rˆ   r  rD   Ú
vocab_sizerA  r  ri   s   &&€r   r=   Ú*VibeVoiceForConditionalGeneration.__init__f  sS   ø€ Ü‰Ñ˜Ô Ü# FÓ+ˆŒ
Ü—y’y ×!3Ñ!3×!?Ñ!?À×ASÑAS×A^ÑA^ÐejÔkˆŒØ�‰Ör"   c                ó”   <€ V ^8„  d   QhRS[ P                  RS[P                  RS[P                  RS[RS[RS[RS[P                  /# )r   r  r   Úcondition_featuresÚnoise_schedulerÚddpm_batch_multiplierÚnum_diffusion_stepsr8   )r>   ÚModuler   r   ÚobjectÚint)r   r   s   "€r   r    Ú.VibeVoiceForConditionalGeneration.__annotate__m  se   ø€ ÷ *ñ *ÙŸ	™	ð*á×)Ñ)ð*ñ "×-Ñ-ð*ñ  ð	*ñ
  #ð*ñ !ð*ñ 
×	Ñ	ñ*r"   c                ó¾  € VP                   w  rgVP                  V^ R7      pVP                  V^ R7      p	\        P                  ! Wd,          V3VP                  VP
                  R7      p
\        P                  ! \        P                  ! V4      Wd,          RR7      P                  VP                  4      pVP                  WŠV4      pV ! WËP                  V4      V	4      pVP                  P                  VP                  VP
                  R7      pVP                  P                  VP                  VP
                  R7      pWë,          P                  4       P                  R	4      pWû,          P                  4       P                  R	4      pWê,          Wø,          ,
          P                  VP                  4      p\        P                  P                   P#                  VP%                  4       VP%                  4       RR7      pV^ 8”  d'   V^ 8”  d    V^ 8”  d   VWt,          V,          ,          pV# \        P&                  ! R
RVP
                  VP                  R7      pV# )r   rv   )rx   rO   T)Úreplacementr  )Ú	reductionræ   r)  rN   r#   )r[   Úrepeat_interleaver   Úrandnrx   rO   Úmultinomialr@   rP   Ú	add_noiseÚtype_asÚalpha_tÚsigma_tÚflattenr/  r>   Ú
functionalÚmse_lossr9   r+  )r  r   rG  rH  rI  rJ  Ú	audio_lenrÄ   Úaudio_features_repeatedÚcondition_features_repeatedÚnoiser|   Únoisy_audio_featuresÚmodel_outputrW  rX  ÚtargetÚdiffusion_losss   &&&&&&            r   Úcompute_diffusion_lossÚ8VibeVoiceForConditionalGeneration.compute_diffusion_lossl  s  € ð "0×!5Ñ!5Ñˆ	Ø"0×"BÑ"BÐCXÐ^_Ð"BÓ"`ÐØ&8×&JÑ&JÐK`ÐfgÐ&JÓ&hÐ#ô —’ØÕ.°Ð<Ø!×(Ñ(Ø ×&Ñ&ô
ˆô
 ×%Ò%Ü�JŠJÐ*Ó+ØÕ-Øô
÷ ‰"ˆ^×"Ñ"Ó
#ð	 	ð
  /×8Ñ8Ð9PÐYbÓcÐñ &Ø ×"3Ñ"3°NÓ"CÐE`ó
ˆð
 "×)Ñ)×,Ñ,°N×4IÑ4IÐQ_×QeÑQeÐ,ÓfˆØ!×)Ñ)×,Ñ,°N×4IÑ4IÐQ_×QeÑQeÐ,ÓfˆØÕ$×,Ñ,Ó.×8Ñ8¸Ó<ˆØÕ$×,Ñ,Ó.×8Ñ8¸Ó<ˆØ•/ GÕ$EÕE×IÑIÈ,×J]ÑJ]Ó^ˆäŸ™×,Ñ,×5Ñ5°l×6HÑ6HÓ6JÈFÏLÉLËNÐfkÐ5ÓlˆØ˜Œ?Ð4°qÔ8¸YÈ¼]Ø+¨{Õ/RÐU^Õ/^Õ_ˆNð Ðô #ŸZšZ¨¨C°~×7KÑ7KÐTb×TiÑTiÔjˆNØÐr"   c                óH  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[S[,          RS[ P                  R,          RS[ P
                  R,          RS[ P
                  R,          R	S[R,          R
S[RS[RS[S[,          /# )r   r%  r&  NÚlabelsÚlogits_to_keepr  r  Úacoustic_loss_maskrH  rI  rJ  r8   )	r   r'  r   rM  Úslicer8  rL  rZ   r.   )r   r   s   "€r   r    rN  ›  sÞ   ø€ ÷ HTñ HTá×#Ñ#ðHTñ ×(Ñ(¨4Õ/ðHTñ × Ñ  4Õ'ð	HTñ
 ™e�ðHTñ ×'Ñ'¨$Õ.ðHTñ ×&Ñ&¨Õ-ðHTñ "×,Ñ,¨tÕ3ðHTñ   $�ðHTñ  #ðHTñ !ðHTñ 
Ñ0Õ	0ñHTr"   c                óŠ  € V P                   ! RRVRVRVRV/VB pVP                  p\        V\        4      '       d   \	        V) R4      MTpV P                  VRVR3,          4      pRpVe-   V P                  ! RRVRVR	V P                  P                  /VB pVEe   VP                  Ee
   V P                  P                  R
8”  dï   Vf   V P                  V P                  4      pVP                  pW×P                  VP                  4      ,          P                  VP                  4      pV P                  V P                   P                   VVVV	V
4      p^V P                  P                  ,
          V,          V P                  P                  VP                  VP                  4      ,          ,           p\#        RRVRV/VB # )aZ  
input_values (`torch.FloatTensor`, *optional*):
    Preprocessed audio waveform for voice cloning.
padding_mask (`torch.BoolTensor`, *optional*):
    Masks indicating valid input frames.
acoustic_loss_mask (`torch.BoolTensor`, *optional*):
    Mask to compute diffusion loss only on specific acoustic tokens.
noise_scheduler (*optional*):
    Needed for training to compute noise targets for the diffusion loss. By default, uses the noise scheduler
    configuration specified in the model's `generation_config`.
ddpm_batch_multiplier (`int`, *optional*, defaults to 4):
    For training, number of noise samples to generate per audio token for diffusion loss computation, which can
    help stabilize training.
num_diffusion_steps (`int`, *optional*, defaults to 10):
    For training, the number of diffusion steps to use. Defaults to 10 if not provided.
r%  r&  r  r  Nru   r1   rg  rD  ræ   r0   r#   )rà   r  rë   rM  rj  rA  Úloss_functionre   rD  r   Údiffusion_loss_weightÚ_build_default_noise_schedulerÚgeneration_configrP   rx   rd  r  r.   )rC   r%  r&  rg  rh  r  r  ri  rH  rI  rJ  r  r=  rI   Úslice_indicesr1   r0   r   rG  rc  s   &&&&&&&&&&&,        r   rW   Ú)VibeVoiceForConditionalGeneration.forward™  sÂ  € ðB —*’*ñ 
Øð
à'ð
ð &ð
ð &ð	
ð
 ñ
ˆð  ×1Ñ1ˆÜ8BÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜m¨A¨}¸aÐ,?Õ@ÓAˆàˆØÒØ×%Ò%Ñp¨VÐp¸FÐpÈtÏ{É{×OeÑOeÐpÐioÑpˆDð
 Ó*Ø×&Ñ&Ó2Ø—‘×1Ñ1°CÔ7àÒ&à"&×"EÑ"EÀd×F\ÑF\Ó"]�à$×3Ñ3ˆNØ!.×/DÑ/DÀ]×EYÑEYÓ/ZÕ![×!^Ñ!^Ð_m×_tÑ_tÓ!uÐØ!×8Ñ8Ø—
‘
×)Ñ)ØØ"ØØ%Ø#óˆNð �D—K‘K×5Ñ5Õ5Øõà—{‘{×8Ñ8¸>×;LÑ;LÈTÏ[É[Ó;YÕYõZˆDô /ÑS°DÐSÀÐSÈ7ÑSÐSr"   )rA  rà   )
NNNr   NNNNé   é
   )r$   r%   r&   r'   Ú_tied_weights_keysÚ_tp_planr=   r   rd  r   r   rW   r*   r+   r_   r`   s   @@r   r@  r@  ]  sf   ù‡ € ð +Ð,VÐWÐØÐ2Ð3€Hõð ÷*ó ð*ðX Ø÷HTñ HTó ó ÷HTð HTr"   r@  )r@  rß   rÿ   )1rn   Údataclassesr   r   Útorch.nnr>   Útorch.nn.functionalrZ  r»   Ú r   ré   Úactivationsr   Úintegrationsr   Úmodeling_outputsr   r   Úmodeling_utilsr	   Úprocessing_utilsr
   Úutilsr   r   r   r   Úautor   Úconfiguration_vibevoicer   Úgeneration_vibevoicer   r   r.   rK  r5   rb   r�   r“   r    r´   rÂ   rÖ   rß   rÿ   r@  Ú__all__r#   r"   r   Ú<module>r„     sª  ðó* Ý !ã Ý ß Ð å &Ý !Ý 7ß SÝ -Ý &ß aÓ aÝ Ý 4Ý :ñ ÐgÔhØ
ô4Ð'>ó 4ó ó ið4ñ ÐKÔLØ
ô4Ð&=ó 4ó ó Mð4ñ ˜YÓ'ôJ�r—y‘yó Jó (ðJô(°·	±	ô ô" §	¡	ô ô�2—9‘9ô ô ¨¯©ô ô  r§y¡yô ô"˜RŸY™Yô ô6 2§9¡9ô ð ôP˜ó Pó ðPñ0 ðôô
iZÐ-ó iZóð
iZñX ðôô
ATÐ(@ÐBZó ATóð
ATòH ^‚r"   