CoolFace
Apppublic

cocktailpeanut/DiffRhythm

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

2G��gpH�@s�ddlZddlZddlmZddlmZddlmZddlm	Z	ddlZddl3mZddl
mZddlZddlmZddlZddlmZddlZddlZddlZejZejjd	d4d�gd�Zd
dgZdedefdd�Zdefdd�ZGdd�d�Z Gdd�d�Z!Gdd�d�Z"Gdd�dej#j$j%�Z&dd�Z'e(d kr�d!gZ)d"gZ*d#gZ+	e&e)e*e+d$d%d&d$d'ddd'd'd(d)d*�Z,ee,d'd+d'd5e'd,�Z-dZ.ee-�D]*Z/e/d-e/d.e/d/Z0Z1Z2e3e1�e3e,j4�5e1dde/d0d��6��7���e3d1e.���dSdS)2�N)�TextData)�	FloatData)�Base)�LanceReader)�6DataLoader)�tqdm)�pad_sequence�spawnT)�force)u	纯音乐u编曲u作词u作曲u调音u	制作人u	录音师�music�end�time�lyriccCsX|dkrdStD]	}||vrdSqtD]
}||����kr!dSqt|�dkr*dSdS)Ng�������?FrT)�filter_keyword_list�filter_full_list�strip�lower�len)r
r�filter_keyword�filter_full�r�/mnt/sfs/music/hkchen/workspace/F5-TTS-HW/exps/base_model_without_bpm_pure_music_mulan_style_emb/f5_tts/model/custom_dataset.py�check_lyric&s��r�lyricscCs�g}|��}|�d�D]9}z2|dd�|dd�}}|��}|�d�\}}t|�dt|�}t||�s7Wq|�||f�WqYq|S)N�7��	�8�:�<)r�split�int�floatr�append)r�lyrics_with_time�liner
r�mins�secsrrr�parse_lyrics4s9r(c@�$eZdZdd�Zdd�Zdd�ZdS)�TiktokenTokenizercCst�d�|_dS)N�gpt2)�tiktoken�get_encoding�	tokenizer��selfrrr�__init__HszTiktokenTokenizer.__init__cCs|j�|�}dd�|D�}|S)NcS�g|]}|d�qS�rr��.0�xrrr�10<listcomp>L�z,TiktokenTokenizer.encode.<locals>.<listcomp>)r.�encode)r0�text�tokenrrrr9JszTiktokenTokenizer.encodecCs|j�dd�|D��S)NcSsg|]}|d�qSr3rr4rrrr7Pr8z,TiktokenTokenizer.decode.<locals>.<listcomp>)r.�decode�r0r;rrrr<OszTiktokenTokenizer.decodeN��__name__�11__module__�__qualname__r1r9r<rrrrr*Gsr*c@r))�
CNENTokenizercC�ftdd��}t�|�d|_Wd�n1swYdd�|j��D�|_ddlm}||_dS)N�./f5_tts/g2p/g2p/vocab.json�r�vocabcS�i|]\}}||�qSrr�r5�k�vrrr�12<dictcomp>V�z*CNENTokenizer.__init__.<locals>.<dictcomp>r)�chn_eng_g2p)	�open�json�load�phone2id�items�id2phone�f5_tts.g2p.g2p_generationrMr.)r0�filerMrrrr1S��13zCNENTokenizer.__init__cCs |�|�\}}dd�|D�}|S)NcSr2r3rr4rrrr7[r8z(CNENTokenizer.encode.<locals>.<listcomp>)r.�r0r:�phoner;rrrr9YszCNENTokenizer.encodec�d��fdd�|D��S)N�|c�g|]	}�j|d�qSr3�rSr4r/rrr7^�z(CNENTokenizer.decode.<locals>.<listcomp>��joinr=rr/rr<]�zCNENTokenizer.decodeNr>rrrrrBR�rBc@r))�MaskGCTTokenizercCrC)NrDrErFcSrGrrrHrrrrKerLz-MaskGCTTokenizer.__init__.<locals>.<dictcomp>r)�text_tokenizer)	rNrOrPrQrRrSrTrcr.)r0rUrcrrrr1brVzMaskGCTTokenizer.__init__cCs&|j�|dd�\}}dd�|D�}|S)N�autocSr2r3rr4rrrr7jr8z+MaskGCTTokenizer.encode.<locals>.<listcomp>)r.�tokenizerWrrrr9hszMaskGCTTokenizer.encodecrY)NrZcr[r3r\r4r/rrr7mr]z+MaskGCTTokenizer.decode.<locals>.<listcomp>r^r=rr/rr<lr`zMaskGCTTokenizer.decodeNr>rrrrrbararbc@s�eZdZedddddddddddfd	eed14eedeefdd
�Zddeedefdd�Zdd�Z	dd�Z15dd�Zdd�ZdS)�LanceDiffusionDatasetr�D��TF�����r+�fp16�
prompt_lances�16lrc_lances�
latent_lancescCs\||_||_||_||_||_||_||_d|_||||_|dkr(t	�|_17n|dkr1t�|_18n|dkrEtd�ddl
m}m}t�|_19g|_i|_|�|jtdd	�|�|jtd20�|jrg|�|jtd�|	rm|21rmJ�||_|	|_|22|_||_|
|_t|j���|_|dkr�tj|_n|d
kr�tj |_n|dkr�tj!|_n|dkr�tj |_t"�#d�dS)Nrhr+ZcnenZmaskgctz!!!herer)rMrc�latentT�lrc�promptrj�bf16�fp32�fp8�*)$rkrlrm�use_style_prompt�23max_frames�24min_frames�
sampling_rate�downsample_rate�max_secsr*r.rB�printrTrMrcrb�lance_connections�file_lst�25load_lancerrr(�align_lyrics�lyrics_slice�skip_empty_lyrics�lyrics_shift�list�values�torch�float16�
feature_dtype�bfloat16�float32�random�seed)r0rkrlrmrvrwrxryr(rr�r�rur��tokenizer_type�	precisionrMrcrrrr1psN2627282930zLanceDiffusionDataset.__init__�lance_paths�31target_clsc
Cs�t|j�}g}t|�D]K\}}t||d�}	|	��}32t|33d|�d|��d�D]+}|j�|jd�}|dur@|||f|j|j|<q%|rO||||fi|j|j<q%	q%|�	|	�q|j�34|�dS)uI35        lance_paths是路径,36        target_cls为对应类别37        )r�zload z, idx )�descN)rr|�	enumerater�get_idsrr}�get�data_idr#�extend)
r0r�r��target_field�create�connection_offset�connections�idx�lp�reader�ids�i�itemrrrr~�s38z LanceDiffusionDataset.load_lancec39CsRz||\}}|j|�|jg�d}W|Sty(}zWYd}~dSd}~ww)Nr)r|�get_datas_by_rowids�_rowid�	Exception)r0r��field�40reader_idx�errr�	load_item�s���zLanceDiffusionDataset.load_itemc	CsN|�|d�}|j}|jrt|j�dkrtd|��|�|d�}|jr)|�|d�}nd}t�|j���}d}|durL|j	rBtd|��tj41dtjd�}�n|j�rDt|j�}|j
r�tj42|jftjd�}|D][\}}	||jkrnqd|j�|	�}43|t|44�7}tj|45tjd�}46t||j|j�}|jdkr�t�|j|j�}||}td|�}||jkr�qd|47d|j|�||t|j||48jd��<qdn�|j	�rt|�dkr�td|��t�dt|�d�}
||
\}}||
d	\}}t||j|j�}t||j|j�}|dd�dd�||�f}|j�|�}tj|tjd�}n>g}|D]}|d|jk�r)n||j�|d	d49�7}�qtj|tjd�}t|�}n|j�|j�}tj|tjd�}t|�}|j�rj|dk�rjtd|�d|����|j�rwt�|j���}nt�50d
d�}|�d�}|dd�d|j�f}|�d��dd	�}|�|j�}|�|j�}|||fS)NrorzEmpty or short lyrics: rnrpr)�dtype�r�.zEmpty or short lyrics(z): i) r��datar�r�51ValueErrorrur��52from_numpy�copyr��zeros�longr(rrvrzr.r9�tensorr!rxryr�r��randint�max�min�shape�squeeze�	transpose�tor�)r0r�roZ	input_lrcrnrpZ	lrc_count�
lrc_with_time�53time_startr%Zlrc_line_tokens�frame_start�shift_framesZlrc_idx�time_end�_�	frame_endZ54lrc_tokensr�rrr�55get_triple�s�5657585960.�61626364z LanceDiffusionDataset.get_triplec65Csz|}	z|�|j|�\}}}|jd|jkr�|||d�}|WSty<}zt�d|��d�}WYd}~qd}~ww)NTri)rprornrr)	r�r}r�rwr�r�r��__len__�__getitem__)r0�indexr�rprornr�r�rrrr�s��z!LanceDiffusionDataset.__getitem__cCs66t|j�S)N)rr}r/rrrr�2s67zLanceDiffusionDataset.__len__N)F)
r?r@rA�MAX_INTr��strr1rr~r�r�r�r�rrrrrfos68$�7QrfcCsPdd�|D�}dd�|D�}dd�|D�}t�dd�|D��}t�dd�|D��}t�dd�|D��}|��}|��}|��}	g}69|D]}tjj�|d||jd	f�}|70�|�qCg}
|D]}tjj�|d||jd	f�}|
�|�q^g}|D]}tjj�|d||jd	f�}|�|�qyt�|71�}t�|
�}t�|�}||||||d72�S)NcS�g|]}|d�qS)rnr�r5r�rrrr76r8z%custom_collate_fn.<locals>.<listcomp>cSr�)rprr�rrrr77r8cSr�)rorr�rrrr78r8cS�g|]}|jd�qS�ri�r�)r5rnrrrr7:rLcSr�r�r�)r5rprrrr7;rLcSr�r�r�)r5rorrrr7<rLrri)rprorn�prompt_lengths�lrc_lengths�latent_lengths)	r��73LongTensor�amax�nn�74functional�padr�r#�stack)�batch�latent_list�prompt_list�lrc_listr�r�r��max_prompt_length�max_latent_length�max_lrc_length�padded_prompt_listrp�
padded_promptZpadded_lrc_listroZ75padded_lrc�padded_latent_listrn�
padded_latent�
prompt_tensor�76lrc_tensor�
latent_tensorrrr�custom_collate_fn5s2777879r��__main__z@/home/node59_tmpdata3/zqning/testdata/dit_test_lance/lance_t5ebdz>/home/node59_tmpdata3/zqning/testdata/dit_test_lance/lance_lrczA/home/node59_tmpdata3/zqning/testdata/dit_test_lance/lance_latentrh�drgrrir+)r(rr�r�rur�r�F)�dataset�80batch_size�shuffle�num_workers�81pin_memory�82collate_fnrprornr�zcnt: )8r��	torch_npuZ%f5_tts.model.alsp_lance.data.textdatarZ$f5_tts.model.alsp_lance.data.npydatarZ!f5_tts.model.alsp_lance.data.baserZf5_tts.model.alsp_lance.toolsr�torch.multiprocessing�multiprocessing�mp�torch.utils.datarr�rr,�torch.nn.utils.rnnr�	traceback�sysrO�maxsizer��set_start_methodrrr"r�rr(r*rBrb�utilsr��Datasetrfr�r?Z83prompt_pthZlrc_pthZ84latent_pth�ldd�85dataloader�cntr�rprornr{r.r<�numpy�tolistrrrr�<module>sn�G%J��86,