CoolFace
Apppublic

cocktailpeanut/DiffRhythm

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

2���g8G�@sddlZddlZddlmZddlmZddlmZddlm	Z	ddl3mZddlm
ZddlmZddlZddlmZddlZdd	lmZddlZddlZejZej
jd4dd�gd
�ZddgZdedefdd�Zdefdd�Z Gdd�d�Z!Gdd�d�Z"Gdd�d�Z#Gdd�dej$j%j&�Z'dd �Z(e)d!k�r	gd"�Z*d#d$gZ+d%d&gZ,e'e+e,e*d'd(d)d'd*ddd*d*d+d,�Z-ddl.Z.e.�/�e-dZ0ddl1Z1e1�1�Z2ee-d-dd*de(d.�Z3dZ4ee3�D]%Z5e5d/e5d0e5d1Z6Z7Z8e1�1�e2Z9e:d2e9���ddl.Z.e.�/�q�e:d3e4���dSdS)4�N)�TextData)�	FloatData)�LrcData)�Base)�LanceReader)�5DataLoader)�tqdm)�pad_sequence�spawnT)�force)u	纯音乐u编曲u作词u作曲u调音u	制作人u	录音师Zmusic�end�time�lyriccCsX|dkrdStD]	}||vrdSqtD]
}||����kr!dSqt|�dkr*dSdS)Ng�������?FrT)�filter_keyword_list�filter_full_list�strip�lower�len)r
rZfilter_keywordZfilter_full�r��/mnt/sfs/music/hkchen/workspace/F5-TTS-HW/exps/styleprompt_f5_llama_align_rand_start_pure_music/f5_tts/model/custom_dataset_lrc_emb.py�check_lyric&s��r�lyricscCs�g}|��}|�d�D]9}z2|dd�|dd�}}|��}|�d�\}}t|�dt|�}t||�s7Wq|�||f�WqYq|S)N�6��	�7�:�<)r�split�int�floatr�append)rZlyrics_with_time�liner
r�mins�secsrrr�parse_lyrics4s8r%c@�eZdZdd�Zdd�ZdS)�TiktokenTokenizercCst�d�|_dS)N�gpt2)�tiktokenZget_encoding�	tokenizer��selfrrr�__init__HszTiktokenTokenizer.__init__cCs|j�|�}|S�N)r*�encode)r,�text�tokenrrrr/J�zTiktokenTokenizer.encodeN��__name__�9__module__�__qualname__r-r/rrrrr'G�r'c@r&)�
CNENTokenizercC�dSr.rr+rrrr-P�zCNENTokenizer.__init__cCst|�\}}|Sr.)Zchn_eng_g2p�r,r0Zphoner1rrrr/Rr2zCNENTokenizer.encodeNr3rrrrr8Or7r8c@r&)�MaskGCTTokenizercCr9r.rr+rrrr-Xr:zMaskGCTTokenizer.__init__cCst�|dd�\}}|S)N�auto)Ztext_tokenizer�tokenizer;rrrr/ZszMaskGCTTokenizer.encodeNr3rrrrr<Wr7r<c@s�eZdZedddddddddddfd	eed10eedeefdd
�Zddeedefdd�Zdd�Z	dd�Z11dd�Zdd�ZdS)�LanceDiffusionDatasetr�D��TF�����r(�fp16�
prompt_lances�12lrc_lances�
latent_lancescCs||_||_||_||_||_||_||_d|_||||_g|_	i|_13|�|jtdd�|�|jt
d�|jrA|�|jt
d�d|_d|_d|_d	|_|	rS|14rSJ�||_|	|_|15|_||_|
|_t|j16���|_17|d18krstj|_n|dkr|tj|_n|dkr�tj|_t�d
�dS)NrA�lrcT�latent�promptrr�icrC�bf16�fp32�*) rDrErF�use_style_prompt�19max_frames�20min_frames�
sampling_rate�downsample_rate�max_secs�lance_connections�file_lst�21load_lancerr�pad_token_id�comma_token_id�period_token_id�start_token_idr%�align_lyrics�lyrics_slice�skip_empty_lyrics�lyrics_shift�list�values�torch�float16�
feature_dtype�bfloat16�float32�random�seed)r,rDrErFrOrPrQrRr%r[r\r]rNr^�tokenizer_type�	precisionrrrr-`sB	2223zLanceDiffusionDataset.__init__�lance_paths�24target_clsc
Cs�t|j�}g}t|�D]K\}}t||d�}	|	��}25t|26d|�d|��d�D]+}|j�|jd�}|dur@|||f|j|j|<q%|rO||||fi|j|j<q%	q%|�	|	�q|j�27|�dS)uI28        lance_paths是路径,29        target_cls为对应类别30        )rkzload z, idx )�descN)rrT�	enumeraterZget_idsrrU�getZdata_idr!�extend)
r,rjrkZtarget_field�createZconnection_offset�connections�idx�lp�reader�ids�i�itemrrrrV�s31z LanceDiffusionDataset.load_lancec32CsRz||\}}|j|�|jg�d}W|Sty(}zWYd}~dSd}~ww)Nr)rTZget_datas_by_rowidsZ_rowid�	Exception)r,rw�fieldZ33reader_idx�errr�	load_item�s���zLanceDiffusionDataset.load_itemcs���|d�}|j}|j}tt||��}�jr"t|�dkr"td|����|d�}t�	|j34���d��}�j
rN��|d�}t�	|j35����d�}|�dd�}nt�dd�}td|jd	d36�}ttd�j�j�|�}t�d|�}	|	�j�j�|dd�|	d�f}d}37�|38}�fdd
�|D�}�fdd
�|D�}g}tt|��D]%}
||
\}}|
dkr�|dkr�|�dt��jg�f�|}|�||f�q�|}t|�dkr�|d	dnd	}t|�dkr�|dd	�n|}tj�jftjd�}d}d}|D]M\}}�fdd
�|D��jg}tj|tjd�}|jd}t|�j�j�}d}t|||�}t|�j|�}|d|�||||�<||7}||}q��j�rX|dk�rXtd|�d|����|dd�dt|�j�j��f}|��j �}|��j �}||||fS)NrGrzEmpty or short lyrics: rHrrIrirBrA��cs(g|]\}}|�dkr|�|f�qS)rr��.0�39time_startr"��40start_timerr�41<listcomp>�s(z4LanceDiffusionDataset.get_triple.<locals>.<listcomp>cs"g|]
\}}|�jkr||f�qSr)rSr}r+rrr��s"g)�dtypecs g|]}|�jkr|n�j�qSr)rYrX)r~r1r+rrr��s �2zEmpty or short lyrics(z): )!r{r
rGr_�zipr]r�42ValueErrorra�43from_numpy�data�copy�squeezerN�	transpose�zeros�max�shape�minrrQrRrf�randint�ranger!�tensorrZrO�longrY�torc)r,rwZtime_lrcZinput_timesZ44input_lrcsZ
lrc_with_timerHrIZmax_start_frameZstart_frameZmax_start_timeZnormalized_start_timeZmodified_lrc_with_timervr
r"Z45line_tokenZlatent_end_timerGZtokens_countZlast_end_posr�tokens�46num_tokensZgt_frame_start�frame_shiftZframe_startZ	frame_lenr)r,r�r�47get_triple�sh4849$z LanceDiffusionDataset.get_triplec	50Cs~|}	z|�|j|�\}}}}|jd|jkr�||||d�}|WSty>}zt�d|��d�}WYd}~qd}~ww)NTrB)rIrGrHr�rr)r�rUr�rPrxrfr��__len__)	r,�indexrrrIrGrHr�rwrzrrr�__getitem__s��z!LanceDiffusionDataset.__getitem__cCs51t|j�Sr.)rrUr+rrrr�*s52zLanceDiffusionDataset.__len__N)F)
r4r5r6�MAX_INTr_�strr-rrVr{r�r�r�rrrrr?_s53$�8Xr?cCs�dd�|D�}dd�|D�}dd�|D�}dd�|D�}t�dd�|D��}t�dd�|D��}t�dd�|D��}|��}|��}	|��}54g}|D]}tjj�|d	||jd55f�}
|�|
�qJg}|D]}tjj�|d	|	|jd56f�}|�|�qeg}|D]}tjj�|d	|	|jd57f�}|�|�q�g}|D]	}|}|�|�q�t�|�}t�|�}t�|�}t�	|�}|||||||d�S)NcS�g|]}|d�qS)rHr�r~rwrrrr�.�z%custom_collate_fn.<locals>.<listcomp>cSr�)rIrr�rrrr�/r�cSr�)rGrr�rrrr�0r�cSr�r�rr�rrrr�1r�cS�g|]}|jd�qS�rB�r�)r~rHrrrr�3�cSr�r�r�)r~rIrrrr�4r�cSr�r�r�)r~rGrrrr�5r�rrB)rIrGrH�prompt_lengths�lrc_lengths�latent_lengthsr�)58ra�59LongTensor�amax�nn�60functional�padr�r!�stackr�)�batchZlatent_listZprompt_listZlrc_listZstart_time_listr�r�r�Zmax_prompt_lengthZmax_latent_lengthZmax_lrc_lengthZpadded_prompt_listrIZ
padded_promptZpadded_lrc_listrGZ61padded_lrcZpadded_latent_listrHZ
padded_latentZpadded_start_time_listr�Zpadded_start_timeZ
prompt_tensorZ62lrc_tensorZ
latent_tensorZstart_time_tensorrrr�custom_collate_fn-sD63646566�r��__main__)z!/mnt/sfs/music/lance/latent-lancez5/mnt/sfs/music/lance/latent-lance-cnen-music-second-1z5/mnt/sfs/music/lance/latent-lance-cnen-music-second-2z%/mnt/sfs/music/lance/style-lance-fullz2/mnt/sfs/music/lance/style-lance-cnen-music-secondz'/mnt/sfs/music/lance/lrc-lance-emb-fullz*/mnt/sfs/music/lance/lrc-lance-cnen-secondrA�dr@rrZmaskgct�)�dataset�67batch_size�shuffle�num_workers�68pin_memory�69collate_fnrIrGrHz#time cost on preparing dataloader: zcnt: );ra�	torch_npuZ%f5_tts.model.alsp_lance.data.textdatarZ$f5_tts.model.alsp_lance.data.npydatarZ$f5_tts.model.alsp_lance.data.lrcdatarZ!f5_tts.model.alsp_lance.data.baserZf5_tts.model.alsp_lance.toolsr�torch.multiprocessing�multiprocessing�mp�torch.utils.datarrfrr)Ztorch.nn.utils.rnnr	�	traceback�sys�maxsizer��set_start_methodrrr r�rr%r'r8r<�utilsr��Datasetr?r�r4Z70latent_pthZ71prompt_pthZlrc_pth�ldd�pdb�	set_traceZhhhr
r��72dataloader�cntr�rIrGrH�end_time�printrrrr�<module>sn�O73.C"��