o
    iO                     @   s   d dl Z d dlZd dlZd dlZd dlZeje  d dlZ	d dl
mZ d dlZd dlmZmZmZ eeddZdd Zdd	 Zd
d ZedkrRe  dS dS )    N)files)get_seed_tts_testrun_asr_werrun_simf5_ttsz../../c                  C   sv   t  } | jddtdddgd | jddtdd	dgd | jd
dtdd | jddtddd | jdddd |  S )Nz-ez--eval_taskwersim)typedefaultchoicesz-lz--langenzhz-gz--gen_wav_dirT)r	   requiredz-nz
--gpu_nums8z=Number of GPUs to use (e.g., 8) or GPU list (e.g., [0,1,2,3]))r	   r
   helpz--local
store_truez%Use local custom checkpoint directory)actionr   )argparseArgumentParseradd_argumentstr
parse_args)parser r   T/home/ubuntu/.local/lib/python3.10/site-packages/f5_tts/eval/eval_seedtts_testset.pyget_args   s   
r   c              	   C   sf   z |  dr| drt| }t|tr|W S ttt| W S  tt	fy2   t
d|  dw )N[]zInvalid GPU specification: z4. Use a number (e.g., 8) or a list (e.g., [0,1,2,3]))
startswithendswithastliteral_eval
isinstancelistrangeint
ValueErrorSyntaxErrorr   ArgumentTypeError)gpu_nums_strgpu_listr   r   r   parse_gpu_nums#   s   


r+   c                     s6  t  } | j}| j| j}td d }t| j}t|||}| j}|r2dkr+d n	dkr1d nd dg }g }|d	krqt	j
t|d
"}	 fdd|D } |	t| }
|
D ]}|| qYW d    n1 skw   Y  n=|dkrt	j
t|d
!}	fdd|D } |	t| }
|
D ]}|| qW d    n1 sw   Y  ntd| | d| d}t|d6}|D ]}|||  |tj|ddd  qtt|d}|d|  d| d W d    n1 sw   Y  tdt| d t|  d|  t|  d|  d S )Nz/data/seedtts_testset/z	/meta.lstr   z../checkpoints/funasrr   z.../checkpoints/Systran/faster-whisper-large-v3 z1../checkpoints/UniSpeech/wavlm_large_finetune.pthr   )	processesc                    s   g | ]
\}}|| fqS r   r   .0ranksub_test_set)asr_ckpt_dirlangr   r   
<listcomp>M   s    zmain.<locals>.<listcomp>r   c                    s   g | ]	\}}|| fqS r   r   r.   )wavlm_ckpt_dirr   r   r4   S   s    zUnknown metric type: z/_z_results.jsonlwF)ensure_ascii
   z: z
Total z samplesz results saved to )r   	eval_taskr3   gen_wav_dirrel_pathr+   gpu_numsr   localmpPoollenmapr   extendr   r&   openappendwritejsondumpsroundnpmeanupperprint)argsr:   r;   metalstgpustest_setr>   full_resultsmetricspoolresultsrresult_pathflinemetricr   )r2   r3   r5   r   main0   s`   
r[   __main__)r   r    rG   ossyspathrE   getcwdmultiprocessingr?   importlib.resourcesr   numpyrJ   f5_tts.eval.utils_evalr   r   r   r   joinpathr<   r   r+   r[   __name__r   r   r   r   <module>   s"   7
