a
    #;h                     @   sx   d Z ddlmZmZmZmZ ddlmZ ddlZddl	Z	ddl
Z
ddlmZ edeZe Zejddgd	d
d ZdS )z&
Rutas para Text-to-Speech con OpenAI
    )	Blueprintrequestjsonifycurrent_app)EdgeTTSServiceN)gTTSttsz/api/synthesize-speechPOST)methodsc               
   C   s&  zt j} | rd| vr*tddddfW S | d  }| dd}t| dd	}|sjtdd
ddfW S zTt }|t	
|||}|d rtd|d |dd|d |d dW W S W n6 ty } ztjd|  W Y d}~n
d}~0 0 zt|d|dk d}dt jdd  d}tjtjdddd}	tj|	dd tj|	|}
||
 tdd| |
d |d!W W S  ty } z<tjd"|  tdd#t| dd$fW  Y d}~W S d}~0 0 W nJ ty  } z0tjd%|  tdd&dd$fW  Y d}~S d}~0 0 dS )'ue   
    Endpoint para sintetizar texto a voz
    Usa Edge TTS como primera opción, fallback a gTTS
    textFzTexto requerido)successerrori  
voice_typemujerspeedg      ?u   El texto no puede estar vacíor   T	audio_url	file_pathzedge-tts
voice_used)r   r   r   providerr   Z
voice_namezError en Edge TTS: Nesg?)r   langslowZ	fallback_   z.mp3frontendstaticassetsaudio)exist_okz/static/assets/audio/gtts)r   r   r   r   r   zError en gTTS: u   Error en síntesis de voz: i  z)Error interno en /api/synthesize-speech: zError interno del servidor)r   jsonr   stripgetfloatasyncioget_event_looprun_until_completeedge_ttssynthesize_speech	Exceptionr   loggerr   r   uuiduuid4hexospathjoin	root_pathmakedirssavestr)datar   r   r   loopresulter   audio_filename	audio_dir
audio_path r;   +/var/www/auris/backend/routes/tts_routes.pyr'      s~    	(
 r'   )__doc__flaskr   r   r   r   backend.services.edge_ttsr   r#   r-   r*   r   r   __name__tts_bpr&   router'   r;   r;   r;   r<   <module>   s   
