CoolFace
Modelpublic

Aditya02/IndicF5

sourceHugging Facemitupdated 5mo agoView on Hugging Face
4likes425downloads
utils.cpython-310.pyc52 linesDownload Raw Back to __pycache__
1o

23�g��@s�ddlmZddlZddlZddlmZddlmZddlZddl	m3Z4ddlZddlm
Z
mZd;dd�Zd	d5�Zdd�Zd<d=dd�Zd>dd�Zd?dd�Zd<d@d!d"�ZdAdBd'd(�Z	#dAdCd,d-�ZdDdEd1d2�Ze��ed3�dFd5d6�ZdGd9d:�ZdS)H�)�annotationsN)�defaultdict)�files��pad_sequence)�lazy_pinyin�StylecCsRt�|�t|�tjd<t�|�tj�|�tj�|�dtj	j6_dtj	j7_dS)NZPYTHONHASHSEEDTF)
�random�seed�str�os�environ�torch�manual_seed�cuda�manual_seed_all�backends�cudnn�
deterministic�	benchmark)r8�r�?/projects/data/ttsteam/repos/f5_hf/models/f5_tts/model/utils.py�seed_everythings91011rcCs|duS�Nr)�vrrr�existssrcCst|�r|S|Sr)r)r�drrr�default#sr�t�int['b']�length�12int | None�return�bool['b n']cCs@t|�s|��}tj||jd�}|ddd�f|dd�dfkS�N��device)r�amaxr�aranger&)rr �seqrrr�lens_to_mask*s r*�seq_len�start�endcCsh|����}tj||jd���}|ddd�f|dd�dfk}|ddd�f|dd�dfk}||@Sr$)�max�itemrr(r&�long)r+r,r-�max_seq_lenr)Z13start_maskZend_maskrrr�mask_from_start_end_indices2s14  r2�frac_lengths�15float['b']cCsF||��}||}t�|�}||��jdd�}||}t|||�S)Nr��min)r0r�	rand_like�clampr2)r+r3�lengthsZ	max_start�randr,r-rrr�mask_from_frac_lengths:s16r;�float['b n d']�mask�float['b d']cCslt|�s17|jdd�St�|dd�dd�df|tjd|jd��}|jdd�}|��jdd�}||jdd�S)N�)�dimgr%g�?r5)	r�meanr�where�tensorr&�sum�floatr8)rr=�num�denrrr�maybe_masked_meanEs,rH������text�	list[str]�int['b nt']cCs dd�|D�}t||dd�}|S)NcSs g|]}t�gt|d����qS)�UTF-8)rrC�bytes��.0rrrr�18<listcomp>Rs z&list_str_to_tensor.<locals>.<listcomp>T��
padding_value�batch_firstr)rJrSZlist_tensorsrrr�list_str_to_tensorQsrU�list[str] | list[list[str]]�vocab_char_map�dict[str, int]cs$�fdd�|D�}t||dd�}|S)Ncs$g|]}t��fdd�|D���qS)csg|]}��|d��qS�r)�get)rP�c�rWrrrQ]sz.list_str_to_idx.<locals>.<listcomp>.<listcomp>)rrCrOr\rrrQ]s$z#list_str_to_idx.<locals>.<listcomp>TrRr)rJrWrSZlist_idx_tensorsrr\r�list_str_to_idxXsr]�pinyin�	tokenizerrcCs(|dvrRtj�td��d�|�d|�d��}t|ddd��}i}t|�D]\}}|||d	d19�<q$Wd	�n1s;wYt|�}|ddksNJd
��||fS|dkr^d	}d}||fS|dkr�t|ddd��}i}t|�D]\}}|||d	d20�<qpWd	�n1s�wYt|�}||fS)aI21    tokenizer   - "pinyin" do g2p for only chinese characters, need .txt vocab_file22                - "char" for char-wise tokenizer, need .txt vocab_file23                - "byte" for utf-8 tokenizer24                - "custom" if you're directly passing in a path to the vocab.txt you want to use25    vocab_size  - if use "pinyin", all available pinyin types, common alphabets (also those with accent) and symbols26                - if use "char", derived from unfiltered character & symbol counts of custom dataset27                - if use "byte", set to 256 (unicode byte range)28    )r^�char�f5_ttsz29../../data�_z30/vocab.txt�rzutf-8)�encodingNrI� rzHmake sure space is of idx 0 in vocab.txt, cuz 0 is used for unknown char�byte��custom)r�path�joinr�joinpath�open�	enumerate�len)�dataset_namer_Ztokenizer_path�frW�ir`�31vocab_sizerrr�
get_tokenizeres032$��
�	���rsz,Word segmentation module jieba initialized.33Tc34CsNg}t�dddddd��}dd�}|D]�}g}|�|�}t�|�D]}}tt|d��}|t|�krG|rA|dkrA|d	d35vrA|�d�|�|�q!|rs|dt|�krst	|t36jd
d�}	t|�D]\}37}||�rj|�d�|�|	|38�q]q!|D](}t
|�dkr�|�|�qu||�r�|�d�|�t	|t39jd
d��qu|�|�quq!|�|�q|S)N�,�"�')�;u“u”u‘u’cSsd|ko	dkSS)Nu㄀u鿿r)r[rrr�40is_chinese�s��z*convert_char_to_pinyin.<locals>.is_chineserMr?rIz :'"re�T)�styleZtone_sandhirg)r�	maketrans�	translate�jieba�cutrnrN�append�extendrrZTONE3rm�ord)�	text_listZ	polyphone�final_text_listZcustom_transrxrJZ	char_list�segZseg_byte_len�seg_rqr[rrr�convert_char_to_pinyin�s>�414243�44�r���45cCsftt�}tt|�|d�D]}||||�}||d7<q|��D]\}}||kr0dSq%dS)Nr?TF)r�int�rangern�items)rJr �	toleranceZ
pattern_countrq�pattern�countrrr�repetition_found�s�r�rYr)rrr r!r"r#)r+rr,rr-r)r+rr3r4)rr<r=r#r"r>)rI)rJrKr"rL)rJrVrWrXr"rL)r^)r_r)T)r�r�)�46__future__rrr	�collectionsr�importlib.resourcesrr�torch.nn.utils.rnnrr}Zpypinyinrrrrrr*r2r;rHrUr]rs�47initialize�printr�r�rrrr�<module>s048
495051�
#52+