CoolFace
Apppublic

cocktailpeanut/DiffRhythm

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

2��g�+�@s�dZddlmZddlmZddlmZddlZddlmZddlZddlmm	Z3ddlmZddl
mZdd	lmZdd4lmZmZmZmZmZmZddd�ZGdd�dej�ZdS)z\5ein notation:6b - batch7n - sequence8nt - text sequence9nw - raw wave length10d - dimension11�)�annotations)�Callable)�randomN)�nn)�pad_sequence)�odeint)�MelSpec)�default�exists�list_str_to_idx�list_str_to_tensor�lens_to_mask�mask_from_frac_lengths�seq_len�int['b']�start�endcCs^|}tj||d���}|ddd�f|dd�dfk}|ddd�f|dd�dfk}||@S)N��device)�torch�arange�long)rrrr�max_seq_len�seqZ12start_maskZend_mask�r�J/home/node59_tmpdata3/hkchen/DiffRhythm/diffrhythm/diffrhythm/model/cfm.py�"custom_mask_from_start_end_indices s13  rcs�eZdZdedd�edd�ddddd	d14d	dfd4�fdd�
Zedd��Ze��d	d	d	d	ddd	d	dd	dddd	d	ddd �d5d-d.��Z												d6d7d2d3�Z15�ZS)8�CFM��euler)�methodg�������?)�min_stepg333333�?g�������?g�������?N)gffffff�?g�?F�transformer�	nn.Module�
odeint_kwargs�dict�odeint_options�frac_lengths_mask�tuple[float, float]�vocab_char_map�dict[str:int] | None�use_style_prompt�boolc
s�t���|16|_|	|_||_||_||_||_td|j�d|j�d|j���||_	|j17}
|
|_18||_||_||_
||_||_dS)Nzaudio drop prob -> z; style_drop_prob -> z; lrc_drop_prob: )�super�__init__r'�num_channels�audio_drop_prob�cond_drop_prob�style_drop_prob�
lrc_drop_prob�printr"�dim�sigmar$r&r)r+)�selfr"r6r$r&r0r1r2r3r/r'r)r+r5��	__class__rrr.(s 19 20zCFM.__init__cCst|���jS)N)�next�21parametersr)r7rrrr_sz22CFM.device� g@iri)�style_prompt�style_prompt_lens�negative_style_prompt�lens�steps�cfg_strength�sway_sampling_coef�seed�max_duration�vocoder�no_ref_audio�duplicate_test�t_inter�	edit_mask�23start_time�latent_pred_start_frame�latent_pred_end_frame�cond�float['b n d'] | float['b nw']�text�int['b nt'] | list[str]�duration�int | int['b']r@�int['b'] | NonerD�24int | NonerF�0Callable[[float['b d n']], float['b nw']] | Nonec$	sR���t����jtjkr|��}|jd|kr&|dd�d|�dd�f}|jdkrA��	|�}|�25ddd�}|jd�jksAJ�g|jdd��|j�R\}}}t
|�s`tj|f||tjd�}t�t�r�t
�j�rtt��j��|��nt���|���jd|ks�J�t
��r��dkjdd�}t|�}|dur�||@}t�|g��|j�}|}t�|g��|j�}t||||j|d�}|�d�}t�|t�|�|��t|t�r�tj|f||tjd�}|j|d�}|��}|r�t j!|dd||d|fd	d26�}|dk�rt|��nd�|�rt�|�}���������f	dd�}g}|D]}t
|��r)t�"|�|�#tj$|�j�j�jd���qt%|dd
d�}d}|�rZ|}d||||}t|d|�}tj&|d|�j�jd�} |27du�r}| |28t�'tj(d| �d| } t)||| fi�j*��}!|!d}"|"}#t�||#|�}#t
|
��r�|#�29ddd�}#|
|#�}#|#|!fS)N��r�����)r�dtype)r5)rr)�maxr)�valuec
s\�j|��|�ddd���d�}�dkr|S�j|��|�ddd���d�}|||�S)NF)�xrNrP�time�mask�drop_audio_cond�	drop_text�drop_promptr=r>rKg�h㈵��>T)r")�tr]�predZ	null_pred�	rBr_r?r7rKZ	step_condr=r>rPrr�fn�s��zCFM.sample.<locals>.fnT)�
padding_value�batch_first)+�evalr:r;rZr�float16�half�shape�ndim�mel_spec�permuter/rr30�fullr�31isinstance�listr)r�tor�sumr
�tensorr�	unsqueeze�where�32zeros_like�int�clamp�amax�F�pad�manual_seed�append�randnr�linspace�cos�pirr$)$r7rNrPrRr=r>r?r@rArBrCrDrErFrGrHrIrJrKrLrM�batchZcond_seq_lenrZ	text_lensZ	cond_maskZfixed_span_maskZ	test_condrf�y0ZdurZt_startrcZ33trajectoryZsampled�outrrer�samplecs|3435 36373839 40	41424344"45$46z47CFM.sample�inp�noise_scheduler�48str | Nonec	
Csjg|jdd��|j�|j�|j�R\}	}49}}}
t|�s%tj|	f|50|d�}t||51d�}tj|	f|jd��	�j52|j�}t||�}t|�rE|}|}t�
|�}tjdd|	f|jd�}tjj�|�}|�d��d�}d||||}||}t�|dt�|�|�}t�|jk}t�|jk}t�|jk}|j|||||||||||d	�}tj||d53d�}||}|��||fS)NrXr)�lengthrrW)�mean�std�sizerrY).N)r]rNrPr^r`rarbr=r>�	grad_ckptrK�none)�	reduction)rlrZrr6r54rrpr
�zeros�float�uniform_r'r�55randn_like�normalr�56functional�sigmoidrvrwrxrr0r3r2r"r|�mse_lossr�)r7r�rPr=r>r@r�r�rKr�rrZrt_σ1r_Zfrac_lengthsZrand_span_mask�x1�x0r^rctφ�flowrNr`rarbrd�lossrrr�forward�s405758�zCFM.forward)r"r#r$r%r&r%r'r(r)r*r+r,)rNrOrPrQrRrSr@rTrDrUrFrV)NNNNFN)r�rOrPrQr@rTr�r�)�__name__�59__module__�__qualname__r%r.�propertyrr�no_gradr�r��
__classcell__rrr8rr's\���760��r)rrrrrr)�__doc__�61__future__r�typingrrrrZtorch.nn.functionalr�r|Ztorch.nn.utils.rnnrZtorchdiffeqrZdiffrhythm.model.modulesrZdiffrhythm.model.utilsr	r62rrr
rr�Modulerrrrr�<module>s	 63