o
    4ѹg                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m	Z	 d dl
mZmZ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 d dlmZ d dlmZ d dlm Z m!Z! d dl"m#Z#m$Z$m%Z% G dd dZ&dS )    N)tqdm)
DictConfig	OmegaConf
ListConfig)tables)
load_bytes)download_from_url)prepare_data_iterator)timestamp_sentence)download_model)slice_padding_audio_samples)set_all_random_seed)load_pretrained_model)load_audio_text_image_videoextract_fbank)sv_chunkpostprocessdistribute_spkc                   @   s   e Zd Zdd ZdddZdS )AutoFrontendc                 K   s   d|v sJ d|vrt d|dd tdi |}|dd }|d ur6tj|}|di |d }|| _d|v r@|d= || _d S )	NmodelZ
model_confz"download models from model hub: {}ZhubmsfrontendZfrontend_conf )	logginginfoformatgetr   r   Zfrontend_classesr   kwargs)selfr   r   Zfrontend_classr   r   ]/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/site-packages/funasr/auto/auto_frontend.py__init__   s   
zAutoFrontend.__init__Nc                 K   s  |d u r| j n|}|| t||d\}}|dd}|dd}|dkr(d}i }	g }
t|}t }td||D ]}t||| }||| }||| }t }t	|| j
j|dd	d
}t }|| d|	d< t|f|dd| j
d|\}}t }|| d|	d< |  | j
j | j
j d |	d< |ddr|j|d|j|d}}n	| | }}|||dd}|
| q:t }|
S )N)	input_len
batch_size   deviceZcudacpur   fsi>  )r&   Zaudio_fsz0.3fZ	load_data	data_typeZsound)r'   r   Zextract_feati  Zbatch_data_timeZ	return_ptT)r$   Zfbank)inputr!   keyr'   )r   updater	   r   lentimeperf_counterrangeminr   r   r&   r   sumitemZframe_shiftZlfr_ntoZnumpyappend)r   r(   r!   r   cfgZkey_listZ	data_listr"   r$   Z	meta_dataZresult_listZnum_samplesZtime0Zbeg_idxZend_idxZ
data_batchZ	key_batchZtime1Zaudio_sample_listZtime2ZspeechZspeech_lengthsZtime3batchZtime_endr   r   r   __call__0   sX   


zAutoFrontend.__call__)NN)__name__
__module____qualname__r    r6   r   r   r   r   r      s    r   )'jsonr,   ZtorchZhydrarandomstringr   os.pathosr   Z	omegaconfr   r   r   Zfunasr.registerr   Zfunasr.utils.load_utilsr   Zfunasr.download.filer   Zfunasr.auto.auto_modelr	   Zfunasr.utils.timestamp_toolsr
   Z'funasr.download.download_model_from_hubr   Zfunasr.utils.vad_utilsr   Z&funasr.train_utils.set_all_random_seedr   Z(funasr.train_utils.load_pretrained_modelr   r   r   Zfunasr.models.campplus.utilsr   r   r   r   r   r   r   r   <module>   s,   