§
    ‚Štjöí  ã                   ó   — d Z ddlZ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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 ddlmZmZ ddlmZ ddlmZmZmZ ddl m!Z!  ej"        e#¦  «        Z$ ed¬¦  «        e G d„ de¦  «        ¦   «         ¦   «         Z% ed¬¦  «        e G d„ de¦  «        ¦   «         ¦   «         Z&ej'        j(        d„ ¦   «         Z)	 	 	 	 	 dDd„Z*d„ Z+ G d„ d ej	        j,        ¦  «        Z- G d!„ d"e	j,        ¦  «        Z. G d#„ d$e	j,        ¦  «        Z/ G d%„ d&e	j,        ¦  «        Z0 G d'„ d(e	j,        ¦  «        Z1 G d)„ d*e	j,        ¦  «        Z2 G d+„ d,e	j,        ¦  «        Z3 G d-„ d.e	j,        ¦  «        Z4 G d/„ d0e	j,        ¦  «        Z5 G d1„ d2e	j,        ¦  «        Z6 G d3„ d4e	j,        ¦  «        Z7 G d5„ d6e	j,        ¦  «        Z8 G d7„ d8e	j,        ¦  «        Z9 G d9„ d:e¦  «        Z: G d;„ d<e	j,        ¦  «        Z; G d=„ d>e	j,        ¦  «        Z<e G d?„ d@e¦  «        ¦   «         Z= edA¬¦  «         G dB„ dCe=¦  «        ¦   «         Z>dCd@gZ?dS )EzPyTorch VITS model.é    N)Ú	dataclass)ÚAny)Únné   )Úinitialization)ÚACT2FN)Úis_deepspeed_zero3_enabled)Úis_fsdp_managed_module)Úcreate_bidirectional_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚModelOutput)ÚPreTrainedModel)Úauto_docstringÚloggingÚtorch_compilable_checké   )Ú
