U
    %d                     @   sr   d dl Z d dlZd dlZd dlmZmZ dd Zdd Zdd Z	d	d
 Z
ejeejdddZdd Zdd ZdS )    N)download_url_to_filemodule_utilsc                   C   s   dS )N)&_-!'(),.:;? abcdefghijklmnopqrstuvwxyz r*   r*   r*   C/tmp/pip-unpacked-wheel-lbdmvq91/torchaudio/pipelines/_tts/utils.py
_get_chars   s    r,   c                   C   s   dS )N)`r   r   r   r   r   r	   r
   r   r   r   r   r   ZAAZAA0ZAA1ZAA2ZAEZAE0ZAE1ZAE2ZAHZAH0ZAH1ZAH2ZAOZAO0ZAO1ZAO2ZAWZAW0ZAW1ZAW2ZAYZAY0ZAY1ZAY2BZCHDZDHZEHZEH0ZEH1ZEH2ZERZER0ZER1ZER2ZEYZEY0ZEY1ZEY2FGZHHZIHZIH0ZIH1ZIH2ZIYZIY0ZIY1ZIY2ZJHKLMNZNGZOWZOW0ZOW1ZOW2ZOYZOY0ZOY1ZOY2PRSZSHTZTHZUHZUH0ZUH1ZUH2ZUWZUW0ZUW1ZUW2VWYZZZHr*   r*   r*   r*   r+   _get_phones3   s    r=   c                 C   sD   t jdd | D t jd}dd | D }t jjjj|dd}||fS )Nc                 S   s   g | ]}t |qS r*   )len.0r   r*   r*   r+   
<listcomp>   s     z_to_tensor.<locals>.<listcomp>)Zdtypec                 S   s   g | ]}t |qS r*   )torchtensorr?   r*   r*   r+   rA      s     T)Zbatch_first)rB   rC   Zint32nnutilsZrnnZpad_sequence)indiceslengthsvaluesr*   r*   r+   
_to_tensor   s    rI   c              	   C   s   t dstdddlm} td}|j}|tj	 zrd|  }t
jtj d}t
j|dd t
j|| }t
j|s|d kri n|}t||f| ||W S || X d S )	NZdpz3DeepPhonemizer is not installed. Please install it.r   )
PhonemizerzKhttps://public-asai-dl-models.s3.eu-central-1.amazonaws.com/DeepPhonemizer/ZcheckpointsT)exist_ok)
_mod_utilsZis_module_availableRuntimeErrorZdp.phonemizerrJ   logging	getLoggerlevelsetLevelINFOospathjoinrB   ZhubZget_dirmakedirsexistsr   Zfrom_checkpoint)fileZ	dl_kwargsrJ   loggerZ
orig_levelurl	directoryrT   r*   r*   r+   _load_phonemizer   s     


r\   )waveformbitsreturnc                 C   s@   t | dd} | d d| d  d } t | dd| d  S )z6Transform waveform [-1, 1] to label [0, 2 ** bits - 1]   g      ?   r   )rB   clampint)r]   r^   r*   r*   r+   _unnormalize_waveform   s    re   c                 C   s2   dddddddddd	d
ddddd	ddddd| dS )NFP   ra            i   i  g?T             g      ?)Zmask_paddingZn_melsZn_frames_per_stepZsymbol_embedding_dimZencoder_embedding_dimZencoder_n_convolutionZencoder_kernel_sizeZdecoder_rnn_dimZdecoder_max_stepZdecoder_dropoutZdecoder_early_stoppingZattention_rnn_dimZattention_hidden_dimZattention_location_n_filterZattention_location_kernel_sizeZattention_dropoutZ
prenet_dimZpostnet_n_convolutionZpostnet_kernel_sizeZpostnet_embedding_dimZgate_thresholdZn_symbolr*   )Z	n_symbolsr*   r*   r+   _get_taco_params   s.    rn   c                   C   s    dddgdddddddddd	
S )
Nri      rm   i  
   rg   rf   rj   )
Zupsample_scalesZ	n_classesZ
hop_lengthZn_res_blockZn_rnnZn_fcZkernel_sizeZn_freqZn_hiddenZn_outputr*   r*   r*   r*   r+   _get_wrnn_params   s    rq   )rN   rS   rB   Ztorchaudio._internalr   r   rL   r,   r=   rI   r\   ZTensorrd   re   rn   rq   r*   r*   r*   r+   <module>   s   +e