
    #;h                         S r SSKJrJrJrJr  SSKJr  SSKrSSK	r	SSK
r
SSKJr  \" S\5      r\" 5       r\R!                  SS/S	9S
 5       rg)z&
Rutas para Text-to-Speech con OpenAI
    )	Blueprintrequestjsonifycurrent_app)EdgeTTSServiceN)gTTSttsz/api/synthesize-speechPOST)methodsc            	          [         R                  n U (       a  SU ;  a  [        SSS.5      S4$ U S   R                  5       nU R	                  SS5      n[        U R	                  SS	5      5      nU(       d  [        SS
S.5      S4$  [        R                  " 5       nUR                  [        R                  XU5      5      nUS   (       a*  [        SUS   UR	                  S5      SUS   US   S.5      $   [        USUS:  S9nS[         R"                  " 5       R$                  SS  S3n[&        R(                  R+                  [        R,                  SSSS5      n	[&        R.                  " U	SS9  [&        R(                  R+                  X5      n
UR1                  U
5        [        SSU 3U
S US!.5      $ ! [         a,  n[        R                  R                  SU 35         SnANSnAff = f! [         aH  n[        R                  R                  S"U 35        [        SS#[3        U5       3S.5      S$4s SnA$ SnAff = f! [         a<  n[        R                  R                  S%U 35        [        SS&S.5      S$4s SnA$ SnAff = f)'uY   
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   
voice_namezError en Edge TTS: Nesg?)r   langslow	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_paths              +/var/www/auris/backend/routes/tts_routes.pyr+   r+      s   C||vT) *   
 F|!!#XXlG4
dhhw,- 9   	@))+D,,X-G-GZ_-`aFi #!'!4!'K!8 *"("6"("6    !	Dt53;@C()9)9"1)=(>dCN[%:%:JRZ\cdIKK	D1i@JHHZ 4^4DE'"(    	@$$':1#%>??	@*  	$$qc%:; 6s1vh?   	    #LQC!PQ1
   	sy   ,I AI A-F5 5I 7B=G. 5
G+?"G&!I &G++I .
I 8=H;5I 6I ;I  I 
J	1J>J	J	)__doc__flaskr   r   r   r   backend.services.edge_ttsr   r'   r1   r.   r"   r   __name__tts_bpr*   router+        r?   <module>rH      s]    ; : 4  	   
5(	# &9H :HrG   