o
    @Ti
                     @   s   d dl Z d dlZd dlmZ e dZee j e  Z	e	e j e	
e d ee	 de jfddZdeej dB fdd	Z	dd
ededB dedB deejef fddZddededejfddZdd ZdejdejfddZdS )    Nkanade_tokenizerz1[%(asctime)s] %(levelname)s %(name)s: %(message)sreturnc                   C   s   t S )N)logger r   r   B/home/ubuntu/.local/lib/python3.10/site-packages/linacodec/util.py
get_logger   s   r   modulesc                 C   s*   | D ]}|d ur|  D ]}d|_qqd S )NF)
parametersrequires_grad)r   moduleparamr   r   r   freeze_modules   s   r   pathframe_offset
num_framesc                 C   sx   dd l }|| '}|d ur|| |j|pdddd}t|j}|j}W d    ||fS 1 s3w   Y  ||fS )Nr   float32T)framesdtype	always_2d)	soundfile	SoundFileseekreadtorch
from_numpyT
samplerate)r   r   r   sffr   waveformsample_rater   r   r   _load_audio_internal   s   

r"   ]  
audio_pathr!   c                 C   sx   dd l }	 t| \}}|jd dkrtj|ddd}||kr)|j||}||}tt|d }|| }|	dS )Nr      T)dimkeepdimg:0yE>)

torchaudior"   shaper   mean
transformsResamplemaxabssqueeze)r$   r!   r(   r    sr	resamplermax_valr   r   r   
load_audio,   s   
r3   c                  C   s"   ddl m}  | d}| }|S )Nr   )Vocoszcharactr/vocos-mel-24khz)vocosr4   from_pretrainedeval)r4   modelr   r   r   load_vocoderB   s   
r9   mel_spectrogramc                 C   s   | tj}| |}|S )a(  Convert mel spectrogram to waveform using Vocos vocoder.
    Args:
        vocoder (Vocos): Pretrained Vocos vocoder.
        mel_spectrogram (torch.Tensor): Input mel spectrogram tensor (..., n_mels, frame).
    Returns:
        torch.Tensor: Generated audio waveform tensor (..., samples).
    )tor   r   decode)vocoderr:   generated_waveformr   r   r   vocodeJ   s   
r?   )NN)r#   )loggingr   torch.nnnn	getLoggerr   setLevelINFOStreamHandlerhandlersetFormatter	Formatter
addHandlerLoggerr   listModuler   strinttupleTensorr"   r3   r9   r?   r   r   r   r   <module>   s0    


