a
    V-h	                     @   s6   d dl Z d dlZd dlZd dlmZ G dd dZdS )    N)gTTSc                   @   s$   e Zd ZdZd
ddZddd	ZdS )TextToSpeechu0   Clase para manejar la conversión de texto a vozesNc                 C   s   || _ |p.tjtjtjtddddd| _tj| jdd dtj	v | _
| j
st | _| jdd	 | jd
}|D ]4}d|j v sd|j v r|| jd|j  qq|d S )Nz..frontendassetsaudioT)exist_okZRENDERrate   voicesspanishu   españolvoice)default_languageospathjoindirnameabspath__file__	audio_dirmakedirsenvironuse_gttspyttsx3initenginesetPropertygetPropertynamelowerid)selfr   r   r   r    r"   //var/www/auris/backend/models/text_to_speech.py__init__	   s    ,
zTextToSpeech.__init__default      ?c              
   C   s.  t   d}tj| j|}z| jrFt|| j|dk d}|	| n~t
| jd| }| jd| |dkr| jd}|D ]*}	| |	j v r| jd|	j  qq| j|| | j  tjdd	tj|W S  ty( }
 z2tj|rt| td
|
 W Y d}
~
n
d}
~
0 0 dS )zE
        Sintetiza texto a voz y devuelve la ruta al archivo
        z.mp3r&   )textlangZslowr	   r%   r   r   r   r   z!Error al sintetizar texto a voz: N)uuiduuid4r   r   r   r   r   r   r   saveintr   r   r   r   r   r    Zsave_to_fileZ
runAndWaitbasename	Exceptionexistsremove)r!   r'   
voice_typespeedfilenameZoutput_pathttsr	   r   r   er"   r"   r#   
synthesize   s*    

zTextToSpeech.synthesize)r   N)r%   r&   )__name__
__module____qualname____doc__r$   r6   r"   r"   r"   r#   r      s   
r   )r   r)   r   Zgttsr   r   r"   r"   r"   r#   <module>   s   