VitsConfigz`
    Describes the outputs for the VITS model, with potential hidden states and attentions.
    )Úcustom_introc                   óÎ   — 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
ej                 dz  ed<   dZe
ej                 dz  ed<   dZe
ej                 dz  ed<   dS )ÚVitsModelOutputa"  
    waveform (`torch.FloatTensor` of shape `(batch_size, sequence_length)`):
        The final audio waveform predicted by the model.
    sequence_lengths (`torch.FloatTensor` of shape `(batch_size,)`):
        The length in samples of each element in the `waveform` batch.
    spectrogram (`torch.FloatTensor` of shape `(batch_size, sequence_length, num_bins)`):
        The log-mel spectrogram predicted at the output of the flow model. This spectrogram is passed to the Hi-Fi
        GAN decoder model to obtain the final audio waveform.
    NÚwaveformÚsequence_lengthsÚspectrogramÚhidden_statesÚ
attentions)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚtorchÚFloatTensorÚ__annotations__r   r   Útupler   r   © ó    úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/vits/modeling_vits.pyr   r   '   s¦   € € € € € € ðð ð *.€HˆeÔ $Ñ&Ð-Ð-Ñ-Ø15Ð�eÔ'¨$Ñ.Ð5Ð5Ñ5Ø37€K��uÔ(Ô)¨DÑ0Ð7Ð7Ñ7Ø59€M�5˜Ô*Ô+¨dÑ2Ð9Ð9Ñ9Ø26€J��eÔ'Ô(¨4Ñ/Ð6Ð6Ñ6Ð6Ð6r&   r   zm
    Describes the outputs for the VITS text encoder model, with potential hidden states and attentions.
    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ej                 dz  ed<   dZeej                 dz  ed<   dS )ÚVitsTextEncoderOutputa…  
    prior_means (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`):
        The predicted mean values of the prior distribution for the latent text variables.
    prior_log_variances (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`):
        The predicted log-variance values of the prior distribution for the latent text variables.
    NÚlast_hidden_stateÚprior_meansÚprior_log_variancesr   r   )r   r   r   r    r*   r!   r"   r#   r+   r,   r   r$   r   r%   r&   r'   r)   r)   ?   s¢   € € € € € € ðð ð 37Ð�uÔ(¨4Ñ/Ð6Ð6Ñ6Ø,0€K�Ô" TÑ)Ð0Ð0Ñ0Ø48Ð˜Ô*¨TÑ1Ð8Ð8Ñ8Ø59€M�5˜Ô*Ô+¨dÑ2Ð9Ð9Ñ9Ø26€J��eÔ'Ô(¨4Ñ/Ð6Ð6Ñ6Ð6Ð6r&   r)   c                 ó¦   — | |z   }t          j        |d d …d |…d d …f         ¦  «        }t          j        |d d …|d …d d …f         ¦  «        }||z  }|S ©N)r!   ÚtanhÚsigmoid)Úinput_aÚinput_bÚnum_channelsÚin_actÚt_actÚs_actÚactss          r'   Úfused_add_tanh_sigmoid_multiplyr8   T   sh   € à�wÑ€FÝŒJ�v˜a˜a˜a  , °°°Ð1Ô2Ñ3Ô3€EÝŒM˜&    L M M°1°1°1Ð!4Ô5Ñ6Ô6€EØ�5‰=€DØ€Kr&   Fç      @çü©ñÒMbP?c	                 óÔ  — | | k    | |k    z  }	|	 }
t          j        | ¦  «        }t          j        | ¦  «        }t          j        t          j        d|z
  ¦  «        dz
  ¦  «        }t
          j                             |d¬¦  «        }||d<   ||d<   | |
         ||
<   d||
<   t          | |	         ||	dd…f         ||	dd…f         ||	dd…f         |||||¬¦	  «	        \  ||	<   ||	<   ||fS )	aô	  
    This transformation represents a monotonically increasing piecewise rational quadratic function. Outside of the
    `tail_bound`, the transform behaves as an identity function.

    Args:
        inputs (`torch.FloatTensor` of shape `(batch_size, channels, seq_len)`:
            Second half of the hidden-states input to the Vits convolutional flow module.
        unnormalized_widths (`torch.FloatTensor` of shape `(batch_size, channels, seq_len, duration_predictor_flow_bins)`):
            First `duration_predictor_flow_bins` of the hidden-states from the output of the convolution projection
            layer in the convolutional flow module
        unnormalized_heights (`torch.FloatTensor` of shape `(batch_size, channels, seq_len, duration_predictor_flow_bins)`):
            Second `duration_predictor_flow_bins` of the hidden-states from the output of the convolution projection
            layer in the convolutional flow module
        unnormalized_derivatives (`torch.FloatTensor` of shape `(batch_size, channels, seq_len, duration_predictor_flow_bins)`):
            Third `duration_predictor_flow_bins` of the hidden-states from the output of the convolution projection
            layer in the convolutional flow module
        reverse (`bool`, *optional*, defaults to `False`):
            Whether the model is being run in reverse mode.
        tail_bound (`float`, *optional* defaults to 5):
            Upper and lower limit bound for the rational quadratic function. Outside of this `tail_bound`, the
            transform behaves as an identity function.
        min_bin_width (`float`, *optional*, defaults to 1e-3):
            Minimum bin value across the width dimension for the piecewise rational quadratic function.
        min_bin_height (`float`, *optional*, defaults to 1e-3):
            Minimum bin value across the height dimension for the piecewise rational quadratic function.
        min_derivative (`float`, *optional*, defaults to 1e-3):
            Minimum bin value across the derivatives for the piecewise rational quadratic function.
    Returns:
        outputs (`torch.FloatTensor` of shape `(batch_size, channels, seq_len)`:
            Hidden-states as transformed by the piecewise rational quadratic function with the `tail_bound` limits
            applied.
        log_abs_det (`torch.FloatTensor` of shape `(batch_size, channels, seq_len)`:
            Logarithm of the absolute value of the determinants corresponding to the `outputs` with the `tail_bound`
            limits applied.
    r   )r   r   )Úpad©.r   ©.éÿÿÿÿç        N)	ÚinputsÚunnormalized_widthsÚunnormalized_heightsÚunnormalized_derivativesÚreverseÚ
tail_boundÚmin_bin_widthÚmin_bin_heightÚmin_derivative)	r!   Ú
zeros_likeÚnpÚlogÚexpr   Ú
functionalr<   Ú_rational_quadratic_spline)rA   rB   rC   rD   rE   rF   rG   rH   rI   Úinside_interval_maskÚoutside_interval_maskÚoutputsÚlog_abs_detÚconstants                 r'   Ú(_unconstrained_rational_quadratic_splinerU   ]   s<  € ð\ # z kÒ1°fÀ
Ò6JÑKÐØ1Ð1ÐåÔ˜vÑ&Ô&€GÝÔ" 6Ñ*Ô*€KÝŒv•b”f˜Q Ñ/Ñ0Ô0°1Ñ4Ñ5Ô5€Hå!œ}×0Ò0Ð1IÈvÐ0ÑVÔVÐØ'/Ð˜VÑ$Ø(0Ð˜WÑ%à%+Ð,AÔ%B€GÐ!Ñ"Ø),€KÐ%Ñ&åGaØÐ*Ô+Ø/Ð0DÀaÀaÀaÐ0GÔHØ1Ð2FÈÈÈÐ2IÔJØ!9Ð:NÐPQÐPQÐPQÐ:QÔ!RØØØ#Ø%Ø%ð
Hñ 
Hô 
HÑD€GÐ Ñ! ;Ð/CÑ#Dð �KÐÐr&   c	                 óØ	  — |}	| }
t          |                      ¦   «         |
k    |                      ¦   «         |	k    z  d|
› d|	› d�¦  «         |j        d         }||z  dk    rt	          d|› d|› �¦  «        ‚||z  dk    rt	          d|› d|› �¦  «        ‚t
          j                             |d¬	¦  «        }|d
||z  z
  |z  z   }t          j	        |d¬	¦  «        }t
          j         
                    |ddd¬¦  «        }|	|
z
  |z  |
z   }|
|d<   |	|d<   |dd
d…f         |ddd…f         z
  }|t
          j                             |¦  «        z   }t
          j                             |d¬	¦  «        }|d
||z  z
  |z  z   }t          j	        |d¬	¦  «        }t
          j         
                    |ddd¬¦  «        }|	|
z
  |z  |
z   }|
|d<   |	|d<   |dd
d…f         |ddd…f         z
  }|r|n|}|dxx         dz  cc<   t          j        | d         |k    d¬	¦  «        d
z
  }|d         }|                     d|¦  «        d         }|                     d|¦  «        d         }|                     d|¦  «        d         }||z  }|                     d|¦  «        d         }|                     d|¦  «        d         }|dd
d…f                              d|¦  «        d         }|                     d|¦  «        d         }||z   d|z  z
  }|sÄ| |z
  |z  }|d
|z
  z  }|||                     d¦  «        z  ||z  z   z  }|||z  z   }|||z  z   } |                     d¦  «        ||                     d¦  «        z  d|z  |z  z   |d
|z
                       d¦  «        z  z   z  }!t          j        |!¦  «        dt          j        |¦  «        z  z
  }"| |"fS | |z
  }#|#|z  }$|||z
  z  |$z   }%||z  |$z
  }&| |#z  }'|&                     d¦  «        d|%z  |'z  z
  }(t          t          j        |(dk    ¦  «        d|(› �¦  «         d|'z  |& t          j        |(¦  «        z
  z  })|)|z  |z   } |)d
|)z
  z  }|||z  z   }|                     d¦  «        ||)                     d¦  «        z  d|z  |z  z   |d
|)z
                       d¦  «        z  z   z  }!t          j        |!¦  «        dt          j        |¦  «        z  z
  }"| |" fS )a(	  
    This transformation represents a monotonically increasing piecewise rational quadratic function. Unlike the
    function `_unconstrained_rational_quadratic_spline`, the function behaves the same across the `tail_bound`.

    Args:
        inputs (`torch.FloatTensor` of shape `(batch_size, channels, seq_len)`:
            Second half of the hidden-states input to the Vits convolutional flow module.
        unnormalized_widths (`torch.FloatTensor` of shape `(batch_size, channels, seq_len, duration_predictor_flow_bins)`):
            First `duration_predictor_flow_bins` of the hidden-states from the output of the convolution projection
            layer in the convolutional flow module
        unnormalized_heights (`torch.FloatTensor` of shape `(batch_size, channels, seq_len, duration_predictor_flow_bins)`):
            Second `duration_predictor_flow_bins` of the hidden-states from the output of the convolution projection
            layer in the convolutional flow module
        unnormalized_derivatives (`torch.FloatTensor` of shape `(batch_size, channels, seq_len, duration_predictor_flow_bins)`):
            Third `duration_predictor_flow_bins` of the hidden-states from the output of the convolution projection
            layer in the convolutional flow module
        reverse (`bool`):
            Whether the model is being run in reverse mode.
        tail_bound (`float`):
            Upper and lower limit bound for the rational quadratic function. Outside of this `tail_bound`, the
            transform behaves as an identity function.
        min_bin_width (`float`):
            Minimum bin value across the width dimension for the piecewise rational quadratic function.
        min_bin_height (`float`):
            Minimum bin value across the height dimension for the piecewise rational quadratic function.
        min_derivative (`float`):
            Minimum bin value across the derivatives for the piecewise rational quadratic function.
    Returns:
        outputs (`torch.FloatTensor` of shape `(batch_size, channels, seq_len)`:
            Hidden-states as transformed by the piecewise rational quadratic function.
        log_abs_det (`torch.FloatTensor` of shape `(batch_size, channels, seq_len)`:
            Logarithm of the absolute value of the determinants corresponding to the `outputs`.
    zInputs are outside the range [z, ú]r?   ç      ð?zMinimal bin width z" too large for the number of bins zMinimal bin height ©Údimr   )r   r   rT   r@   )r<   ÚmodeÚvaluer=   r>   .Ng�íµ ÷Æ°>).Né   é   r   z!Discriminant has negative values )r   ÚminÚmaxÚshapeÚ
ValueErrorr   rN   Úsoftmaxr!   Úcumsumr<   ÚsoftplusÚsumÚgatherÚpowrL   ÚallÚsqrt)*rA   rB   rC   rD   rE   rF   rG   rH   rI   Úupper_boundÚlower_boundÚnum_binsÚwidthsÚ	cumwidthsÚderivativesÚheightsÚ
cumheightsÚbin_locationsÚbin_idxÚinput_cumwidthsÚinput_bin_widthsÚinput_cumheightsÚdeltaÚinput_deltaÚinput_derivativesÚinput_derivatives_plus_oneÚinput_heightsÚintermediate1ÚthetaÚtheta_one_minus_thetaÚ	numeratorÚdenominatorrR   Úderivative_numeratorrS   Úintermediate2Úintermediate3ÚaÚbÚcÚdiscriminantÚroots*                                             r'   rO   rO   §   sã  € ðX €KØ�+€KÝØ	�Š‰Œ˜Ò	$¨¯ª©¬¸Ò)DÑEØF¨ÐFÐF¸ÐFÐFÐFñô ð ð #Ô(¨Ô,€Hà�xÑ #Ò%Ð%ÝÐi¨mÐiÐiÐ_gÐiÐiÑjÔjÐjØ˜Ñ  3Ò&Ð&ÝÐk¨~ÐkÐkÐaiÐkÐkÑlÔlÐlåŒ]×"Ò"Ð#6¸BÐ"Ñ?Ô?€FØ˜a -°(Ñ":Ñ:¸fÑDÑD€FÝ”˜V¨Ð,Ñ,Ô,€IÝ”×!Ò! )°¸jÐPSÐ!ÑTÔT€IØ˜{Ñ*¨iÑ7¸+ÑE€IØ#€IˆfÑØ$€IˆgÑØ�s˜A˜B˜B�wÔ )¨C°°"°¨HÔ"5Ñ5€Fà ¥2¤=×#9Ò#9Ð:RÑ#SÔ#SÑS€KåŒm×#Ò#Ð$8¸bÐ#ÑAÔA€GØ  N°XÑ$=Ñ =ÀÑHÑH€GÝ”˜g¨2Ð.Ñ.Ô.€JÝ”×"Ò" :°6À
ÐRUÐ"ÑVÔV€JØ Ñ+¨zÑ9¸KÑG€JØ$€JˆvÑØ%€JˆwÑØ˜˜a˜b˜b˜Ô! J¨s°C°R°C¨xÔ$8Ñ8€Gà")Ð8�J�J¨y€MØ�'ÐÐÔ˜dÑ"ÐÐÑÝŒi˜˜yÔ)¨]Ò:ÀÐCÑCÔCÀaÑG€GØ�iÔ €Gà×&Ò& r¨7Ñ3Ô3°FÔ;€OØ—}’} R¨Ñ1Ô1°&Ô9Ðà!×(Ò(¨¨WÑ5Ô5°fÔ=ÐØ�fÑ€EØ—,’,˜r 7Ñ+Ô+¨FÔ3€Kà#×*Ò*¨2¨wÑ7Ô7¸Ô?ÐØ!,¨S°!°"°"¨WÔ!5×!<Ò!<¸RÀÑ!IÔ!IÈ&Ô!QÐà—N’N 2 wÑ/Ô/°Ô7€Mà%Ð(BÑBÀQÈÁ_ÑT€MØð (%Ø˜/Ñ)Ð-=Ñ=ˆØ %¨¨U©Ñ 3Ðà! [°5·9²9¸Q±<´<Ñ%?ÐBSÐVkÑBkÑ%kÑlˆ	Ø! MÐ4IÑ$IÑIˆØ" Y°Ñ%<Ñ<ˆà*Ÿš¨qÑ1Ô1Ø&¨¯ª°1©¬Ñ5Ø�+‰oÐ 5Ñ5ñ6à 1 u¡9§/¢/°!Ñ"4Ô"4Ñ4ñ5ñ 
Ðõ
 ”iÐ 4Ñ5Ô5¸½E¼IÀkÑ<RÔ<RÑ8RÑRˆØ˜Ð#Ð#ð Ð!1Ñ1ˆØ%¨Ñ5ˆØ˜[Ð+<Ñ<Ñ=ÀÑMˆØÐ-Ñ-°Ñ=ˆØˆL˜=Ñ(ˆà—u’u˜Q‘x”x ! a¡%¨!¡)Ñ+ˆÝÝŒI�l aÒ'Ñ(Ô(Ø>°Ð>Ð>ñ	
ô 	
ð 	
ð
 �A‘˜1˜"�uœz¨,Ñ7Ô7Ñ7Ñ8ˆØÐ)Ñ)¨OÑ;ˆà $¨¨D©Ñ 1ÐØ! MÐ4IÑ$IÑIˆØ*Ÿš¨qÑ1Ô1Ø&¨¯ª°!©¬Ñ4Ø�+‰oÐ 5Ñ5ñ6à 1 t¡8§.¢.°Ñ"3Ô"3Ñ3ñ4ñ 
Ðõ
 ”iÐ 4Ñ5Ô5¸½E¼IÀkÑ<RÔ<RÑ8RÑRˆØ˜˜Ð$Ð$r&   c                   ó6   ‡ — e Zd Zdedefˆ fd„Zdd„Zd„ Zˆ xZS )ÚVitsWaveNetÚconfigÚ
num_layersc                 óB  •— t          ¦   «                              ¦   «          |j        | _        || _        t          j                             ¦   «         | _        t          j                             ¦   «         | _        t          j	        |j
        ¦  «        | _        t          t
          j        j        d¦  «        rt
          j        j        j        }nt
          j        j        }|j        dk    rCt          j                             |j        d|j        z  |z  d¦  «        } ||d¬¦  «        | _        t'          |¦  «        D ]á}|j        |z  }|j        |z  |z
  dz  }t          j                             |j        d|j        z  |j        ||¬¦  «        } ||d¬¦  «        }| j                             |¦  «         ||dz
  k     rd|j        z  }	n|j        }	t          j                             |j        |	d¦  «        }
 ||
d¬¦  «        }
| j                             |
¦  «         Œâd S )NÚweight_normr   r]   r   Úweight)Úname)Úin_channelsÚout_channelsÚkernel_sizeÚdilationÚpadding)ÚsuperÚ__init__Úhidden_sizer�   r!   r   Ú
ModuleListÚ	in_layersÚres_skip_layersÚDropoutÚwavenet_dropoutÚdropoutÚhasattrÚutilsÚparametrizationsr�   Úspeaker_embedding_sizeÚConv1dÚ
cond_layerÚrangeÚwavenet_dilation_rateÚwavenet_kernel_sizeÚappend)ÚselfrŒ   r�   r�   r¥   Úir•   r–   Úin_layerÚres_skip_channelsÚres_skip_layerÚ	__class__s              €r'   r˜   zVitsWaveNet.__init__2  s  ø€ Ý‰Œ×ÒÑÔÐØ!Ô-ˆÔØ$ˆŒåœ×,Ò,Ñ.Ô.ˆŒÝ$œx×2Ò2Ñ4Ô4ˆÔÝ”z &Ô"8Ñ9Ô9ˆŒå•2”8Ô,¨mÑ<Ô<ð 	/Ýœ(Ô3Ô?ˆKˆKåœ(Ô.ˆKàÔ(¨AÒ-Ð-ÝœŸš¨Ô)FÈÈFÔL^ÑH^ÐakÑHkÐmnÑoÔoˆJØ)˜k¨*¸8ÐDÑDÔDˆDŒOå�zÑ"Ô"ð 	8ð 	8ˆAØÔ3°QÑ6ˆHØÔ1°HÑ<¸xÑGÈAÑMˆGÝ”x—’Ø"Ô.Ø Ô!3Ñ3Ø"Ô6Ø!Øð 'ñ ô ˆHð #�{ 8°(Ð;Ñ;Ô;ˆHØŒN×!Ò! (Ñ+Ô+Ð+ð �: ‘>Ò!Ð!Ø$%¨Ô(:Ñ$:Ð!Ð!à$*Ô$6Ð!å"œXŸ_š_¨VÔ-?ÐARÐTUÑVÔVˆNØ(˜[¨¸hÐGÑGÔGˆNØÔ ×'Ò'¨Ñ7Ô7Ð7Ð7ð+	8ð 	8r&   Nc                 óŠ  — t          j        |¦  «        }t          j        | j        g¦  «        }|�|                      |¦  «        }t          | j        ¦  «        D ]å} | j        |         |¦  «        }|�*|dz  | j        z  }|d d …||d| j        z  z   …d d …f         }	nt          j        |¦  «        }	t          ||	|d         ¦  «        }
|  	                    |
¦  «        }
 | j
        |         |
¦  «        }|| j        dz
  k     r8|d d …d | j        …d d …f         }||z   |z  }||d d …| j        d …d d …f         z   }Œà||z   }Œæ||z  S )Nr]   r   r   )r!   rJ   Ú	IntTensorr™   r¥   r¦   r�   r›   r8   rŸ   rœ   )rª   rA   Úpadding_maskÚglobal_conditioningrR   Únum_channels_tensorr«   r   Úcond_offsetÚglobal_statesr7   Úres_skip_actsÚres_actss                r'   ÚforwardzVitsWaveNet.forward[  sŒ  € ÝÔ" 6Ñ*Ô*ˆÝ#œo¨tÔ/?Ð.@ÑAÔAÐàÐ*Ø"&§/¢/Ð2EÑ"FÔ"FÐå�t”Ñ'Ô'ð 	2ð 	2ˆAØ-˜DœN¨1Ô-¨fÑ5Ô5ˆMà"Ð.Ø !™e dÔ&6Ñ6�Ø 3°A°A°A°{À[ÐSTÐW[ÔWgÑSgÑEgÐ7gÐijÐijÐijÐ4jÔ k��å %Ô 0°Ñ ?Ô ?�å2°=À-ÐQdÐefÔQgÑhÔhˆDØ—<’< Ñ%Ô%ˆDà3˜DÔ0°Ô3°DÑ9Ô9ˆMØ�4”? QÑ&Ò&Ð&Ø(¨¨¨Ð,>¨dÔ.>Ð,>ÀÀÀÐ)AÔB�Ø  8Ñ+¨|Ñ;�Ø! M°!°!°!°TÔ5EÐ5GÐ5GÈÈÈÐ2JÔ$KÑK��à! MÑ1��à˜Ñ%Ð%r&   c                 ó&  — | j         dk    r)t          j        j                             | j        ¦  «         | j        D ]&}t          j        j                             |¦  «         Œ'| j        D ]&}t          j        j                             |¦  «         Œ'd S )Nr   )r£   r!   r   r¡   Úremove_weight_normr¥   r›   rœ   ©rª   Úlayers     r'   r»   zVitsWaveNet.remove_weight_normx  s�   € ØÔ&¨!Ò+Ð+ÝŒHŒN×-Ò-¨d¬oÑ>Ô>Ð>Ø”^ð 	5ð 	5ˆEÝŒHŒN×-Ò-¨eÑ4Ô4Ð4Ð4ØÔ)ð 	5ð 	5ˆEÝŒHŒN×-Ò-¨eÑ4Ô4Ð4Ð4ð	5ð 	5r&   r.   )	r   r   r   r   Úintr˜   r¹   r»   Ú__classcell__©r¯   s   @r'   r‹   r‹   1  so   ø€ € € € € ð'8˜zð '8°sð '8ð '8ð '8ð '8ð '8ð '8ðR&ð &ð &ð &ð:5ð 5ð 5ð 5ð 5ð 5ð 5r&   r‹   c                   ó,   ‡ — e Zd Zdefˆ fd„Zdd„Zˆ xZS )ÚVitsPosteriorEncoderrŒ   c                 ó0  •— t          ¦   «                              ¦   «          |j        | _        t	          j        |j        |j        d¦  «        | _        t          ||j
        ¬¦  «        | _        t	          j        |j        | j        dz  d¦  «        | _        d S )Nr   ©r�   r]   )r—   r˜   Ú	flow_sizer“   r   r¤   Úspectrogram_binsr™   Úconv_prer‹   Ú$posterior_encoder_num_wavenet_layersÚwavenetÚ	conv_proj©rª   rŒ   r¯   s     €r'   r˜   zVitsPosteriorEncoder.__init__‚  sz   ø€ Ý‰Œ×ÒÑÔÐØ"Ô,ˆÔåœ	 &Ô"9¸6Ô;MÈqÑQÔQˆŒÝ" 6°fÔ6aÐbÑbÔbˆŒÝœ 6Ô#5°tÔ7HÈ1Ñ7LÈaÑPÔPˆŒˆˆr&   Nc                 ó6  — |                       |¦  «        |z  }|                      |||¦  «        }|                      |¦  «        |z  }t          j        || j        d¬¦  «        \  }}|t          j        |¦  «        t          j        |¦  «        z  z   |z  }|||fS )Nr   rY   )rÇ   rÉ   rÊ   r!   Úsplitr“   Ú
randn_likerM   )rª   rA   r²   r³   ÚstatsÚmeanÚ
log_stddevÚsampleds           r'   r¹   zVitsPosteriorEncoder.forwardŠ  s˜   € Ø—’˜vÑ&Ô&¨Ñ5ˆØ—’˜f lÐ4GÑHÔHˆØ—’˜vÑ&Ô&¨Ñ5ˆÝ œ; u¨dÔ.?ÀQÐGÑGÔGÑˆˆjØ�%Ô*¨4Ñ0Ô0µ5´9¸ZÑ3HÔ3HÑHÑHÈLÑXˆØ˜˜jÐ(Ð(r&   r.   ©r   r   r   r   r˜   r¹   r¿   rÀ   s   @r'   rÂ   rÂ   �  s_   ø€ € € € € ðQ˜zð Qð Qð Qð Qð Qð Qð)ð )ð )ð )ð )ð )ð )ð )r&   rÂ   c                   ó:   ‡ — e Zd Zd
ˆ fd„	Zdd„Zd„ Zd„ Zd	„ Zˆ xZS )ÚHifiGanResidualBlockr   ©r   r   é   çš™™™™™¹?c                 ód  •‡ ‡‡‡— t          ¦   «                              ¦   «          |‰ _        t          j        ˆˆˆˆ fd„t          t          ‰¦  «        ¦  «        D ¦   «         ¦  «        ‰ _        t          j        ˆˆˆ fd„t          t          ‰¦  «        ¦  «        D ¦   «         ¦  «        ‰ _        d S )Nc                 ó„   •— g | ]<}t          j        ‰‰‰d ‰|         ‰                     ‰‰|         ¦  «        ¬¦  «        ‘Œ=S ©r   )Ústrider•   r–   ©r   r¤   Úget_padding)Ú.0r«   Úchannelsr•   r”   rª   s     €€€€r'   ú
<listcomp>z1HifiGanResidualBlock.__init__.<locals>.<listcomp>š  sf   ø€ ð 
ð 
ð 
ð õ ”	ØØØØØ% aœ[Ø ×,Ò,¨[¸(À1¼+ÑFÔFðñ ô ð
ð 
ð 
r&   c                 ól   •— g | ]0}t          j        ‰‰‰d d ‰                     ‰d ¦  «        ¬¦  «        ‘Œ1S rÛ   rÝ   )rß   Ú_rà   r”   rª   s     €€€r'   rá   z1HifiGanResidualBlock.__init__.<locals>.<listcomp>§  s^   ø€ ð 
ð 
ð 
ð õ ”	ØØØØØØ ×,Ò,¨[¸!Ñ<Ô<ðñ ô ð
ð 
ð 
r&   )	r—   r˜   Úleaky_relu_sloper   rš   r¦   ÚlenÚconvs1Úconvs2)rª   rà   r”   r•   rä   r¯   s   ```` €r'   r˜   zHifiGanResidualBlock.__init__•  sÖ   øøøøø€ Ý‰Œ×ÒÑÔÐØ 0ˆÔå”mð
ð 
ð 
ð 
ð 
ð 
ð 
õ �s 8™}œ}Ñ-Ô-ð
ñ 
ô 
ñ
ô 
ˆŒõ ”mð
ð 
ð 
ð 
ð 
ð 
õ �s 8™}œ}Ñ-Ô-ð
ñ 
ô 
ñ
ô 
ˆŒˆˆr&   r   c                 ó   — ||z  |z
  dz  S )Nr]   r%   )rª   r”   r•   s      r'   rÞ   z HifiGanResidualBlock.get_padding´  s   € Ø˜hÑ&¨Ñ1°aÑ7Ð7r&   c                 óæ   — t           j        j        }t          t           j        j        d¦  «        rt           j        j        j        }| j        D ]} ||¦  «         Œ| j        D ]} ||¦  «         Œd S ©Nr�   )r   r¡   r�   r    r¢   ræ   rç   ©rª   r�   r½   s      r'   Úapply_weight_normz&HifiGanResidualBlock.apply_weight_norm·  sƒ   € Ý”hÔ*ˆÝ•2”8Ô,¨mÑ<Ô<ð 	@Ýœ(Ô3Ô?ˆKà”[ð 	ð 	ˆEØˆK˜ÑÔÐÐØ”[ð 	ð 	ˆEØˆK˜ÑÔÐÐð	ð 	r&   c                 óª   — | j         D ]!}t          j                             |¦  «         Œ"| j        D ]!}t          j                             |¦  «         Œ"d S r.   )ræ   r   r¡   r»   rç   r¼   s     r'   r»   z'HifiGanResidualBlock.remove_weight_normÁ  s`   € Ø”[ð 	/ð 	/ˆEÝŒH×'Ò'¨Ñ.Ô.Ð.Ð.Ø”[ð 	/ð 	/ˆEÝŒH×'Ò'¨Ñ.Ô.Ð.Ð.ð	/ð 	/r&   c                 ó  — t          | j        | j        ¦  «        D ]l\  }}|}t          j                             || j        ¦  «        } ||¦  «        }t          j                             || j        ¦  «        } ||¦  «        }||z   }Œm|S r.   )Úzipræ   rç   r   rN   Ú
