o
    il                     @   s  d dl Z d dlZeje   d dlZd dlZd dlmZ d dl	Z	d dl
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mZ d dlmZmZ d d	lmZ d d
lmZ e Zdej ZdZ dZ!e"ed#dZ$dd Z%e&dkre%  dS dS )    N)files)Accelerator)	get_class)	OmegaConf)tqdm)get_inference_prompt#get_librispeech_test_clean_metainfoget_seedtts_testset_metainfo)load_checkpointload_vocoder)CFM)get_tokenizerzcuda:Tg?f5_ttsz../../c            7      C   s  t jdd} | jddd td | jdddd	 | jd
ddtd | jdddtd | jdddd | jdddtd | jdddd	 | jddt dtd | jdddd |  }|j}|j	}|j
}|j}|j}|j}|j}d }	d!}
d"}d#}d#}tttd$d%| d&}td'|jj }|jj}|jj}|jj}|jjj}|jjj}|jjj}|jjj}|jjj}|jjj }|d(krtd) }|j!}t"||}n|d*krtd+ }t#|}n|d,krtd- }t#|}t d.| d/| d0| d1| d/| d2| d/| |rd3| nd4 d5|
 d6| |rd7nd4 |rd8nd4 }t$|||||||t%||	d9
}|j&}|d:kr6d;}n|d<kr=d=}t'|||d>} t(||\}!}"t)|dTi ||"|d?t*||||||d@t*|dA|!dB+t,}#tdC| dD|  }$t-j./|$dE r|$dE }%n>t-j./|$dF r|$dF }%n0t0dG td0|j1j2 dD|  }$t-j./|$dE r|$dE }%nt-j./|$dF r|$dF }%nt3dH|d<krt4j5nd }&t6|#|%t,|&t7dI}#t-j./|st8j9rt-:| t8;  t<< }'t8=|}(t>|(t8j? dJD ]})|)\}*}+},}-}.}/|,+t,},t4j@|-t4jAdK+t,}-t4j@|.t4jAdK+t,}.t4B w |#jC|,|/|.|-||
|||dL	\}0}1tD|0D ]Z\}2}3|3|-|2 |.|2 d d f EdM}3|3FdMdNd +t4j5}4|d:kre| G|4H }5n|d<krs| |4IdMH }5|+|2 t%k r|5|+|2  t% }5tJK| d0|*|2  dO|5| q8W d    n	1 sw   Y  qW d    n	1 sw   Y  t8;  t8j9rt<< |' }6t0dP|6dQ dRdS d S d S )UNzbatch inference)descriptionz-sz--seed)defaulttypez-nz	--expnameT)requiredz-cz
--ckptstepi z-nfez	--nfestep    z-oz--odemethodeuler)r   z-ssz--swaysamplingz-tz	--testsetz-pz--librispeech_test_clean_pathz/data/LibriSpeech/test-cleanz--local
store_truez&Use local vocoder checkpoint directory)actionhelp   g       @g      ?Fr   zconfigs/z.yamlzf5_tts.model.ls_pc_test_cleanz2/data/librispeech_pc_test_clean_cross_sentence.lstseedtts_test_zhz!/data/seedtts_testset/zh/meta.lstseedtts_test_enz!/data/seedtts_testset/en/meta.lstz	/results/_/z/seed_nfe_ss _cfg_speedz_gt-durz_no-ref-audio)	speed	tokenizertarget_sample_raten_mel_channels
hop_lengthmel_spec_type
target_rmsuse_truth_durationinfer_batch_sizevocosz'../checkpoints/charactr/vocos-mel-24khzbigvganz,../checkpoints/bigvgan_v2_24khz_100band_256x)vocoder_nameis_local
local_path)text_num_embedsmel_dim)n_fftr(   
win_lengthr'   r&   r)   )method)transformermel_spec_kwargsodeint_kwargsvocab_char_mapz/ckpts/z/model_z.ptz.safetensorszQLoading from self-organized training checkpoints rather than released pretrained.zCThe checkpoint does not exist or cannot be found in given location.)dtypeuse_ema)disable)r;   )	condtextdurationlensstepscfg_strengthsway_sampling_coefno_ref_audioseedr      z.wavzDone batch inference in <   z.2fz	 minutes. )LargparseArgumentParseradd_argumentintfloatrel_pathstr
parse_argsrF   expnameckptstepnfestep	odemethodswaysamplingtestsetr   loadr   joinpathr   modelbackbonearchdatasetsnamer%   mel_specr)   r&   r'   r(   r5   r4   librispeech_test_clean_pathr   r	   r   r*   localr   r   r   dicttodeviceospathexistsprintckptssave_dir
ValueErrortorchfloat32r
   r<   acceleratoris_main_processmakedirswait_for_everyonetimesplit_between_processesr   is_local_main_processtensorlonginference_modesample	enumerate	unsqueezepermutedecodecpusqueeze
torchaudiosave)7parserargsrF   exp_name	ckpt_stepnfe_step
ode_methodrD   rW   r,   rC   r$   r+   rE   	model_cfg	model_cls	model_arcdataset_namer%   r)   r&   r'   r(   r5   r4   metalstr`   metainfo
output_dirprompts_allra   vocoder_local_pathvocoderr:   
vocab_sizerZ   ckpt_prefix	ckpt_pathr;   startpromptspromptuttsref_rms_listref_melsref_mel_lenstotal_mel_lensfinal_text_list	generatedr   igengen_mel_specgenerated_wavetimediffrI   rI   P/home/ubuntu/.local/lib/python3.10/site-packages/f5_tts/eval/eval_infer_batch.pymain'   sH   
















"

"!r   __main__)'re   sysrf   appendgetcwdrJ   rr   importlib.resourcesr   rl   r   
accelerater   hydra.utilsr   	omegaconfr   r   f5_tts.eval.utils_evalr   r   r	   f5_tts.infer.utils_inferr
   r   f5_tts.modelr   f5_tts.model.utilsr   rn   process_indexrd   r<   r*   rP   rY   rO   r   __name__rI   rI   rI   r   <module>   s4     6
