o
    i                     @   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model
model_confz"download models from model hub: {}hubmsfrontendfrontend_conf )	logginginfoformatgetr   r   frontend_classesr   kwargs)selfr!   r   frontend_classr   r   M/home/ubuntu/.local/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   devicecudacpur   fsi>  )r,   audio_fsz0.3f	load_data	data_typesound)r/   r   extract_feati  batch_data_time	return_ptT)r)   fbank)inputr&   keyr/   )r!   updater	   r   lentimeperf_counterrangeminr   r   r,   r   sumitemframe_shiftlfr_ntonumpyappend)r"   r5   r&   r!   cfgkey_list	data_listr'   r)   	meta_dataresult_listnum_samplestime0beg_idxend_idx
data_batch	key_batchtime1audio_sample_listtime2speechspeech_lengthstime3batchtime_endr   r   r$   __call__0   sX   


zAutoFrontend.__call__)NN)__name__
__module____qualname__r%   rW   r   r   r   r$   r      s    r   )'jsonr9   torchhydrarandomstringr   os.pathosr   	omegaconfr   r   r   funasr.registerr   funasr.utils.load_utilsr   funasr.download.filer   funasr.auto.auto_modelr	   funasr.utils.timestamp_toolsr
   'funasr.download.download_model_from_hubr   funasr.utils.vad_utilsr   &funasr.train_utils.set_all_random_seedr   (funasr.train_utils.load_pretrained_modelr   r   r   funasr.models.campplus.utilsr   r   r   r   r   r   r   r$   <module>   s,   