leaky_relurä   )rª   r   Úconv1Úconv2Úresiduals        r'   r¹   zHifiGanResidualBlock.forwardÇ  sŒ   € Ý ¤¨T¬[Ñ9Ô9ð 	5ð 	5‰LˆE�5Ø$ˆHÝœM×4Ò4°]ÀDÔDYÑZÔZˆMØ!˜E -Ñ0Ô0ˆMÝœM×4Ò4°]ÀDÔDYÑZÔZˆMØ!˜E -Ñ0Ô0ˆMØ)¨HÑ4ˆMˆMØÐr&   )r   rÖ   rØ   ©r   )	r   r   r   r˜   rÞ   rì   r»   r¹   r¿   rÀ   s   @r'   rÕ   rÕ   ”  s~   ø€ € € € € ð
ð 
ð 
ð 
ð 
ð 
ð>8ð 8ð 8ð 8ðð ð ð/ð /ð /ðð ð ð ð ð ð r&   rÕ   c                   ól   ‡ — e Zd Zdefˆ fd„Zd„ Zd„ Z	 d
dej        dej        dz  dej        fd	„Z	ˆ xZ
S )ÚVitsHifiGanrŒ   c                 ó  •— t          ¦   «                              ¦   «          || _        t          |j        ¦  «        | _        t          |j        ¦  «        | _        t          j	        |j
        |j        ddd¬¦  «        | _        t          j        ¦   «         | _        t          t!          |j        |j        ¦  «        ¦  «        D ]X\  }\  }}| j                             t          j        |j        d|z  z  |j        d|dz   z  z  ||||z
  dz  ¬¦  «        ¦  «         ŒYt          j        ¦   «         | _        t+          t          | j        ¦  «        ¦  «        D ]a}|j        d|dz   z  z  }t!          |j        |j        ¦  «        D ]4\  }}| j                             t/          ||||j        ¦  «        ¦  «         Œ5Œbt          j	        |ddddd¬¦  «        | _        |j        dk    r't          j	        |j        |j        d¦  «        | _        d S d S )	Né   r   r   )r”   rÜ   r–   r]   F)r”   rÜ   r–   Úbiasr   )r—   r˜   rŒ   rå   Úresblock_kernel_sizesÚnum_kernelsÚupsample_ratesÚnum_upsamplesr   r¤   rÅ   Úupsample_initial_channelrÇ   rš   Ú	upsamplerÚ	enumeraterï   Úupsample_kernel_sizesr©   ÚConvTranspose1dÚ	resblocksr¦   Úresblock_dilation_sizesrÕ   rä   Ú	conv_postr£   Úcond)rª   rŒ   r«   Úupsample_rater”   rà   r•   r¯   s          €r'   r˜   zVitsHifiGan.__init__Ó  s  ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ˜vÔ;Ñ<Ô<ˆÔÝ  Ô!6Ñ7Ô7ˆÔÝœ	ØÔØÔ+ØØØð
ñ 
ô 
ˆŒõ œ™œˆŒÝ/8½¸VÔ=RÐTZÔTpÑ9qÔ9qÑ/rÔ/rð 		ð 		Ñ+ˆAÑ+�˜{ØŒN×!Ò!ÝÔ"ØÔ3¸¸1¹Ñ=ØÔ3¸¸aÀ!¹e¹ÑEØ +Ø(Ø(¨=Ñ8¸QÑ>ðñ ô ñô ð ð õ œ™œˆŒÝ•s˜4œ>Ñ*Ô*Ñ+Ô+ð 	vð 	vˆAØÔ6¸1ÀÀQÁ¹<ÑHˆHÝ),¨VÔ-IÈ6ÔKiÑ)jÔ)jð vð vÑ%�˜XØ”×%Ò%Õ&:¸8À[ÐRZÐ\bÔ\sÑ&tÔ&tÑuÔuÐuÐuðvõ œ 8¨Q¸AÀaÐQRÐY^Ð_Ñ_Ô_ˆŒàÔ(¨AÒ-Ð-Ýœ	 &Ô"?ÀÔA`ÐbcÑdÔdˆDŒIˆIˆIð .Ð-r&   c                 óø   — t           j        j        }t          t           j        j        d¦  «        rt           j        j        j        }| j        D ]} ||¦  «         Œ| j        D ]}|                     ¦   «          Œd S rê   )r   r¡   r�   r    r¢   rÿ   r  rì   rë   s      r'   rì   zVitsHifiGan.apply_weight_norm÷  s…   € Ý”hÔ*ˆÝ•2”8Ô,¨mÑ<Ô<ð 	@Ýœ(Ô3Ô?ˆKà”^ð 	ð 	ˆEØˆK˜ÑÔÐÐØ”^ð 	&ð 	&ˆEØ×#Ò#Ñ%Ô%Ð%Ð%ð	&ð 	&r&   c                 ó”   — | j         D ]!}t          j                             |¦  «         Œ"| j        D ]}|                     ¦   «          Œd S r.   )rÿ   r   r¡   r»   r  r¼   s     r'   r»   zVitsHifiGan.remove_weight_norm  s\   € Ø”^ð 	/ð 	/ˆEÝŒH×'Ò'¨Ñ.Ô.Ð.Ð.Ø”^ð 	'ð 	'ˆEØ×$Ò$Ñ&Ô&Ð&Ð&ð	'ð 	'r&   Nr   r³   Úreturnc                 ój  — |                       |¦  «        }|�||                      |¦  «        z   }t          | j        ¦  «        D ]¦}t          j                             || j        j        ¦  «        } | j	        |         |¦  «        } | j
        || j        z           |¦  «        }t          d| j        ¦  «        D ]&}| | j
        || j        z  |z            |¦  «        z  }Œ'|| j        z  }Œ§t          j                             |¦  «        }|                      |¦  «        }t          j        |¦  «        }|S )aG  
        Converts a spectrogram into a speech waveform.

        Args:
            spectrogram (`torch.FloatTensor` of shape `(batch_size, config.spectrogram_bins, sequence_length)`):
                Tensor containing the spectrograms.
            global_conditioning (`torch.FloatTensor` of shape `(batch_size, config.speaker_embedding_size, 1)`, *optional*):
                Tensor containing speaker embeddings, for multispeaker models.

        Returns:
            `torch.FloatTensor`: Tensor of shape shape `(batch_size, 1, num_frames)` containing the speech waveform.
        Nr   )rÇ   r  r¦   rý   r   rN   rð   rŒ   rä   rÿ   r  rû   r  r!   r/   )rª   r   r³   r   r«   Ú	res_stateÚjr   s           r'   r¹   zVitsHifiGan.forward  s.  € ð Ÿš kÑ2Ô2ˆàÐ*Ø)¨D¯IªIÐ6IÑ,JÔ,JÑJˆMå�tÔ)Ñ*Ô*ð 	9ð 	9ˆAÝœM×4Ò4°]ÀDÄKÔD`ÑaÔaˆMØ-˜DœN¨1Ô-¨mÑ<Ô<ˆMà<˜œ q¨4Ô+;Ñ';Ô<¸]ÑKÔKˆIÝ˜1˜dÔ.Ñ/Ô/ð Uð U�ØÐE˜Tœ^¨A°Ô0@Ñ,@À1Ñ,DÔEÀmÑTÔTÑT�	�	Ø%¨Ô(8Ñ8ˆMˆMåœ×0Ò0°Ñ?Ô?ˆØŸš }Ñ5Ô5ˆÝ”:˜mÑ,Ô,ˆØˆr&   r.   )r   r   r   r   r˜   rì   r»   r!   r"   r¹   r¿   rÀ   s   @r'   rö   rö   Ò  s±   ø€ € € € € ð"e˜zð "eð "eð "eð "eð "eð "eðH&ð &ð &ð'ð 'ð 'ð _cð ð  Ø Ô,ð ØCHÔCTÐW[ÑC[ð à	Ô	ð ð  ð  ð  ð  ð  ð  ð  r&   rö   c                   ó,   ‡ — e Zd Zdefˆ fd„Zdd„Zˆ xZS )ÚVitsResidualCouplingLayerrŒ   c                 ó0  •— t          ¦   «                              ¦   «          |j        dz  | _        t	          j        | j        |j        d¦  «        | _        t          ||j	        ¬¦  «        | _
        t	          j        |j        | j        d¦  «        | _        d S )Nr]   r   rÄ   )r—   r˜   rÅ   Úhalf_channelsr   r¤   r™   rÇ   r‹   Ú prior_encoder_num_wavenet_layersrÉ   r  rË   s     €r'   r˜   z"VitsResidualCouplingLayer.__init__+  sz   ø€ Ý‰Œ×ÒÑÔÐØ#Ô-°Ñ2ˆÔåœ	 $Ô"4°fÔ6HÈ!ÑLÔLˆŒÝ" 6°fÔ6]Ð^Ñ^Ô^ˆŒÝœ 6Ô#5°tÔ7IÈ1ÑMÔMˆŒˆˆr&   NFc                 ó  — t          j        || j        gdz  d¬¦  «        \  }}|                      |¦  «        |z  }|                      |||¦  «        }|                      |¦  «        |z  }t          j        |¦  «        }	|sP||t          j        |	¦  «        z  |z  z   }t          j        ||gd¬¦  «        }
