CoolFace
Apppublic

cocktailpeanut/DiffRhythm

sourceHugging Faceapache-2.0updated 1y agoView on Hugging Face
10likes
dataset.cpython-310.pyc98 linesDownload Raw Back to __pycache__
1o

2*� g�&�@sddlZddlZddlmZddlmZddlZddlmmZ	ddl3Z4ddlmZddlmZm
Z
ddlmZddlmZddlmZdd	lmZGd5d�de�ZGdd
�d
e�ZGdd�de
ee�Zdd
dde�fdededededejdBdedeeBfdd�Zdd�ZdS)�N)�files)�tqdm)�nn)�Dataset�Sampler)�load_from_disk)r)�MelSpec)�defaultc@s:eZdZ			ddefdd�Zdd�Zd	d6�Zdd�Zd
S)�	HFDataset��]�d��7hf_datasetcCs&||_||_||_t|||d�|_dS)N)�target_sample_rate�n_mel_channels�8hop_length)�datarrr�mel_spectrogram)�selfrrrr�r�@/home/node44_tmpdata3/netease/F5-TTS/src/f5_tts/model/dataset.py�__init__s�zHFDataset.__init__cCs<|j|}|dd}|dd}|jd||j|jS)N�audio�array�
sampling_rate�����)r�shaperr)r�index�rowr�sample_raterrr�
get_frame_len!s9zHFDataset.get_frame_lencC�10t|j�S�N��lenr�rrrr�__len__'�11zHFDataset.__len__c12Cs�|j|}|dd}|dd}|jd|}|dks |dkr,|�|dt|j��St�|���}||jkrDtj	�13||j�}||�}|�d�}|�|�}|�
d�}|d	}	t||	d14�S)Nrrrr��333333�?�r�text��mel_specr+)rr�__getitem__r$�torch�15from_numpy�floatr�16torchaudio�17transforms�Resample�	unsqueezer�squeeze�dict)18rrrrr�durationZaudio_tensor�	resamplerr-r+rrrr.*s$1920212223�zHFDataset.__getitem__N)rrr
)�__name__�24__module__�__qualname__rrr r&r.rrrrr25s�26�r27c@sJeZdZ						ddedejdBfdd	�Zd28d�Zdd
�Zdd�Z	dS)�
CustomDatasetNrr
rF�custom_dataset�mel_spec_modulecCs@||_||_||_||_||_|st|t|||d��|_dSdS)N)rrr)r�	durationsrr�preprocessed_melr	rr)rr>r@rrrrAr?rrrrKs29�30��zCustomDataset.__init__cCs:|jdur|j||j|jS|j|d|j|jS)Nr8)r@rrr)rrrrrr es31zCustomDataset.get_frame_lencCr!r"r#r%rrrr&lr'zCustomDataset.__len__c32Cs�|j|}|d}|d}|d}|jrt�|d�}nEt�|�\}}|jddkr2tj|ddd�}|d	ks:|d33krF|�|dt	|j��S||j34krWtj�||j35�}	|	|�}|�
|�}|�d�}t||d�S)N�36audio_pathr+r8r-rr*T)�dim�keepdimr(r)r,)rrAr/�tensorr2�loadr�meanr.r$rr3r4rr6r7)37rrrrBr+r8r-r�source_sample_rater9rrrr.os(38394041�zCustomDataset.__getitem__)Nrr
rFN)42r:r;r<rr�Modulerr r&r.rrrrr=Js��43�r=c@s>eZdZdZ	ddeededefdd	�Zd44d�Zdd
�Z	dS)�DynamicBatchSampleraExtension of Sampler that will do the following:45    1.  Change the batch size (essentially number of sequences)46        in a batch to ensure that the total number of frames are less47        than a certain threshold.48    2.  Make sure the padding efficiency in the batch is high.49    rNF�sampler�frames_threshold�	drop_lastc
Cs&||_||_||_gg}}|jj}t|jdd�D]}	|�|	|�|	�f�q|jdd�d�g}50d}t|d|�d�d�D]9\}	}|||jkr[|dksQt|51�|kr[|52�|	�||7}q<t|53�dkrf|�|54�||jkrq|	g}55|}q<g}56d}q<|s�t|57�dkr�|�|58�~t	�59|�t	�|�||_dS)	NzPSorting with sampler... if slow, check whether dataset is provided with duration)�desccSs|dS)Nr*r)�elemrrr�<lambda>�sz.DynamicBatchSampler.__init__.<locals>.<lambda>)�keyrzCreating dynamic batches with z audio frames per gpu)
rKrL�max_samples�data_sourcer�appendr �sortr$�random�seed�shuffle�batches)
rrKrLrR�random_seedrM�indicesrYrS�idx�batchZbatch_framesZ	frame_lenrrrr�s>6061��"6263646566676869zDynamicBatchSampler.__init__cCr!r")�iterrYr%rrr�__iter__�r'zDynamicBatchSampler.__iter__cCr!r")r$rYr%rrrr&�r'zDynamicBatchSampler.__len__)rNF)70r:r;r<�__doc__r�int�boolrr_r&rrrrrJ�s���71�/rJ�pinyin�raw�dataset_name�	tokenizer�dataset_type�72audio_typer?�mel_spec_kwargs�returncCs�td�|dkrsttd��d|�d|����}|dkr4z	t|�d��}Wnt�|�d��}Yd	}n|d73krBt�|�d��}d}t|�d
�ddd��
}	t�	|	�}74Wd�n1s\wY|75d}t76|f|||d�|��}|S|dkr�z	t|�d��}Wnt�|�d��}Yt|�d
�ddd��
}	t�	|	�}77Wd�n1s�wY|78d}t79|f||d�|��}|S|dkr�td�|�d�\}}
tt
|�d|��d|
��ttd��d��d��}|S)a80    dataset_type    - "CustomDataset" if you want to use tokenizer name and default data path to load for train_dataset81                    - "CustomDatasetPath" if you just want to pass the full path to a preprocessed dataset without relying on tokenizer82    zLoading dataset ...r=�f5_ttsz../../data/�_rdz/rawz83/raw.arrowF�melz84/mel.arrowTz/duration.json�rzutf-8)�encodingNr8)r@rAr?ZCustomDatasetPath)r@rAr85z�Should manually modify the path of huggingface dataset to your need.86May also the corresponding script cuz different dataset may have different format.�/ztrain.z87../../data)�split�	cache_dir)�print�strr�joinpathr�Dataset_�	from_file�open�jsonrFr=rqr88�load_dataset)rerfrgrhr?riZ
rel_data_pathZ
train_datasetrA�f�	data_dictr@�pre�postrrrrz�sh
�����������*�rzc89Cs�dd�|D�}t�dd�|D��}|��}g}|D]}d||�d�f}tj||dd�}|�|�qt�|�}dd�|D�}t�dd�|D��}	t||||	d	�S)90NcSsg|]	}|d�d��qS)r-r)r6��.0�itemrrr�91<listcomp>szcollate_fn.<locals>.<listcomp>cSsg|]}|jd�qS)r)r)r��specrrrr�srr)�valuecSsg|]}|d�qS)r+rrrrrr� �cSsg|]}t|��qSr)r$rrrrr�!r�)rm�mel_lengthsr+�text_lengths)	r/�92LongTensor�amax�size�F�padrT�stackr7)93r]Z	mel_specsr�Zmax_mel_lengthZpadded_mel_specsr��paddingZpadded_specr+r�rrr�94collate_fns"95�r�)ryrV�importlib.resourcesrrr/Ztorch.nn.functionalr�96functionalr�r2�torch.utils.datarr�datasetsrrv�f5_tts.model.modulesr�f5_tts.model.utilsr	r97r=�listrarJr7rtrIrzr�rrrr�<module>sJ8FC�������98�B