a
    h                  	   @   s   d dl mZmZmZmZmZ d dlZd dlZd dlZede	Z
dddddd	d
ddZdddZe
jddgddd Ze
jddgddd ZdS )    )	BlueprintrequestjsonifyResponsecurrent_appNedge_ttses-ES-ElviraNeuralzes-ES-AlvaroNeuralzes-MX-DaliaNeuralzes-MX-JorgeNeuralzes-AR-ElenaNeuralzes-AR-TomasNeuralzes-CO-SalomeNeuralzes-CO-GonzaloNeural)elenaZpablomariaZjorgesofiaZtomascatalinaZgonzalo+0%c                    sH   t j| ||d}d}| 2 z$3 dH W }|d dkr||d 7 }q6 |S )u1   Generar audio usando Edge TTS de forma asíncrona)rate    Ntypeaudiodata)r   Communicatestream)textvoicer   communicate
audio_datachunk r   0/var/www/auris/backend/routes/edge_tts_routes.pygenerate_speech_async   s    r   z/api/edge-tts/synthesizePOST)methodsc            	   
   C   sp  zt j} | dd}| dd}| dd}|sDtddid	fW S |d
k rRd}n.|dk r`d}n |dkrnd}n|dkr|d}nd}t|d}z2t }|t|||}t	|dddddW W S  t
y } z<tjd|  tdt| dddfW  Y d }~W S d }~0 0 W nR t
yj } z8tjd|  tddt| idfW  Y d }~S d }~0 0 d S ) Nr    r   r	   speedg      ?errorzTexto requeridoi  g      ?z-50%g      ?z-25%g      ?z+50%g      ?z+25%r   r   z
audio/mpegz"inline; filename="edge_speech.mp3"zno-cache)zContent-DispositionzCache-Control)mimetypeheaderszError en Edge TTS: zError generando audio: Zedge_tts_error)r!   r   i  z#Error en /api/edge-tts/synthesize: zError interno del servidor: )r   jsongetr   SPANISH_VOICESasyncioget_event_looprun_until_completer   r   	Exceptionr   loggerr!   str)	r   r   
voice_namer    r   Z
edge_voiceloopr   er   r   r   synthesize_edge_speech    sX    

	 r0   z/api/edge-tts/voicesGETc               
   C   sR   g } t  D ]8\}}| || d|dv r.dnd|dd d qtd| iS )	z8Obtener lista de voces disponibles con nombres amigableses)r	   r
   r   r   ZfemaleZmale-   )idnamelanguageZgenderregionvoices)r&   itemsappendtitlesplitr   )Zvoices_infor6   Z	edge_namer   r   r   get_available_voicesW   s    
r>   )r   r   )flaskr   r   r   r   r   r   r'   io__name__edge_tts_bpr&   r   router0   r>   r   r   r   r   <module>   s$   


6