t          j	        |	ddg¦  «        }|
|fS ||z
  t          j        |	 ¦  «        z  |z  }t          j        ||gd¬¦  «        }
|
d fS )Nr]   r   rY   )
r!   rÍ   r  rÇ   rÉ   r  rJ   rM   Úcatrf   )rª   rA   r²   r³   rE   Ú
first_halfÚsecond_halfr   rÐ   rÑ   rR   Úlog_determinants               r'   r¹   z!VitsResidualCouplingLayer.forward3  s  € Ý"'¤+¨f°tÔ7IÐ6JÈQÑ6NÐTUÐ"VÑ"VÔ"VÑˆ
�KØŸš jÑ1Ô1°LÑ@ˆØŸš ]°LÐBUÑVÔVˆØ�~Š~˜mÑ,Ô,¨|Ñ;ˆÝÔ% dÑ+Ô+ˆ
àð 	!Ø ­u¬y¸Ñ/DÔ/DÑ!DÀ|Ñ!SÑSˆKÝ”i ¨[Ð 9¸qÐAÑAÔAˆGÝ#œi¨
°Q¸°FÑ;Ô;ˆOØ˜OÐ+Ð+à&¨Ñ-µ´¸J¸;Ñ1GÔ1GÑGÈ,ÑVˆKÝ”i ¨[Ð 9¸qÐAÑAÔAˆGØ˜D�=Ð r&   ©NFrÓ   rÀ   s   @r'   r  r  *  s_   ø€ € € € € ðN˜zð Nð Nð Nð Nð Nð Nð!ð !ð !ð !ð !ð !ð !ð !r&   r  c                   ó,   ‡ — e Zd Zdefˆ fd„Zdd„Zˆ xZS )ÚVitsResidualCouplingBlockrŒ   c                 óô   •— t          ¦   «                              ¦   «          t          j        ¦   «         | _        t          |j        ¦  «        D ])}| j                             t          |¦  «        ¦  «         Œ*d S r.   )	r—   r˜   r   rš   Úflowsr¦   Úprior_encoder_num_flowsr©   r  )rª   rŒ   rã   r¯   s      €r'   r˜   z"VitsResidualCouplingBlock.__init__F  sp   ø€ Ý‰Œ×ÒÑÔÐÝ”]‘_”_ˆŒ
Ý�vÔ5Ñ6Ô6ð 	Að 	AˆAØŒJ×ÒÕ7¸Ñ?Ô?Ñ@Ô@Ð@Ð@ð	Að 	Ar&   NFc                 óê   — |s1| j         D ](} ||||¦  «        \  }}t          j        |dg¦  «        }Œ)n?t          | j         ¦  «        D ]*}t          j        |dg¦  «        } ||||d¬¦  «        \  }}Œ+|S )Nr   T©rE   )r  r!   ÚflipÚreversed)rª   rA   r²   r³   rE   Úflowrã   s          r'   r¹   z!VitsResidualCouplingBlock.forwardL  s£   € Øð 	ZØœ
ð 1ð 1�Ø ˜D ¨Ð7JÑKÔK‘	�˜Ýœ F¨Q¨CÑ0Ô0��ð1õ ! ¤Ñ,Ô,ð Zð Z�Ýœ F¨Q¨CÑ0Ô0�Ø ˜D ¨Ð7JÐTXÐYÑYÔY‘	�˜˜Øˆr&   r  rÓ   rÀ   s   @r'   r  r  E  s_   ø€ € € € € ðA˜zð Að Að Að Að Að Að	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r&   r  c                   ó.   ‡ — e Zd Zddefˆ fd„Zdd„Zˆ xZS )ÚVitsDilatedDepthSeparableConvr@   rŒ   c                 ó,  •— t          ¦   «                              ¦   «          |j        }|j        }|j        | _        t          j        |¦  «        | _        t          j	        ¦   «         | _
        t          j	        ¦   «         | _        t          j	        ¦   «         | _        t          j	        ¦   «         | _        t          | j        ¦  «        D ]Ê}||z  }||z  |z
  dz  }| j
                             t          j        ||||||¬¦  «        ¦  «         | j                             t          j        ||d¦  «        ¦  «         | j                             t          j        |¦  «        ¦  «         | j                             t          j        |¦  «        ¦  «         ŒËd S )Nr]   )r’   r“   r”   Úgroupsr•   r–   r   )r—   r˜   Úduration_predictor_kernel_sizer™   Údepth_separable_num_layersr�   r   r�   rŸ   rš   Úconvs_dilatedÚconvs_pointwiseÚnorms_1Únorms_2r¦   r©   r¤   Ú	LayerNorm)	rª   rŒ   Údropout_rater”   rà   r«   r•   r–   r¯   s	           €r'   r˜   z&VitsDilatedDepthSeparableConv.__init__Y  se  ø€ Ý‰Œ×ÒÑÔÐØÔ;ˆØÔ%ˆØ Ô;ˆŒå”z ,Ñ/Ô/ˆŒÝœ]™_œ_ˆÔÝ!œ}™œˆÔÝ”}‘”ˆŒÝ”}‘”ˆŒÝ�t”Ñ'Ô'ð 	8ð 	8ˆAØ" A‘~ˆHØ" XÑ-°Ñ8¸QÑ>ˆGØÔ×%Ò%Ý”	Ø (Ø!)Ø +Ø#Ø%Ø#ðñ ô ñ	ô 	ð 	ð Ô ×'Ò'­¬	°(¸HÀaÑ(HÔ(HÑIÔIÐIØŒL×Ò¥¤¨XÑ 6Ô 6Ñ7Ô7Ð7ØŒL×Ò¥¤¨XÑ 6Ô 6Ñ7Ô7Ð7Ð7ð	8ð 	8r&   Nc                 óR  — |�||z   }t          | j        ¦  «        D �]} | j        |         ||z  ¦  «        } | j        |         |                     dd¦  «        ¦  «                             dd¦  «        }t
          j                             |¦  «        } | j        |         |¦  «        } | j	        |         |                     dd¦  «        ¦  «                             dd¦  «        }t
          j                             |¦  «        }|  
                    |¦  «        }||z   }�Œ||z  S ©Nr   r?   )r¦   r�   r)  r+  Ú	transposer   rN   Úgelur*  r,  rŸ   )rª   rA   r²   r³   r«   r   s         r'   r¹   z%VitsDilatedDepthSeparableConv.forwardu  s  € ØÐ*ØÐ1Ñ1ˆFå�t”Ñ'Ô'ð 	,ñ 	,ˆAØ1˜DÔ.¨qÔ1°&¸<Ñ2GÑHÔHˆMØ+˜DœL¨œO¨M×,CÒ,CÀAÀrÑ,JÔ,JÑKÔK×UÒUÐVWÐY[Ñ\Ô\ˆMÝœM×.Ò.¨}Ñ=Ô=ˆMØ3˜DÔ0°Ô3°MÑBÔBˆMØ+˜DœL¨œO¨M×,CÒ,CÀAÀrÑ,JÔ,JÑKÔK×UÒUÐVWÐY[Ñ\Ô\ˆMÝœM×.Ò.¨}Ñ=Ô=ˆMØ ŸLšL¨Ñ7Ô7ˆMØ˜mÑ+ˆF‰Fà˜Ñ$Ð$r&   )r@   r.   rÓ   rÀ   s   @r'   r$  r$  X  s]   ø€ € € € € ð8ð 8˜zð 8ð 8ð 8ð 8ð 8ð 8ð8%ð %ð %ð %ð %ð %ð %ð %r&   r$  c                   ó,   ‡ — e Zd Zdefˆ fd„Zdd„Zˆ xZS )ÚVitsConvFlowrŒ   c                 ó†  •— t          ¦   «                              ¦   «          |j        | _        |j        dz  | _        |j        | _        |j        | _	        t          j        | j        | j        d¦  «        | _        t          |¦  «        | _        t          j        | j        | j        | j        dz  dz
  z  d¦  «        | _        d S )Nr]   r   r   )r—   r˜   r™   Úfilter_channelsÚdepth_separable_channelsr  Úduration_predictor_flow_binsrm   Úduration_predictor_tail_boundrF   r   r¤   rÇ   r$  Úconv_ddsrÊ   rË   s     €r'   r˜   zVitsConvFlow.__init__‡  s¥   ø€ Ý‰Œ×ÒÑÔÐØ%Ô1ˆÔØ#Ô<ÀÑAˆÔØÔ;ˆŒØ Ô>ˆŒåœ	 $Ô"4°dÔ6JÈAÑNÔNˆŒÝ5°fÑ=Ô=ˆŒÝœ 4Ô#7¸Ô9KÈtÌ}Ð_`ÑO`ÐcdÑOdÑ9eÐghÑiÔiˆŒˆˆr&   NFc                 óÞ  — t          j        || j        gdz  d¬¦  «        \  }}|                      |¦  «        }|                      |||¦  «        }|                      |¦  «        |z  }|j        \  }}	}
