
    0;ji	                     r    d Z ddlZddlmZ ddlZddlZ ej        e	          Z
i ai addZd Z	 	 	 ddZdS )z(mel-spectrogram extraction in Matcha-TTS    N)mel   h㈵>c                 X    t          j        t          j        | |          |z            S )N)min)torchlogclamp)xCclip_vals      [/root/voice-cloning/.venv/lib/python3.11/site-packages/chatterbox/models/s3gen/utils/mel.pydynamic_range_compression_torchr      s&    9U[111A5666    c                 $    t          |           }|S N)r   )
magnitudesoutputs     r   spectral_normalize_torchr      s    ,Z88FMr     P   ]    @  Fc	                 H   t          | t          j                  r&t          j        |                                           } t          | j                  dk    r| d         } t          j        |           }	t          j	        |           }
|	dk     s|
dk    rFt                              d|	                                dd|
                                d           t          |           dt          | j                   t          vrt!          |||||	          }t          j        |                                                              | j                  t          t          |          dz   t          | j                  z   <   t          j        |                              | j                  t&          t          | j                  <   t          j        j                            |                     d          t1          ||z
  d
z            t1          ||z
  d
z            fd          } |                     d          } t          j        t          j        | |||t&          t          | j                           |dddd
  
                  }t          j        |                    d
                              d          dz             }t          j        t          t          |          dz   t          | j                  z            |          }tA          |          }|S )zCopied from https://github.com/shivammehta25/Matcha-TTS/blob/main/matcha/utils/audio.py
    Set default values according to Cosyvoice's config.
    r   r   g      g      ?z+Audio values outside normalized range: min=z.4fz, max=_)srn_fftn_melsfminfmax   reflect)modeFT)
hop_length
win_lengthwindowcenterpad_mode
normalizedonesidedreturn_complexg&.>)!
isinstancenpndarrayr   tensorfloatlenshaper   maxloggerwarningitemstrdevice	mel_basislibrosa_mel_fn
from_numpytohann_windownn
functionalpad	unsqueezeintsqueezeview_as_realstftsqrtpowsummatmulr   )yr   num_melssampling_ratehop_sizewin_sizer    r!   r(   min_valmax_valr   specs                r   mel_spectrogramrT   $   s    !RZ   $LOO!!##
17||qeI illGillG~~3sW\\^^sss_f_k_k_m_msssttt d))%%c!(mm%%Y66U8RV]abbb5:5Ec5J5J5P5P5R5R5U5UVWV^5_5_	#d))c/CMM12%*%6x%@%@%C%CAH%M%MCMM"	Aeh.!344c58;Kq:P6Q6QRYb 	  	 	A 	
		!A
s18}}-	
 	
 	
 D :dhhqkkoob))T233D<	#d))c/CMM"ABDIID#D))DKr   )r   r   )r   r   r   r   r   r   r   F)__doc__logginglibrosa.filtersr   r<   r   numpyr/   	getLogger__name__r6   r;   r?   r   r   rT    r   r   <module>r\      s    . .  1 1 1 1 1 1     		8	$	$ 	7 7 7 7   ]a.31 1 1 1 1 1r   