o
    
i                     @   sl   d dl mZ d dlmZ d dlZd dlZd dlZee  e	e
  G dd dZG dd dZdS )    )EspeakWrapper)TupleNc                   @   s   e Zd Zei dddddddddd	d
dddddddddddddddddddddddd d!dd" d#d$ d%Zd+d'd(Zd)d* Zd&S ),EspeakFallbacku   ʔˌn̩u   ʔnu   ʔn̩   a^ɪI   a^ʊW   d^ʒ   ʤ   e^ɪAe   t^ʃ   ʧ   ɔ^ɪYu   ə^lu   ᵊlu   ʲojou   ʲəu   jəu   ʲ u   ɚu   əɹru   ɹxk   çu   əl)u   ɐu   ɬu   ̃c                 C   s   t | d  S )Nr   )len)kv r   A/home/ubuntu/.local/lib/python3.10/site-packages/misaki/espeak.py<lambda>   s    zEspeakFallback.<lambda>)keyNc                 C   s4   || _ || _tjjd|rdnd dddd| _d S )Nzen-gbusT^)languagepreserve_punctuationwith_stresstie)britishversion
phonemizerbackendEspeakBackend)selfr&   r'   r   r   r   __init__   s   zEspeakFallback.__init__c                 C   s   | j |jg}|sdS |d  }t| jD ]
\}}|||}qtdd|t	dd}| j
rE|dd}|d	d
}|dd}n|dd}|dd}|dd}|d
d	}|dd}|dd}| jdkrx|dddd}|dddfS )N)NNr   
(\S)\u0329   ᵊ\1)  r   u   e^əu   ɛːu   iəu   ɪə   ə^ʊQ   o^ʊOu   ɜːɹu   ɜɹu   ɜːu   ːou   ɔ2.0u   ɾTu   ʔtr!      )r)   	phonemizetextstriptypeE2Mreplaceresubchrr&   r'   )r+   tokenpsoldnewr   r   r   __call__'   s(   
zEspeakFallback.__call__N)__name__
__module____qualname__sorteditemsr=   r,   rF   r   r   r   r   r      sX    	


r   c                   @   s,   e Zd ZdddZdeedf fddZdS )	EspeakG2PNc                 C   s|   || _ || _tjj|ddddd| _ddddd	d
dddddd| _|dkr4| jddddddddd t| j | _d S )NTr!   zremove-flags)r"   r#   r$   r%   language_switchr   r   u   ʣr
   r   r3   r1   Su   ʦr   r   )r   r   zd^zr	   r   r2   r0   zs^szt^sr   r   r5   BCDEVUXZ)u   œ̃u   ɔ̃u   ɑ̃u   ɛ̃u   ʊ̃u   ũu   õu   ɐ̃)	r"   r'   r(   r)   r*   e2mupdaterK   rL   )r+   r"   r'   r   r   r   r,   @   s(   	zEspeakG2P.__init__returnc                 C   s   | dtd dtd}| dd dd}| j|g}|s#dS |d  }| jD ]
\}}| ||}q,| d	d
}| jdkrX| tdd
 tdd
}tdd|}n| dd
}| dd dd}|d fS )N   «i      »i   ())r   Nr   r!   r   r5   r/   i*  r-   r.   -)	r>   rA   r)   r9   r;   rX   r'   r?   r@   )r+   r:   rC   rD   rE   r   r   r   rF   W   s   
zEspeakG2P.__call__rG   )rH   rI   rJ   r,   r   strrF   r   r   r   r   rM   ?   s    
rM   )!phonemizer.backend.espeak.wrapperr   typingr   espeakng_loaderr(   r?   set_libraryget_library_pathset_data_pathget_data_pathr   rM   r   r   r   r   <module>   s    2