o
    iX                     @   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_librispeech_testrun_asr_werrun_simf5_ttsz../../c                  C   s   t  } | jddtdddgd | jddtdd	 | jd
dtd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)r	   r
   z-gz--gen_wav_dirT)r	   requiredz-pz--librispeech_test_clean_pathz-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   [/home/ubuntu/.local/lib/python3.10/site-packages/f5_tts/eval/eval_librispeech_test_clean.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                     s   t  } | j}| j| j}| j}td }t| j}t||||}| j	}|r'd nd dg }g }	|dkrft
jt|d"}
 fdd|D } |
t| }|D ]}|| qNW d    n1 s`w   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 )Nz2/data/librispeech_pc_test_clean_cross_sentence.lstz.../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>N   s    zmain.<locals>.<listcomp>r   c                    s   g | ]	\}}|| fqS r   r   r-   )wavlm_ckpt_dirr   r   r3   T   s    zUnknown metric type: z/_z_results.jsonlwF)ensure_ascii
   z: z
Total z samplesz results saved to )r   	eval_taskr2   librispeech_test_clean_pathgen_wav_dirrel_pathr*   gpu_numsr   localmpPoollenmapr   extendr   r%   openappendwritejsondumpsroundnpmeanupperprint)argsr9   r:   r;   metalstgpustest_setr>   full_resultsmetricspoolresultsrresult_pathflinemetricr   )r1   r2   r4   r   main1   sZ   
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
