
    h                      l   S r SSKJrJrJrJr  SSKJr  SSKr\" S\	5      r
\" 5       rSrSr SSKJr  \" 5       rSr\
R)                  S
S/S9S 5       r\
R)                  SS/S9S 5       r\
R)                  SS/S9S 5       rg! \ a*  r\R$                  R'                  S	\ 35        Sr SrCNqSrCff = f)z&
Rutas para Text-to-Speech con OpenAI
    )	Blueprintrequestjsonifycurrent_app)EdgeTTSServiceNttsF)TextToSpeechTzTTS local no disponible: z/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       (       a   [        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R	                  SS5      (       d  [        SUS   S.5      S4$  [         (       a2  ["        (       a'   ["        R%                  XU5      n[        SUSUS.5      $ [        SSS.5      S4$ ! [         a,  n[        R                  R                  SU 35         SnAN~SnAff = f! [         aH  n[        R                  R                  SU 35        [        SS['        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)ua   
Endpoint para sintetizar texto a voz
Usa Edge TTS como primera opción, fallback a pyttsx3/gTTS
textFzTexto requeridosuccesserrori  
voice_typemujerspeed      ?u   El texto no puede estar vacíor   T	audio_url	file_pathzedge-tts
voice_used)r   r   r   providerr   
voice_namefallbackr     zError en Edge TTS: Nlocal)r   r   r   r   zError en TTS local: uk   Todos los servicios de síntesis de voz están temporalmente no disponibles. Intenta nuevamente más tarde.i  z)Error interno en /api/synthesize-speech: zError interno del servidor)r   jsonr   stripgetfloatedge_ttsis_availableasyncioget_event_looprun_until_completesynthesize_speech	Exceptionr   loggerr   local_tts_availablefallback_tts
synthesizestr)datar   r   r   loopresulte
audio_paths           2\\192.168.236.1\auris\backend\routes\tts_routes.pyr&   r&      s   J||vT) *   
 F|!!#XXlG4
dhhw,- 9      ""D--/001K1KD^c1de)$"#'%+K%8%+ZZ%<$.&,\&:&,\&:$   zz*e44"#(!'$    5 <<)44TuM
#!+ '",	     C
   	-  D""((+>qc)BCCD  ""((+?s)CD$3CF8<        #LQC!PQ1
   	s   ,H AH H  A-F )F 8H %F? 6H 
F<"F72H 7F<<H ?
H	=HHH HH 
I1IIIz/api/tts-infoGETc                  l    [         R                  5       [        SSS.SSSS.S.n [         R                  5       (       a  [         R                  5       U S	'   [	        S
U S.5      $ ! [
         aE  n[        R                  R                  SU 35        [	        S[        U5      S.5      S4s SnA$ SnAff = f)u8   Obtener información sobre los servicios TTS disponibleszVoz femeninazVoz masculina)r   hombreg      ?g      @r   )minmaxdefault)edge_tts_availablelocal_availablevoice_optionsspeed_rangeedge_tts_infoT)r   infozError en /api/tts-info: Fr   r   N)
r!   r"   r)   get_voice_infor   r'   r   r(   r   r,   )r>   r0   s     r2   get_tts_infor@   k   s    "*"7"7"92')
 
   ""$,$;$;$=D!
  	
    #;A3!?@V
   	s   A!A$ $
B3.:B.(B3.B3z/api/cleanup-audioc                  d    [         R                  (       a   [         R                  R                  SS5      OSn [        R	                  U 5        [        SSU  S3S.5      $ ! [         aE  n[        R                  R                  SU 35        [        S[        U5      S	.5      S
4s SnA$ SnAff = f)z"Limpiar archivos de audio antiguosmax_age_hours   Tu   Archivos más antiguos de z horas eliminados)r   messagezError en /api/cleanup-audio: Fr   r   N)r   r   r   r!   cleanup_old_filesr   r'   r   r(   r   r,   )rB   r0   s     r2   cleanup_audio_filesrF      s    AH(("=SU""=13M?BST
  	
    #@!DEV
   	s   AA   
B/*:B*$B/*B/)__doc__flaskr   r   r   r   backend.services.edge_ttsr   r#   __name__tts_bpr!   r*   r)   backend.models.text_to_speechr	   r'   r0   r(   warningrouter&   r@   rF        r2   <module>rQ      s    ; : 4  
5(	#    :>L
 &9O :Ob ow/ 0@ "VH5 6q   !:1#>? s   B B3	 B..B3