|                     ||	d|
¦  «                             dddd¦  «        }|dd | j	        …f         t          j        | j        ¦  «        z  }|d| j	        d| j	        z  …f         t          j        | j        ¦  «        z  }|dd| j	        z  d …f         }t          |||||| j        ¬¦  «        \  }}t          j        ||gd¬¦  «        |z  }|st          j        ||z  ddg¦  «        }||fS |d fS )	Nr]   r   rY   r?   r   r   .)rE   rF   )r!   rÍ   r  rÇ   r:  rÊ   ra   ÚreshapeÚpermuterm   Úmathrj   r6  rU   rF   r  rf   )rª   rA   r²   r³   rE   r  r  r   Ú
batch_sizerà   ÚlengthrB   rC   rD   rS   rR   r  s                    r'   r¹   zVitsConvFlow.forward’  s¢  € Ý"'¤+¨f°tÔ7IÐ6JÈQÑ6NÐTUÐ"VÑ"VÔ"VÑˆ
�KàŸš jÑ1Ô1ˆØŸš m°\ÐCVÑWÔWˆØŸš }Ñ5Ô5¸ÑDˆà'1Ô'7Ñ$ˆ
�H˜fØ%×-Ò-¨j¸(ÀBÈÑOÔO×WÒWÐXYÐ[\Ð^_ÐabÑcÔcˆà+¨C°°4´=°Ð,@ÔAÅDÄIÈdÔNbÑDcÔDcÑcÐØ,¨S°$´-À!ÀdÄmÑBSÐ2SÐ-SÔTÕW[ÔW`ÐaeÔauÑWvÔWvÑvÐØ#0°°a¸$¼-Ñ6GÐ6IÐ6IÐ1IÔ#JÐ å#KØØØ Ø$ØØ”ð$
ñ $
ô $
Ñ ˆ�[õ ”)˜Z¨Ð5¸1Ð=Ñ=Ô=ÀÑLˆØð 	!Ý#œi¨°lÑ(BÀQÈÀFÑKÔKˆOØ˜OÐ+Ð+à˜D�=Ð r&   r  rÓ   rÀ   s   @r'   r4  r4  †  s_   ø€ € € € € ð	j˜zð 	jð 	jð 	jð 	jð 	jð 	jð!ð !ð !ð !ð !ð !ð !ð !r&   r4  c                   ó,   ‡ — e Zd Zdefˆ fd„Zdd„Zˆ xZS )ÚVitsElementwiseAffinerŒ   c                 ó$  •— t          ¦   «                              ¦   «          |j        | _        t	          j        t          j        | j        d¦  «        ¦  «        | _        t	          j        t          j        | j        d¦  «        ¦  «        | _	        d S ©Nr   )
r—   r˜   r7  rà   r   Ú	Parameterr!   ÚzerosÚ	translateÚ	log_scalerË   s     €r'   r˜   zVitsElementwiseAffine.__init__²  se   ø€ Ý‰Œ×ÒÑÔÐØÔ7ˆŒÝœ¥e¤k°$´-ÀÑ&CÔ&CÑDÔDˆŒÝœ¥e¤k°$´-ÀÑ&CÔ&CÑDÔDˆŒˆˆr&   NFc                 óö   — |sL| j         t          j        | j        ¦  «        |z  z   }||z  }t          j        | j        |z  ddg¦  «        }||fS || j         z
  t          j        | j         ¦  «        z  |z  }|d fS ©Nr   r]   )rG  r!   rM   rH  rf   )rª   rA   r²   r³   rE   rR   r  s          r'   r¹   zVitsElementwiseAffine.forward¸  s†   € Øð 	!Ø”n¥u¤y°´Ñ'@Ô'@À6Ñ'IÑIˆGØ Ñ,ˆGÝ#œi¨¬¸Ñ(EÈÈ1ÀvÑNÔNˆOØ˜OÐ+Ð+à ¤Ñ.µ%´)¸T¼^¸OÑ2LÔ2LÑLÈ|Ñ[ˆGØ˜D�=Ð r&   r  rÓ   rÀ   s   @r'   rB  rB  ±  s_   ø€ € € € € ðE˜zð Eð Eð Eð Eð Eð Eð!ð !ð !ð !ð !ð !ð !ð !r&   rB  c                   ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )ÚVitsStochasticDurationPredictorc                 óÞ  •— t          ¦   «                              ¦   «          |j        }|j        }t	          j        ||d¦  «        | _        t	          j        ||d¦  «        | _        t          ||j	        ¬¦  «        | _
        |dk    rt	          j        ||d¦  «        | _        t	          j        ¦   «         | _        | j                             t          |¦  «        ¦  «         t!          |j        ¦  «        D ])}| j                             t%          |¦  «        ¦  «         Œ*t	          j        d|d¦  «        | _        t	          j        ||d¦  «        | _        t          ||j	        ¬¦  «        | _        t	          j        ¦   «         | _        | j                             t          |¦  «        ¦  «         t!          |j        ¦  «        D ])}| j                             t%          |¦  «        ¦  «         Œ*d S )Nr   )r.  r   )r—   r˜   r£   r™   r   r¤   rÇ   rÊ   r$  Úduration_predictor_dropoutr:  r  rš   r  r©   rB  r¦   Úduration_predictor_num_flowsr4  Úpost_conv_preÚpost_conv_projÚpost_conv_ddsÚ
post_flows)rª   rŒ   Ú	embed_dimr6  rã   r¯   s        €r'   r˜   z(VitsStochasticDurationPredictor.__init__Ä  s¸  ø€ Ý‰Œ×ÒÑÔÐØÔ1ˆ	Ø Ô,ˆåœ	 /°?ÀAÑFÔFˆŒÝœ ?°OÀQÑGÔGˆŒÝ5ØØÔ:ð
ñ 
ô 
ˆŒð
 ˜Š>ˆ>Ýœ	 )¨_¸aÑ@Ô@ˆDŒIå”]‘_”_ˆŒ
ØŒ
×ÒÕ/°Ñ7Ô7Ñ8Ô8Ð8Ý�vÔ:Ñ;Ô;ð 	4ð 	4ˆAØŒJ×Ò�l¨6Ñ2Ô2Ñ3Ô3Ð3Ð3åœY q¨/¸1Ñ=Ô=ˆÔÝ œi¨¸È!ÑLÔLˆÔÝ:ØØÔ:ð
ñ 
ô 
ˆÔõ
 œ-™/œ/ˆŒØŒ×ÒÕ4°VÑ<Ô<Ñ=Ô=Ð=Ý�vÔ:Ñ;Ô;ð 	9ð 	9ˆAØŒO×"Ò"¥<°Ñ#7Ô#7Ñ8Ô8Ð8Ð8ð	9ð 	9r&   NFrX   c                 óê  — t          j        |¦  «        }|                      |¦  «        }|�,t          j        |¦  «        }||                      |¦  «        z   }|                      ||¦  «        }|                      |¦  «        |z  }|�sŽ|                      |¦  «        }|                      ||¦  «        }|                      |¦  «        |z  }t          j	        | 
                    d¦  «        d| 
                    d¦  «        ¦  «                             |j        |j        ¬¦  «        |z  }d}	|}
| j        D ]1} ||
|||z   ¬¦  «        \  }
}t          j        |
dg¦  «        }
|	|z  }	Œ2t          j        |
ddgd¬¦  «        \  }}|	t          j        t$          j                             |¦  «        t$          j                             | ¦  «        z   |z  ddg¦  «        z  }	t          j        dt+          j        dt*          j        z  ¦  «        |dz  z   z  |z  ddg¦  «        |	z
  }|t          j        |¦  «        z
  |z  }t          j        t          j        |d¦  «        ¦  «        |z  }t          j        | ddg¦  «        }t          j        ||gd¬¦  «        }| j        D ].} ||||¬¦  «        \  }}t          j        |dg¦  «        }||z  }Œ/t          j        d	t+          j        dt*          j        z  ¦  «        |dz  z   z  |z  ddg¦  «        |z
  }||z   S t9          t;          | j        ¦  «        ¦  «        }|d d
…         |d         gz   }t          j	        | 
                    d¦  «        d| 
                    d¦  «        ¦  «                             |j        |j        ¬¦  «        |z  }|D ]*}t          j        |dg¦  «        } ||||d¬¦  «        \  }}Œ+t          j        |ddgd¬¦  «        \  }}|S )Nr   r]   )ÚdeviceÚdtype)r³   r   rY   ç      à¿gñhãˆµøä>g      à?éþÿÿÿr?   T)r³   rE   )r!   ÚdetachrÇ   r  r:  rÊ   rP  rR  rQ  ÚrandnÚsizeÚtorV  rW  rS  r   rÍ   rf   r   rN   Ú
logsigmoidr>  rL   Úpir0   Ú	clamp_minr  r  Úlistr!  )rª   rA   r²   r³   Ú	durationsrE   Únoise_scaler   Úrandom_posteriorÚlog_determinant_posterior_sumÚlatents_posteriorr"  r  r  r  ÚlogqÚlog_determinant_sumÚlatentsÚnllr  rã   Úlog_durations                         r'   r¹   z'VitsStochasticDurationPredictor.forwardä  s+  € Ý”˜fÑ%Ô%ˆØ—’˜vÑ&Ô&ˆàÐ*Ý"'¤,Ð/BÑ"CÔ"CÐØ˜dŸišiÐ(;Ñ<Ô<Ñ<ˆFà—’˜v |Ñ4Ô4ˆØ—’ Ñ'Ô'¨,Ñ6ˆàñ 5	 Ø ×.Ò.¨yÑ9Ô9ˆMØ ×.Ò.¨}¸lÑKÔKˆMØ ×/Ò/°Ñ>Ô>ÀÑMˆMõ ”˜IŸNšN¨1Ñ-Ô-¨q°)·.².ÀÑ2CÔ2CÑDÔD×GÒGÈvÌ}ÐdjÔdpÐGÑqÔqØñð ð -.Ð)Ø 0ÐØœð Að A�Ø59°TØ% |ÈÐR_ÑI_ð6ñ 6ô 6Ñ2Ð! ?õ %*¤JÐ/@À1À#Ñ$FÔ$FÐ!Ø-°Ñ@Ð-Ð-å&+¤kÐ2CÀaÈÀVÐQRÐ&SÑ&SÔ&SÑ#ˆJ˜à)­U¬YÝ”×)Ò)¨*Ñ5Ô5½¼×8PÒ8PÐR\ÐQ\Ñ8]Ô8]Ñ]ÐamÑmÐpqÐstÐouñ.ô .ñ Ð)õ ”	˜$¥$¤(¨1­t¬w©;Ñ"7Ô"7Ð;KÈQÑ;NÑ"OÑPÐS_Ñ_ÐbcÐefÐagÑhÔhØ/ñ0ð ð
 $¥e¤m°JÑ&?Ô&?Ñ?À<ÑOˆJÝœ¥5¤?°:¸tÑ#DÔ#DÑEÔEÈÑTˆJÝ"'¤)¨Z¨K¸!¸Q¸Ñ"@Ô"@Ðå”i ¨[Ð 9¸qÐAÑAÔAˆGØœ
ð 7ð 7�Ø+/¨4°¸Ð[aÐ+bÑ+bÔ+bÑ(�˜Ýœ* W¨q¨cÑ2Ô2�Ø# Ñ6Ð#Ð#å”)˜C¥4¤8¨Aµ´©KÑ#8Ô#8¸GÀQ¹JÑ#GÑHÈ<ÑWÐZ[Ð]^ÐY_Ñ`Ô`ÐcvÑvˆCØ˜‘:Ðå� $¤*Ñ-Ô-Ñ.Ô.ˆEØ˜#˜2˜#”J %¨¤) Ñ,ˆEõ ”˜FŸKšK¨™NœN¨A¨v¯{ª{¸1©~¬~Ñ>Ô>×AÒAÈÌÐ^dÔ^jÐAÑkÔkØñð ð ð cð c�Ýœ* W¨q¨cÑ2Ô2�Ø!˜T '¨<ÈVÐ]aÐbÑbÔb‘
�˜˜å#œk¨'°A°q°6¸qÐAÑAÔA‰OˆL˜!ØÐr&   )NNFrX   ©r   r   r   r˜   r¹   r¿   rÀ   s   @r'   rL  rL  Ã  sU   ø€ € € € € ð9ð 9ð 9ð 9ð 9ð@@ ð @ ð @ ð @ ð @ ð @ ð @ ð @ r&   rL  c                   ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )ÚVitsDurationPredictorc                 óD  •— t          ¦   «                              ¦   «          |j        }|j        }t	          j        |j        ¦  «        | _        t	          j        |j	        |||dz  ¬¦  «        | _
        t	          j        ||j        ¬¦  «        | _        t	          j        ||||dz  ¬¦  «        | _        t	          j        ||j        ¬¦  «        | _        t	          j        |dd¦  «        | _        |j        dk    r't	          j        |j        |j	        d¦  «        | _        d S d S )Nr]   )r–   ©Úepsr   r   )r—   r˜   r'  Ú"duration_predictor_filter_channelsr   r�   rN  rŸ   r¤   r™   Úconv_1r-  Úlayer_norm_epsÚnorm_1Úconv_2Únorm_2Úprojr£   r  )rª   rŒ   r”   r6  r¯   s       €r'   r˜   zVitsDurationPredictor.__init__(  sÿ   ø€ Ý‰Œ×ÒÑÔÐØÔ;ˆØ ÔCˆå”z &Ô"CÑDÔDˆŒÝ”i Ô 2°OÀ[ÐZeÐijÑZjÐkÑkÔkˆŒÝ”l ?¸Ô8MÐNÑNÔNˆŒÝ”i °À+ÐWbÐfgÑWgÐhÑhÔhˆŒÝ”l ?¸Ô8MÐNÑNÔNˆŒÝ”I˜o¨q°!Ñ4Ô4ˆŒ	àÔ(¨AÒ-Ð-Ýœ	 &Ô"?ÀÔASÐUVÑWÔWˆDŒIˆIˆIð .Ð-r&   Nc                 ó¸  — t          j        |¦  «        }|�,t          j        |¦  «        }||                      |¦  «        z   }|                      ||z  ¦  «        }t          j        |¦  «        }|                      |                     dd¦  «        ¦  «                             dd¦  «        }|                      |¦  «        }|                      ||z  ¦  «        }t          j        |¦  «        }|  	                    |                     dd¦  «        ¦  «                             dd¦  «        }|                      |¦  «        }|  
                    ||z  ¦  «        }||z  S r0  )r!   rZ  r  rs  Úreluru  r1  rŸ   rv  rw  rx  )rª   rA   r²   r³   s       r'   r¹   zVitsDurationPredictor.forward7  s.  € Ý”˜fÑ%Ô%ˆàÐ*Ý"'¤,Ð/BÑ"CÔ"CÐØ˜dŸišiÐ(;Ñ<Ô<Ñ<ˆFà—’˜V lÑ2Ñ3Ô3ˆÝ”˜FÑ#Ô#ˆØ—’˜V×-Ò-¨a°Ñ4Ô4Ñ5Ô5×?Ò?ÀÀ2ÑFÔFˆØ—’˜fÑ%Ô%ˆà—’˜V lÑ2Ñ3Ô3ˆÝ”˜FÑ#Ô#ˆØ—’˜V×-Ò-¨a°Ñ4Ô4Ñ5Ô5×?Ò?ÀÀ2ÑFÔFˆØ—’˜fÑ%Ô%ˆà—’˜6 LÑ0Ñ1Ô1ˆØ˜Ñ$Ð$r&   r.   rl  rÀ   s   @r'   rn  rn  '  sQ   ø€ € € € € ðXð Xð Xð Xð Xð%ð %ð %ð %ð %ð %ð %ð %r&   rn  c                   óÐ   ‡ — e Zd ZdZdefˆ fd„Zdej        dedefd„Z		 	 	 dd
ej        dej        dz  dej        dz  de
deej        ej        dz  f         f
d„Zd„ Zd„ Zd„ Zˆ xZS )ÚVitsAttentionz?Multi-headed attention with relative positional representation.rŒ   c                 óÜ  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        |j        | _        |j        | _        | j        | j        z  | _	        | j	        dz  | _
        | j	        | j        z  | j        k    r t          d| j        › d| j        › d�¦  «        ‚t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _        t          j        | j        | j        |j        ¬¦  «        | _        | j        rŒt          j        t)          j        d| j        dz  dz   | j	        ¦  «        | j
        z  ¦  «        | _        t          j        t)          j        d| j        dz  dz   | j	        ¦  «        | j
        z  ¦  «        | _        d S d S )NrX  zIhidden_size must be divisible by num_attention_heads (got `hidden_size`: z and `num_attention_heads`: z).)rù   r   r]   )r—   r˜   r™   rT  Únum_attention_headsÚ	num_headsÚattention_dropoutrŸ   Úwindow_sizeÚhead_dimÚscalingrb   r   ÚLinearÚuse_biasÚk_projÚv_projÚq_projÚout_projrE  r!   r[  Ú	emb_rel_kÚ	emb_rel_vrË   s     €r'   r˜   zVitsAttention.__init__O  sÁ  ø€ Ý‰Œ×ÒÑÔÐØÔ+ˆŒØÔ3ˆŒØÔ/ˆŒØ!Ô-ˆÔàœ¨$¬.Ñ8ˆŒØ”} dÑ*ˆŒàŒM˜DœNÑ*¨t¬~Ò=Ð=ÝðBÐ\`Ô\jð Bð BØ/3¬~ðBð Bð Bñô ð õ
 ”i ¤°´ÀVÄ_ÐUÑUÔUˆŒÝ”i ¤°´ÀVÄ_ÐUÑUÔUˆŒÝ”i ¤°´ÀVÄ_ÐUÑUÔUˆŒÝœ	 $¤.°$´.ÀvÄÐWÑWÔWˆŒàÔð 	rÝœ\­%¬+°a¸Ô9IÈAÑ9MÐPQÑ9QÐSWÔS`Ñ*aÔ*aÐdhÔdpÑ*pÑqÔqˆDŒNÝœ\­%¬+°a¸Ô9IÈAÑ9MÐPQÑ9QÐSWÔS`Ñ*aÔ*aÐdhÔdpÑ*pÑqÔqˆDŒNˆNˆNð	rð 	rr&   ÚtensorÚseq_lenÚbszc                 ó’   — |                      ||| j        | j        ¦  «                             dd¦  «                             ¦   «         S rJ  )Úviewr  r‚  r1  Ú
contiguous)rª   rŒ  r�  rŽ  s       r'   Ú_shapezVitsAttention._shapeh  s<   € Ø�{Š{˜3 ¨¬¸¼ÑGÔG×QÒQÐRSÐUVÑWÔW×bÒbÑdÔdÐdr&   NFr   Úkey_value_statesÚattention_maskÚoutput_attentionsr
  c                 ó  — |                      ¦   «         \  }}}|                      |¦  «        | j        z  }|                      |                      |¦  «        d|¦  «        }	|                      |                      |¦  «        d|¦  «        }
|| j        z  d| j        f} |                      |||¦  «        j        |Ž } |	j        |Ž }	 |
j        |Ž }
|	                      d¦  «        }t          j
        ||	                     dd¦  «        ¦  «        }|                      ¦   «         || j        z  ||fk    r2t          d|| j        z  ||f› d|                      ¦   «         › �¦  «        ‚| j        �^|                      | j        |¦  «        }t          j        ||                     dd¦  «        ¦  «        }|                      |¦  «        }||z  }|�†|                      ¦   «         |d||fk    r+t          d|d||f› d|                      ¦   «         › �¦  «        ‚|                     || j        ||¦  «        |z   }|                     || j        z  ||¦  «        }t$          j                             |d¬	¦  «        }|r=|                     || j        ||¦  «        }|                     || j        z  ||¦  «        }nd}t$          j                             || j        | j        ¬
¦  «        }t          j
        ||
¦  «        }|                      ¦   «         || j        z  || j        fk    r5t          d|| j        || j        f› d|                      ¦   «         › �¦  «        ‚| j        �J|                      | j        |¦  «        }|                      |¦  «        }t          j        ||¦  «        }||z  }|                     || j        || j        ¦  «        }|                     dd¦  «        }|                     ||| j        ¦  «        }|                      |¦  «        }||fS )z#Input shape: Batch x Time x Channelr?   r   r]   z$Attention weights should be of size z	, but is NrY  z!Attention mask should be of size rY   )ÚpÚtrainingz `attn_output` should be of size )r\  rˆ  rƒ  r’  r†  r‡  r  r‚  r�  r!   Úbmmr1  rb   r�  Ú_get_relative_embeddingsrŠ  ÚmatmulÚ'_relative_position_to_absolute_positionr   rN   rc   rŸ   r˜  r‹  Ú'_absolute_position_to_relative_positionr<  rT  r‰  )rª   r   r“  r”  r•  rŽ  Útgt_lenrã   Úquery_statesÚ
key_statesÚvalue_statesÚ
proj_shapeÚsrc_lenÚattn_weightsÚkey_relative_embeddingsÚrelative_logitsÚrel_pos_biasÚattn_weights_reshapedÚ
attn_probsÚattn_outputÚvalue_relative_embeddingsÚrelative_weightss                         r'   r¹   zVitsAttention.forwardk  s?  € ð (×,Ò,Ñ.Ô.‰ˆˆW�að —{’{ =Ñ1Ô1°D´LÑ@ˆð —[’[ §¢¨]Ñ!;Ô!;¸RÀÑEÔEˆ
Ø—{’{ 4§;¢;¨}Ñ#=Ô#=¸rÀ3ÑGÔGˆà˜DœNÑ*¨B°´Ð>ˆ
ØC�t—{’{ <°¸#Ñ>Ô>ÔCÀZÐPˆØ$�Z”_ jÐ1ˆ
Ø(�|Ô(¨*Ð5ˆà—/’/ !Ñ$Ô$ˆÝ”y ¨z×/CÒ/CÀAÀqÑ/IÔ/IÑJÔJˆà×ÒÑÔ 3¨¬Ñ#7¸À'Ð"JÒJÐJÝð*¸¸d¼nÑ8LÈgÐW^Ð7_ð *ð *Ø ×%Ò%Ñ'Ô'ð*ð *ñô ð ð
 ÔÐ'Ø&*×&CÒ&CÀDÄNÐT[Ñ&\Ô&\Ð#Ý#œl¨<Ð9P×9ZÒ9ZÐ[]Ð_aÑ9bÔ9bÑcÔcˆOØ×GÒGÈÑXÔXˆLØ˜LÑ(ˆLàÐ%Ø×"Ò"Ñ$Ô$¨¨a°¸'Ð(BÒBÐBÝ Øt¸¸aÀÈ'Ð8RÐtÐtÐ]k×]pÒ]pÑ]rÔ]rÐtÐtñô ð ð (×,Ò,¨S°$´.À'È7ÑSÔSÐVdÑdˆLØ'×,Ò,¨S°4´>Ñ-AÀ7ÈGÑTÔTˆLå”}×,Ò,¨\¸rÐ,ÑBÔBˆàð 	)ð
 %1×$5Ò$5°c¸4¼>È7ÐT[Ñ$\Ô$\Ð!Ø0×5Ò5°c¸D¼NÑ6JÈGÐU\Ñ]Ô]ˆLˆLà$(Ð!å”]×*Ò*¨<¸4¼<ÐRVÔR_Ð*Ñ`Ô`ˆ
å”i 
¨LÑ9Ô9ˆà×ÒÑÔ #¨¬Ñ"6¸ÀÄÐ!OÒOÐOÝð)°C¸¼ÈÐRVÔR_Ð3`ð )ð )Ø×$Ò$Ñ&Ô&ð)ð )ñô ð ð
 ÔÐ'Ø(,×(EÒ(EÀdÄnÐV]Ñ(^Ô(^Ð%Ø#×KÒKÈJÑWÔWÐÝ œ<Ð(8Ð:SÑTÔTˆLØ˜<Ñ'ˆKà!×&Ò& s¨D¬N¸GÀTÄ]ÑSÔSˆØ!×+Ò+¨A¨qÑ1Ô1ˆð "×)Ò)¨#¨w¸¼ÑGÔGˆà—m’m KÑ0Ô0ˆàÐ1Ð1Ð1r&   c           	      óø   — t          || j        dz   z
  d¦  «        }|dk    r&t          j                             |dd||ddg¦  «        }t          | j        dz   |z
  d¦  «        }|d|z  z   dz
  }|d d …||…f         S )Nr   r   r]   )r`   r�  r   rN   r<   )rª   Úrelative_embeddingsr@  Ú
pad_lengthÚslice_start_positionÚslice_end_positions         r'   rš  z&VitsAttention._get_relative_embeddingsÃ  s�   € Ý˜ 4Ô#3°aÑ#7Ñ8¸!Ñ<Ô<ˆ
Ø˜Š>ˆ>Ý"$¤-×"3Ò"3Ð4GÈ!ÈQÐPZÐ\fÐhiÐklÐImÑ"nÔ"nÐå" DÔ$4°qÑ$8¸FÑ#BÀAÑFÔFÐØ1°A¸±JÑ>ÀÑBÐØ" 1 1 1Ð&:Ð;MÐ&MÐ#MÔNÐNr&   c                 ól  — |                      ¦   «         \  }}}t          j                             |g d¢¦  «        }|                     ||dz  |z  g¦  «        }t          j                             |d|dz
  ddg¦  «        }|                     ||dz   d|z  dz
  g¦  «        }|d d …d |…|dz
  d …f         }|S )N)r   r   r   r   r   r   r]   r   r   ©r\  r   rN   r<   r�  ©rª   ÚxÚbatch_headsr@  rã   Úx_flatÚx_finals          r'   rœ  z5VitsAttention._relative_position_to_absolute_positionÌ  sÇ   € Ø!"§¢¡¤Ñˆ�V˜Qõ ŒM×Ò˜aÐ!3Ð!3Ð!3Ñ4Ô4ˆð —’˜ f¨q¡j°6Ñ&9Ð:Ñ;Ô;ˆÝ”×"Ò" 6¨A¨v¸©z¸1¸aÐ+@ÑAÔAˆð —+’+˜{¨F°Q©J¸¸F¹
ÀQ¹ÐGÑHÔHˆØ˜!˜!˜!˜W˜f˜W f¨q¡j l lÐ2Ô3ˆØˆr&   c           	      ód  — |                      ¦   «         \  }}}t          j                             |d|dz
  ddddg¦  «        }|                     ||d|z  dz
  z  g¦  «        }t          j                             ||dddg¦  «        }|                     ||d|z  g¦  «        d d …d d …dd …f         }|S )Nr   r   r]   r³  r´  s          r'   r�  z5VitsAttention._absolute_position_to_relative_positionÛ  s½   € Ø!"§¢¡¤Ñˆ�V˜Qõ ŒM×Ò˜a ! V¨a¡Z°°A°q¸!Ð!<Ñ=Ô=ˆØ—’˜ f°°F±
¸Q±Ñ&?Ð@ÑAÔAˆõ ”×"Ò" 6¨F°A°q¸!Ð+<Ñ=Ô=ˆØ—+’+˜{¨F°A¸±JÐ?Ñ@Ô@ÀÀÀÀAÀAÀAÀqÀrÀrÀÔJˆØˆr&   )NNF)r   r   r   r    r   r˜   r!   ÚTensorr¾   r’  Úboolr$   r¹   rš  rœ  r�  r¿   rÀ   s   @r'   r|  r|  L  s5  ø€ € € € € ØIÐIðr˜zð rð rð rð rð rð rð2e˜Uœ\ð e°Cð e¸cð eð eð eð eð 15Ø.2Ø"'ðV2ð V2à”|ðV2ð  œ,¨Ñ-ðV2ð œ tÑ+ð	V2ð
  ðV2ð 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ðV2ð V2ð V2ð V2ðpOð Oð Oðð ð ð
ð 
ð 
ð 
ð 
ð 
ð 
r&   r|  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚVitsFeedForwardc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        |j        ¦  «        | _        t          j        |j        |j        |j        ¦  «        | _        t          j	        |j
        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _        n|j        | _        |j        dk    r&|j        dz
  dz  }|j        dz  }||ddddg| _        d S d | _        d S )Nr   r]   r   )r—   r˜   r   r¤   r™   Úffn_dimÚffn_kernel_sizers  rv  r�   Úactivation_dropoutrŸ   Ú
isinstanceÚ
hidden_actÚstrr   Úact_fnr–   )rª   rŒ   Úpad_leftÚ	pad_rightr¯   s       €r'   r˜   zVitsFeedForward.__init__é  sç   ø€ Ý‰Œ×ÒÑÔÐÝ”i Ô 2°F´NÀFÔDZÑ[Ô[ˆŒÝ”i ¤°Ô0BÀFÔDZÑ[Ô[ˆŒÝ”z &Ô";Ñ<Ô<ˆŒå�fÔ'­Ñ-Ô-ð 	,Ý  Ô!2Ô3ˆDŒKˆKà Ô+ˆDŒKàÔ! AÒ%Ð%ØÔ.°Ñ2°qÑ8ˆHØÔ.°!Ñ3ˆIØ$ i°°A°q¸!Ð<ˆDŒLˆLˆLàˆDŒLˆLˆLr&   c                 ó  — |                      ddd¦  «        }|                      ddd¦  «        }||z  }| j        �%t          j                             || j        ¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }||z  }| j        �%t          j                             || j        ¦  «        }|                      |¦  «        }||z  }|                      ddd¦  «        }|S )Nr   r]   r   )	r=  r–   r   rN   r<   rs  rÅ  rŸ   rv  )rª   r   r²   s      r'   r¹   zVitsFeedForward.forwardû  sñ   € Ø%×-Ò-¨a°°AÑ6Ô6ˆØ#×+Ò+¨A¨q°!Ñ4Ô4ˆà%¨Ñ4ˆØŒ<Ð#ÝœM×-Ò-¨m¸T¼\ÑJÔJˆMàŸš MÑ2Ô2ˆØŸš MÑ2Ô2ˆØŸš ]Ñ3Ô3ˆà%¨Ñ4ˆØŒ<Ð#ÝœM×-Ò-¨m¸T¼\ÑJÔJˆMàŸš MÑ2Ô2ˆØ%¨Ñ4ˆà%×-Ò-¨a°°AÑ6Ô6ˆØÐr&   rl  rÀ   s   @r'   r½  r½  è  sG   ø€ € € € € ð ð  ð  ð  ð  ð$ð ð ð ð ð ð r&   r½  c            	       óf   ‡ — e Zd Zdefˆ fd„Z	 	 d
dej        dej        dej        dz  defd	„Z	ˆ xZ
S )ÚVitsEncoderLayerrŒ   c                 óh  •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          j        |j        ¦  «        | _        t	          j        |j	        |j
        ¬¦  «        | _        t          |¦  «        | _        t	          j        |j	        |j
        ¬¦  «        | _        d S )Nrp  )r—   r˜   r|  Ú	attentionr   r�   Úhidden_dropoutrŸ   r-  r™   rt  Ú
layer_normr½  Úfeed_forwardÚfinal_layer_normrË   s     €r'   r˜   zVitsEncoderLayer.__init__  s‹   ø€ Ý‰Œ×ÒÑÔÐÝ& vÑ.Ô.ˆŒÝ”z &Ô"7Ñ8Ô8ˆŒÝœ, vÔ'9¸vÔ?TÐUÑUÔUˆŒÝ+¨FÑ3Ô3ˆÔÝ "¤¨VÔ-?ÀVÔEZÐ [Ñ [Ô [ˆÔÐÐr&   NFr   r²   r”  r•  c                 ó:  — |}|                       |||¬¦  «        \  }}|                      |¦  «        }|                      ||z   ¦  «        }|}|                      ||¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|f}|r||fz  }|S )N)r   r”  r•  )rÌ  rŸ   rÎ  rÏ  rÐ  )rª   r   r²   r”  r•  ró   r¤  rR   s           r'   r¹   zVitsEncoderLayer.forward  s¼   € ð !ˆØ&*§n¢nØ'Ø)Ø/ð '5ñ '
ô '
Ñ#ˆ�|ð Ÿš ]Ñ3Ô3ˆØŸš¨°=Ñ(@ÑAÔAˆà ˆØ×)Ò)¨-¸ÑFÔFˆØŸš ]Ñ3Ô3ˆØ×-Ò-¨h¸Ñ.FÑGÔGˆà Ð"ˆàð 	'Ø˜�Ñ&ˆGàˆr&   r  )r   r   r   r   r˜   r!   rº  r"   r»  r¹   r¿   rÀ   s   @r'   rÊ  rÊ    sž   ø€ € € € € ð\˜zð \ð \ð \ð \ð \ð \ð /3Ø"'ðð à”|ðð Ô'ðð œ tÑ+ð	ð
  ðð ð ð ð ð ð ð r&   rÊ  c                   óŽ   ‡ — e Zd Zdefˆ fd„Z	 	 	 	 ddej        dej        dej        dz  dedz  dedz  d	edz  d
e	e
z  fd„Zˆ xZS )ÚVitsEncoderrŒ   c                 óì   •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        ‰j	        | _	        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r%   )rÊ  )rß   rã   rŒ   s     €r'   rá   z(VitsEncoder.__init__.<locals>.<listcomp>=  s"   ø€ Ð$gÐ$gÐ$gÀ!Õ%5°fÑ%=Ô%=Ð$gÐ$gÐ$gr&   F)
r—   r˜   rŒ   r   rš   r¦   Únum_hidden_layersÚlayersÚgradient_checkpointingÚ	layerdroprË   s    `€r'   r˜   zVitsEncoder.__init__:  sh   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”mÐ$gÐ$gÐ$gÐ$gÅuÈVÔMeÑGfÔGfÐ$gÑ$gÔ$gÑhÔhˆŒØ&+ˆÔ#ØÔ)ˆŒˆˆr&   Nr   r²   r”  r•  Úoutput_hidden_statesÚreturn_dictr
  c                 óè  — |rdnd }|rdnd }t          | j        ||¬¦  «        }||z  }t          ¦   «         pt          | ¦  «        }	| j        D ]i}
