
    #hP                     H    S r SSKrSSKrSSKrSSKrSSKJr   " S S5      rg)uK   
Edge TTS Service
Servicio para síntesis de voz usando Microsoft Edge TTS
    N)datetimec                   >    \ rS rSrSrS rS rS
S jrS rSS jr	Sr
g	)EdgeTTSService   u.   Servicio para síntesis de voz usando Edge TTSc           	      B   [         R                  R                  [         R                  R                  [         R                  R	                  [
        5      5      SSSSSS5      U l        [         R                  " U R                  SS9  SS	S
.U l        / SQ/ SQS
.U l	        g )Nz..frontendstaticassetsaudioT)exist_okes-ES-ElviraNeuralzes-ES-AlvaroNeural)mujerhombre)zes-MX-DaliaNeuralzes-AR-ElenaNeuralzes-CO-SalomeNeural)zes-MX-JorgeNeuralzes-AR-TomasNeuralzes-CO-GonzaloNeural)
ospathjoindirnameabspath__file__	audio_dirmakedirsvoice_mappingalternative_voicesselfs    <D:\NESTOR\Documents\Tesis\auris\backend\services\edge_tts.py__init__EdgeTTSService.__init__   s    bggoobggooh6O&PRVX\^hjrt|  F  G
DNNT2 **
 VW#
    c                     g)u)   Verificar si el servicio está disponibleT r   s    r   is_availableEdgeTTSService.is_available   s    r   c                 b  #     U R                   R                  US5      n[        US-
  S-  5      nUS:  a  SU S3nOUS:  a  U S3nOSnS[        R                  " 5       R
                  S	S
  S[        [        R                  " 5       R                  5       5       S3n[        R                  R                  U R                  U5      n[        R                  " XUS9n	U	R                  U5      I S	h  vN   SU 3n
SU
UUSS.$  N! [          a  nSS[#        U5       3SS.s S	nA$ S	nAff = f7f)u  
Sintetizar texto a voz usando Edge TTS

Args:
    text (str): Texto a sintetizar
    voice_type (str): Tipo de voz ('mujer' o 'hombre')
    speed (float): Velocidad de reproducción (0.5 - 2.0)
    
Returns:
    dict: Resultado con la URL del archivo de audio o error
r      d   r   +%z+0%	edge_tts_N   _.mp3)ratez/static/assets/audio/Tzedge-tts)success	audio_url	file_path
voice_usedproviderFzError en Edge TTS: )r.   errorfallback)r   getintuuiduuid4hexr   now	timestampr   r   r   r   edge_ttsCommunicatesave	Exceptionstr)r   text
voice_typespeedvoicespeed_percentr-   filenamer0   communicater/   es               r   synthesize_speech EdgeTTSService.synthesize_speech#   sF    '	&&**:7KLE  c 12Mq =/+"'* #4::<#3#3BQ#7"8#hlln>V>V>X:Y9ZZ^_HT^^X>I #..tFK ""9--- 0z:I  &&#&  .  	 .s1vh7  	sG   D/C.D 2D3D D/D 
D,D'!D,"D/'D,,D/c                     [        U R                  R                  5       5      U R                  R                  5        VVs/ s H  o  H  o"PM     M     snn-   U R                  U R                  SS/S.$ s  snnf )u0   Obtener información sobre las voces disponiblesg      ?g       @)available_voicesr   r   speed_range)listr   valuesr   )r   voicesvs      r   get_voice_infoEdgeTTSService.get_voice_infoX   su     !%T%7%7%>%>%@ A/3/F/F/M/M/O`/OVY_TUqY_q/O`!a!//"&"9"9:
 	
`s    A5c                     SSK nUR                  5       nUS-  n[        R                  " U R                  5       H  nUR	                  S5      (       d  M  UR                  S5      (       d  M3  [        R                  R                  U R                  U5      nU[        R                  R                  U5      -
  nXt:  d  M  [        R                  " U5        [        SU 35        M     g! [         a  n[        SU 35         SnAgSnAff = f)z"Limpiar archivos de audio antiguosr   Ni  r)   r,   zArchivo eliminado: zError limpiando archivos: )timer   listdirr   
startswithendswithr   r   getctimeremoveprintr?   )	r   max_age_hoursrU   current_timemax_age_secondsrF   r0   file_agerH   s	            r   cleanup_old_files EdgeTTSService.cleanup_old_filesb   s    	499;L+d2OJJt~~6&&{338I8I&8Q8Q "T^^X FI+bgg.>.>y.IIH1		), 3H:>? 7  	4.qc233	4s+   AC* C* .AC* (C* *
D4DD)r   r   r   N)r   g      ?)   )__name__
__module____qualname____firstlineno____doc__r   r"   rI   rR   r`   __static_attributes__r!   r   r   r   r      s    8
 3j
4r   r   )rg   r   r7   asyncior<   r   r   r!   r   r   <module>rj      s'   
 
    g4 g4r   