o
    㥵i                     @   s   d dl Z d dlmZ d dlm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mZmZ e ejdejd	ed
dejdeddejdeddejddedejddedejddeddd Zedkrue  dS dS )    N)Path)Random)logger)AudioSegment)tqdm)AUDIO_EXTENSIONS
list_filesload_filelistrootT)exists	path_type)typez--val-ratio)r   defaultz--val-countz
--filelist)r   r   z--min-durationz--max-durationc                    s  |rdd t |D }nt tddd}|d u r+|d u r+ttt fdd|D }nsg }t|D ]l}zMtt|}	t	|	d }
|d ur[|
|k r[t
d| d|
d	d
|d	 W q1|d uru|
|krut
d| d|
d	d|d	 W q1|t|  W q1 ty } zt
d| d|  W Y d }~q1d }~ww t
dt	| dt	| d td| |d u r|d u rt
d tdtt	|d }n0|d ur|d urt
d d S |d ur|dk s|t	|krt
d d S |}n	tt	|| }t
d| d t d ddd}|d||d   W d    n	1 s)w   Y  t d ddd}|d|d |  W d    n	1 sOw   Y  t
d  d S )!Nc                 S   s   g | ]}|d  qS )r    ).0ir   r   R/home/ubuntu/.local/lib/python3.10/site-packages/tools/vqgan/create_train_split.py
<listcomp>   s    zmain.<locals>.<listcomp>T)	recursivesortc                    s   g | ]}|  qS r   )relative_to)r   filer
   r   r   r      s    g     @@z	Skipping z due to duration z.2fz < z > zError processing z: zFound z files, remaining z files after filtering*   z=Validation ratio and count not specified, using min(20%, 100)d   g?z+Cannot specify both val_count and val_ratio   z/val_count must be between 1 and number of fileszUsing z files for validationzvq_train_filelist.txtwzutf-8)encoding
zvq_val_filelist.txtDone)r	   r   r   listmapstrr   r   	from_filelenr   infoappendr   	Exceptionr   shuffleminmathceilerroropenwritejoin)r
   	val_ratio	val_countfilelistmin_durationmax_durationfilesfiltered_filesr   audiodurationeval_sizefr   r   r   main   sb   "


r<   __main__)r*   pathlibr   randomr   clicklogurur   pydubr   r   fish_speech.utils.filer   r   r	   commandargumentoptionfloatintr<   __name__r   r   r   r   <module>   s&    >