|r||fz   }t
          j                             dd¦  «        }| j        o
|| j	        k     }|r|	r |
||||¬¦  «        }|d         }|rd}|r||d         fz   }Œj||z  }|r||fz   }|st          d„ |||fD ¦   «         ¦  «        S t          |||¬¦  «        S )	Nr%   )rŒ   Úinputs_embedsr”  r   r   )r”  r²   r•  )NNc              3   ó   K  — | ]}|®|V — Œ	d S r.   r%   )rß   Úvs     r'   ú	<genexpr>z&VitsEncoder.forward.<locals>.<genexpr>u  s(   è è € ÐmÐm˜qÐ_`Ð_l˜Ð_lÐ_lÐ_lÐ_lÐmÐmr&   )r*   r   r   )r   rŒ   r	   r
   r×  rK   ÚrandomÚuniformr˜  rÙ  r$   r   )rª   r   r²   r”  r•  rÚ  rÛ  Úall_hidden_statesÚall_self_attentionsÚsynced_gpusÚencoder_layerÚdropout_probabilityÚskip_the_layerÚlayer_outputss                 r'   r¹   zVitsEncoder.forwardA  s•  € ð #7Ð@˜B˜B¸DÐØ$5Ð?˜b˜b¸4Ðå2Ø”;Ø'Ø)ð
