
    0;ji                     ~    d dl mZ d dlmZ d dlZd dlZ e            d             Zd ZddZ	ddZ
d	 Zd
 ZddZdS )    )	lru_cache)signalNc                     | j         | j        dz  k    sJ t          j                            | j        | j        | j        | j        | j                   S )N   )srn_fftn_melsfminfmax)r   sample_ratelibrosafiltersmelr   num_melsr
   )hps    a/root/voice-cloning/.venv/lib/python3.11/site-packages/chatterbox/models/voice_encoder/melspec.py	mel_basisr      sT    7bn)))))?>h{WW        c                     |j         dk    sJ t          j        d|j          gdg|           } t          j        | dd          } | S )Nr      )preemphasisr   lfilternpclip)wavr   s     r   r   r      sK    >Q
.!bn_-sC
8
8C
'#r1

CJr   Tc                 L   |j         dk    r?t          | |          } t          j        |                                           dz
  dk     sJ t	          | ||          }t          j        |          }|j        dk    r
||j        z  }t          j        t          |          |          }|j        dk    rt          ||          }|j
        r-t          ||                              t          j                  }|r+|j        d         dt          |           |j        z  z   k    sJ |S )Nr   r   gHz>)padg      ?db)r   r   absmax_stft	mel_powerdotr   mel_type
_amp_to_dbnormalized_mels
_normalizeastypefloat32shapelenhop_size)r   r   r   spec_complexspec_magnitudesr   s         r   melspectrogramr0      s   	~#r""vc{{  1$u,,,, bc***L f\**O	|sBL( &2
0
0C	{db!! 
 5b!!((44Acila#c((bk*A&AAAAAJr   c                 T    t          j        | |j        |j        |j        |d          S )Nreflect)r   
hop_length
win_lengthcenterpad_mode)r   stftr   r-   win_size)yr   r   s      r   r"   r"   6   s5     <	h;;   r   c                 `    dt          j        t          j        |j        |                     z  S N   )r   log10maximumstft_magnitude_min)xr   s     r   r&   r&   C   s&    B$91==>>>>r   c                 2    t          j        d| dz            S )Ng      $@g?)r   power)r@   s    r   
_db_to_amprC   G   s    8D!d(###r      c                 V    dt          j        |j                  z  }| |z
  | |z   z  } | S r;   )r   r=   r?   )sr   headroom_dbmin_level_dbs       r   r(   r(   K   s4    !6777L	
\	|mk9:AHr   )T)rD   )	functoolsr   scipyr   numpyr   r   r   r   r0   r"   r&   rC   r(    r   r   <module>rM      s                            8
 
 
 
? ? ?$ $ $     r   