ñ 
ô 
ˆð &¨Ñ4ˆå0Ñ2Ô2ÐRÕ6LÈTÑ6RÔ6Rˆà!œ[ð 	Pð 	PˆMØ#ð IØ$5¸Ð8HÑ$HÐ!õ #%¤)×"3Ò"3°A°qÑ"9Ô"9Ðà!œ]ÐUÐ0CÀdÄnÒ0TˆNØ!ð 1 [ð 1à - Ø!Ø#1Ø!-Ø&7ð	!ñ !ô !�ð !.¨aÔ 0�àð -Ø ,�à ð PØ&9¸]È1Ô=MÐ<OÑ&OÐ#øà%¨Ñ4ˆàð 	EØ 1°]Ð4DÑ DÐàð 	nÝÐmÐm ]Ð4EÐGZÐ$[ÐmÑmÔmÑmÔmÐmåØ+Ø+Ø*ð
ñ 
ô 
ð 	
r&   )NNNN)r   r   r   r   r˜   r!   r"   rº  r»  r$   r   r¹   r¿   rÀ   s   @r'   rÓ  rÓ  9  sÍ   ø€ € € € € ð*˜zð *ð *ð *ð *ð *ð *ð /3Ø)-Ø,0Ø#'ð:
ð :
àÔ(ð:
ð Ô'ð:
ð œ tÑ+ð	:
ð
   $™;ð:
ð # T™kð:
ð ˜D‘[ð:
ð 
�Ñ	 ð:
ð :
ð :
ð :
ð :
ð :
ð :
ð :
r&   rÓ  c                   ó¨   ‡ — e Zd ZdZdefˆ fd„Z	 	 	 	 ddej        dej        dej        dz  d	e	dz  d
e	dz  de	dz  de
ej                 ez  fd„Zˆ xZS )ÚVitsTextEncoderzs
    Transformer encoder that uses relative positional representation instead of absolute positional encoding.
    rŒ   c                 ó$  •— t          ¦   «                              ¦   «          || _        t          j        |j        |j        |j        ¦  «        | _        t          |¦  «        | _
        t          j        |j        |j        dz  d¬¦  «        | _        d S )Nr]   r   )r”   )r—   r˜   rŒ   r   Ú	EmbeddingÚ
vocab_sizer™   Úpad_token_idÚembed_tokensrÓ  Úencoderr¤   rÅ   ÚprojectrË   s     €r'   r˜   zVitsTextEncoder.__init__ƒ  sw   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝœL¨Ô):¸FÔ<NÐPVÔPcÑdÔdˆÔÝ" 6Ñ*Ô*ˆŒÝ”y Ô!3°VÔ5EÈÑ5IÐWXÐYÑYÔYˆŒˆˆr&   NTÚ	input_idsr²   r”  r•  rÚ  rÛ  r
  c                 óî  — |                       |¦  «        t          j        | j        j        ¦  «        z  }|                      ||||||¬¦  «        }|s|d         n|j        }	|                      |	                     dd¦  «        ¦  «                             dd¦  «        |z  }
t          j
        |
| j        j        d¬¦  «        \  }}|s|	||f|dd …         z   }|S t          |	|||j        |j        ¬¦  «        S )N)r   r²   r”  r•  rÚ  rÛ  r   r   r]   rY   )r*   r+   r,   r   r   )rð  r>  rj   rŒ   r™   rñ  r*   rò  r1  r!   rÍ   rÅ   r)   r   r   )rª   ró  r²   r”  r•  rÚ  rÛ  r   Úencoder_outputsr*   rÏ   r+   r,   rR   s                 r'   r¹   zVitsTextEncoder.forwardŠ  s!  € ð ×)Ò)¨)Ñ4Ô4µt´yÀÄÔAXÑ7YÔ7YÑYˆàŸ,š,Ø'Ø%Ø)Ø/Ø!5Ø#ð 'ñ 
ô 
ˆð 7BÐh˜O¨AÔ.Ð.ÀÔGhÐà—’Ð.×8Ò8¸¸AÑ>Ô>Ñ?Ô?×IÒIÈ!ÈQÑOÔOÐR^Ñ^ˆÝ+0¬;°u¸d¼kÔ>SÐYZÐ+[Ñ+[Ô+[Ñ(ˆÐ(àð 	Ø(¨+Ð7JÐKÈoÐ^_Ð^`Ð^`ÔNaÑaˆGØˆNå$Ø/Ø#Ø 3Ø)Ô7Ø&Ô1ð
ñ 
ô 
ð 	
r&   )NNNT)r   r   r   r    r   r˜   r!   rº  r"   r»  r$   r)   r¹   r¿   rÀ   s   @r'   rë  rë  ~  så   ø€ € € € € ðð ðZ˜zð Zð Zð Zð Zð Zð Zð /3Ø)-Ø,0Ø#'ð#
ð #
à”<ð#
ð Ô'ð#
ð œ tÑ+ð	#
ð
   $™;ð#
ð # T™kð#
ð ˜D‘[ð#
ð 
ˆuŒ|Ô	Ð4Ñ	4ð#
ð #
ð #
ð #
ð #
ð #
ð #
ð #
r&   rë  c                   óp   ‡ — e Zd ZU eed<   dZdZdZ ej	        ¦   «         de
j        fˆ fd„¦   «         Zˆ xZS )ÚVitsPreTrainedModelrŒ   Úvitsró  TÚmodulec                 óü  •— t          ¦   «                              |¦  «         t          |t          j        t          j        f¦  «        rpt          j        |j        ¦  «         |j	        �Nt          j        |j        |j        |j        d         z  z  ¦  «        }t          j        |j	        | |¬¦  «         dS dS t          |t           ¦  «        re| j        j        rW| j        j        | j        j        z  }t          j        |j        |dz  ¬¦  «         t          j        |j        |dz  ¬¦  «         dS dS t          |t0          ¦  «        r4t          j        |j        ¦  «         t          j        |j        ¦  «         dS dS )zInitialize the weightsNr   )r…   r†   rX  )Ústd)r—   Ú_init_weightsrÂ  r   r¤   r  ÚinitÚkaiming_normal_r�   rù   r>  rj   r&  r’   r”   Úuniform_r|  rŒ   r�  r™   r~  Únormal_rŠ  r‹  rB  Úzeros_rG  rH  )rª   rù  Úkr‚  r¯   s       €r'   rü  z!VitsPreTrainedModel._init_weights·  so  ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�f�rœy­"Ô*<Ð=Ñ>Ô>ð 	*ÝÔ  ¤Ñ/Ô/Ð/ØŒ{Ð&Ý”I˜fœm¨vÔ/AÀFÔDVÐWXÔDYÑ/YÑZÑ[Ô[�Ý”˜fœk¨a¨R°1Ð5Ñ5Ô5Ð5Ð5Ð5ð 'Ð&õ ˜¥Ñ.Ô.ð 	*ØŒ{Ô&ð CØœ;Ô2°d´kÔ6UÑU�Ý”˜VÔ-°8¸T±>ÐBÑBÔBÐBÝ”˜VÔ-°8¸T±>ÐBÑBÔBÐBÐBÐBðCð Cõ ˜Õ 5Ñ6Ô6ð 	*ÝŒK˜Ô(Ñ)Ô)Ð)ÝŒK˜Ô(Ñ)Ô)Ð)Ð)Ð)ð	*ð 	*r&   )r   r   r   r   r#   Úbase_model_prefixÚmain_input_nameÚsupports_gradient_checkpointingr!   Úno_gradr   ÚModulerü  r¿   rÀ   s   @r'   r÷  r÷  °  sw   ø€ € € € € € àÐÐÑØÐØ!€OØ&*Ð#à€U„]�_„_ð* B¤Ið *ð *ð *ð *ð *ñ „_ð*ð *ð *ð *ð *r&   r÷  z@
    The complete VITS model, for text-to-speech synthesis.
    c                   óÒ   ‡ — e Zd Zdefˆ fd„Ze	 	 	 	 	 	 	 	 ddej        dz  dej        dz  dedz  de	dz  de	dz  d	e	dz  d
ej
        dz  dedz  dee         ez  fd„¦   «         Zˆ xZS )Ú	VitsModelrŒ   c                 ó&  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _        |j	        rt          |¦  «        | _        nt          |¦  «        | _        |j        dk    r$t          j        |j        |j        ¦  «        | _        t%          |¦  «        | _        |j        | _        |j        | _        |j        | _        |                      ¦   «          d S rD  )r—   r˜   rŒ   rë  Útext_encoderr  r"  rö   ÚdecoderÚ"use_stochastic_duration_predictionrL  Úduration_predictorrn  Únum_speakersr   rí  r£   Úembed_speakerrÂ   Úposterior_encoderÚspeaking_raterc  Únoise_scale_durationÚ	post_initrË   s     €r'   r˜   zVitsModel.__init__Ð  sô   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒÝ+¨FÑ3Ô3ˆÔÝ-¨fÑ5Ô5ˆŒ	Ý" 6Ñ*Ô*ˆŒàÔ4ð 	DÝ&EÀfÑ&MÔ&MˆDÔ#Ð#å&;¸FÑ&CÔ&CˆDÔ#àÔ Ò"Ð"Ý!#¤¨fÔ.AÀ6ÔC`Ñ!aÔ!aˆDÔõ "6°fÑ!=Ô!=ˆÔð $Ô1ˆÔØ!Ô-ˆÔØ$*Ô$?ˆÔ!ð 	�ŠÑÔÐÐÐr&   Nró  r”  Ú
speaker_idr•  rÚ  rÛ  Úlabelsr  r
  c	                 ó(  — |�|n| j         j        }|�|n| j         j        }|�|n| j         j        }|�t	          d¦  «        ‚| j        j        j        j        }
|�)| 	                    d¦  «         
                    |
¦  «        }n:t          j        |¦  «         	                    d¦  «         
                    |
¦  «        }| j         j        dk    r•|�“d|cxk    r| j         j        k     s"n t          d| j         j        dz
  › d�¦  «        ‚t          |t           ¦  «        rt          j        d|| j        ¬	¦  «        }|                      |¦  «         	                    d¦  «        }nd}|                      ||||||¬
¦  «        }|s|d         n|j        }|                     dd¦  «        }|                     dd¦  «        }|s|d         n|j        }|s|d         n|j        }| j         j        r |                      |||d| j        ¬¦  «        }n|                      |||¦  «        }|€| j        }d|z  }t          j        t          j        |¦  «        |z  |z  ¦  «        }t          j        t          j        |ddg¦  «        d¦  «                              ¦   «         }t          j!        | "                    ¦   «         |j        |j        ¬¦  «        }| 	                    d¦  «        | 	                    d¦  «        k     }| 	                    d¦  «         
                    |j        ¦  «        }t          j	        |d¦  «        t          j	        |d¦  «        z  }|j#        \  }}}}t          j$        |d¦  «         %                    ||z  d¦  «        }t          j!        ||j        |j        ¬¦  «        }| 	                    d¦  «        |k     }| 
                    |j        ¦  «         %                    |||¦  «        }|tL          j'         (                    |g d¢¦  «        dd…dd…f         z
  }| 	                    d¦  «                             dd¦  «        |z  }t          j)        | *                    d¦  «        |¦  «                             dd¦  «        }t          j)        | *                    d¦  «        |¦  «                             dd¦  «        }|t          j+        |¦  «        t          j        |¦  «        z  | j,        z  z   } |  -                    | ||d¬¦  «        }!|!|z  }"|  .                    |"|¦  «        }#|# *                    d¦  «        }#|t_          j0        | j         j1        ¦  «        z  }$|s|#|$|"f|dd…         z   }%|%S te          |#|$|"|j3        |j4        ¬¦  «        S )a  
        speaker_id (`int`, *optional*):
            Which speaker embedding to use. Only used for multispeaker models.
        labels (`torch.FloatTensor` of shape `(batch_size, config.spectrogram_bins, sequence_length)`, *optional*):
            Float values of target spectrogram. Timesteps set to `-100.0` are ignored (masked) for the loss
            computation.
        speaking_rate (`float`, *optional*):
            Speaking rate.

        Example:

        ```python
        >>> from transformers import VitsTokenizer, VitsModel, set_seed
        >>> import torch

        >>> tokenizer = VitsTokenizer.from_pretrained("facebook/mms-tts-eng")
        >>> model = VitsModel.from_pretrained("facebook/mms-tts-eng")

        >>> inputs = tokenizer(text="Hello - my dog is cute", return_tensors="pt")

        >>> set_seed(555)  # make deterministic

        >>> with torch.no_grad():
        ...     outputs = model(inputs["input_ids"])
        >>> outputs.waveform.shape
        torch.Size([1, 45824])
        ```
        Nz&Training of VITS is not supported yet.r?   r   r   z Set `speaker_id` in the range 0-ú.rô   )r\  Ú
fill_valuerV  )ró  r²   r”  r•  rÚ  rÛ  r]   T)rE   rc  rX   )rW  rV  )r   r   r   r   r   r   r   r  )r   r   r   r   r   )5rŒ   r•  rÚ  rÛ  ÚNotImplementedErrorr  rð  r�   rW  Ú	unsqueezer]  r!   Ú	ones_liker  rb   rÂ  r¾   ÚfullrV  r  r*   r1  r+   r,   r  r  r  r  ÚceilrM   r`  rf   ÚlongÚaranger`   ra   rd   r�  r   rN   r<   r›  ÚsqueezerÎ   rc  r"  r  rK   Úprodrü   r   r   r   )&rª   ró  r”  r  r•  rÚ  rÛ  r  r  ÚkwargsÚ
mask_dtypeÚinput_padding_maskÚspeaker_embeddingsÚtext_encoder_outputr   r+   r,   rk  Úlength_scaleÚdurationÚpredicted_lengthsÚindicesÚoutput_padding_maskÚ	attn_maskr?  rã   Úoutput_lengthÚinput_lengthÚcum_durationÚvalid_indicesÚpadded_indicesÚattnÚprior_latentsri  r   r   r   rR   s&                                         r'   r¹   zVitsModel.forwardê  sÇ  € ðR 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆàÐÝ%Ð&NÑOÔOÐOàÔ&Ô3Ô:Ô@ˆ
ØÐ%Ø!/×!9Ò!9¸"Ñ!=Ô!=×!@Ò!@ÀÑ!LÔ!LÐÐå!&¤°Ñ!;Ô!;×!EÒ!EÀbÑ!IÔ!I×!LÒ!LÈZÑ!XÔ!XÐàŒ;Ô# aÒ'Ð'¨JÐ,BØ˜
Ð=Ð=Ò=Ð= T¤[Ô%=Ò=Ð=Ð=Ð=Ý Ð!cÀDÄKÔD\Ð_`ÑD`Ð!cÐ!cÐ!cÑdÔdÐdÝ˜*¥cÑ*Ô*ð ^Ý"œZ¨T¸jÐQUÔQ\Ð]Ñ]Ô]�
Ø!%×!3Ò!3°JÑ!?Ô!?×!IÒ!IÈ"Ñ!MÔ!MÐÐà!%Ðà"×/Ò/ØØ+Ø)Ø/Ø!5Ø#ð 0ñ 
ô 
Ðð 7BÐlÐ+¨AÔ.Ð.ÐGZÔGlˆØ%×/Ò/°°1Ñ5Ô5ˆØ/×9Ò9¸!¸QÑ?Ô?ÐØ4?ÐdÐ)¨!Ô,Ð,ÐEXÔEdˆØ<GÐtÐ1°!Ô4Ð4ÐM`ÔMtÐàŒ;Ô9ð 		jØ×2Ò2ØØ"Ø"ØØ Ô5ð 3ñ ô ˆLˆLð  ×2Ò2°=ÐBTÐVhÑiÔiˆLàÐ Ø Ô.ˆMØ˜]Ñ*ˆÝ”:�eœi¨Ñ5Ô5Ð8JÑJÈ\ÑYÑZÔZˆÝ!œO­E¬I°hÀÀAÀÑ,GÔ,GÈÑKÔK×PÒPÑRÔRÐõ ”,Ð0×4Ò4Ñ6Ô6Ð>OÔ>UÐ^oÔ^vÐwÑwÔwˆØ%×/Ò/°Ñ2Ô2Ð5F×5PÒ5PÐQRÑ5SÔ5SÒSÐØ1×;Ò;¸AÑ>Ô>×AÒAÐBTÔBZÑ[Ô[Ðõ ”OÐ$6¸Ñ:Ô:½U¼_ÐM`ÐbdÑ=eÔ=eÑeˆ	Ø5>´_Ñ2ˆ
�A�} lÝ”| H¨bÑ1Ô1×6Ò6°zÀLÑ7PÐRSÑTÔTˆÝ”,˜}°H´NÈ8Ì?Ð[Ñ[Ô[ˆØ×)Ò)¨!Ñ,Ô,¨|Ò;ˆØ%×(Ò(¨¬Ñ9Ô9×>Ò>¸zÈ<ÐYfÑgÔgˆØ&­¬×):Ò):¸=ÐJ\ÐJ\ÐJ\Ñ)]Ô)]Ð^_Ð^_Ð^_ÐadÐbdÐadÐ^dÔ)eÑeˆØ×'Ò'¨Ñ*Ô*×4Ò4°Q¸Ñ:Ô:¸YÑFˆõ ”l 4§<¢<°¡?¤?°KÑ@Ô@×JÒJÈ1ÈaÑPÔPˆÝ#œl¨4¯<ª<¸©?¬?Ð<OÑPÔP×ZÒZÐ[\Ð^_Ñ`Ô`Ðà#¥eÔ&6°{Ñ&CÔ&CÅeÄiÐPcÑFdÔFdÑ&dÐgkÔgwÑ&wÑwˆØ—)’)˜MÐ+>Ð@RÐ\`�)ÑaÔaˆàÐ 3Ñ3ˆØ—<’< Ð-?Ñ@Ô@ˆØ×#Ò# AÑ&Ô&ˆØ,­r¬w°t´{Ô7QÑ/RÔ/RÑRÐàð 	ØÐ!1°;Ð?ÐBUÐVWÐVXÐVXÔBYÑYˆGØˆNåØØ-Ø#Ø-Ô;Ø*Ô5ð
ñ 
ô 
ð 	
r&   )NNNNNNNN)r   r   r   r   r˜   r   r!   rº  r¾   r»  r"   Úfloatr$   r   r   r¹   r¿   rÀ   s   @r'   r	  r	  Ê  s   ø€ € € € € ð˜zð ð ð ð ð ð ð4 ð *.Ø.2Ø!%Ø)-Ø,0Ø#'Ø+/Ø&*ðD
ð D
à”< $Ñ&ðD
ð œ tÑ+ðD
ð ˜$‘Jð	D
ð
   $™;ðD
ð # T™kðD
ð ˜D‘[ðD
ð Ô! DÑ(ðD
ð ˜t‘|ðD
ð 
ˆsŒ�oÑ	%ðD
ð D
ð D
ñ „^ðD
ð D
ð D
ð D
ð D
r&   r	  )Fr9   r:   r:   r:   )@r    r>  Údataclassesr   Útypingr   ÚnumpyrK   r!   r   Ú r   rý  Úactivationsr   Úintegrations.deepspeedr	   Úintegrations.fsdpr
   Úmasking_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   Úmodeling_utilsr   r¡   r   r   r   Úconfiguration_vitsr   Ú
get_loggerr   Úloggerr   r)   ÚjitÚscriptr8   rU   rO   r  r‹   rÂ   rÕ   rö   r  r  r$  r4  rB  rL  rn  r|  r½  rÊ  rÓ  rë  r÷  r	  Ú__all__r%   r&   r'   ú<module>rG     sä  ðð Ð à €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø @Ð @Ð @Ð @Ð @Ð @Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø -Ð -Ð -Ð -Ð -Ð -Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ *Ð *Ð *Ð *Ð *Ð *ð 
ˆÔ	˜HÑ	%Ô	%€ð €ððñ ô ð
 ð7ð 7ð 7ð 7ð 7�kñ 7ô 7ñ „ñô ð7ð$ €ððñ ô ð
 ð7ð 7ð 7ð 7ð 7˜Kñ 7ô 7ñ „ñô ð7ð „Ôðð ñ Ôðð ØØØØðG ð G ð G ð G ðTG%ð G%ð G%ðTM5ð M5ð M5ð M5ð M5�%”(”/ñ M5ô M5ð M5ð`)ð )ð )ð )ð )˜2œ9ñ )ô )ð )ð&;ð ;ð ;ð ;ð ;˜2œ9ñ ;ô ;ð ;ð|Uð Uð Uð Uð U�"”)ñ Uô Uð Uðp!ð !ð !ð !ð ! ¤	ñ !ô !ð !ð6ð ð ð ð  ¤	ñ ô ð ð&+%ð +%ð +%ð +%ð +% B¤Iñ +%ô +%ð +%ð\(!ð (!ð (!ð (!ð (!�2”9ñ (!ô (!ð (!ðV!ð !ð !ð !ð !˜BœIñ !ô !ð !ð$a ð a ð a ð a ð a  b¤iñ a ô a ð a ðH"%ð "%ð "%ð "%ð "%˜BœIñ "%ô "%ð "%ðJYð Yð Yð Yð Y�B”Iñ Yô Yð Yðx'ð 'ð 'ð 'ð '�b”iñ 'ô 'ð 'ðT$ð $ð $ð $ð $Ð1ñ $ô $ð $ðNB
ð B
ð B
ð B
ð B
�"”)ñ B
ô B
ð B
ðJ/
ð /
ð /
ð /
ð /
�b”iñ /
ô /
ð /
ðd ð*ð *ð *ð *ð *˜/ñ *ô *ñ „ð*ð2 €ððñ ô ð
`
ð `
ð `
ð `
ð `
Ð#ñ `
ô `
ñô ð
`
ðF Ð-Ð
.€€€r&   