
    w"i                     ,   d dl Z d dlZd dlmZmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZ  e             d dlmZ d dlmZ d dlmZ d d	lmZmZ  ed
          Ze                    e	dgddgdg            e j        dd          Zdae                    d          d             Ze                    d          d             Ze                     d           ed           ed           ed           ed           ed           ed          fdede!de!de!de!de!de"fd             Z#e                     d!           ed          fd"efd#            Z$e                     d$           ed           ed           ed           ed           ed           ed           ed          fdede!de!de!de!de!de"d%e!fd&            Z%e                    d'          d(             Z&e                     d)           ed           ed          fded*ed+efd,            Z'e                    d-          d.e!fd/            Z(e)d0k    rDd dl*Z* e j        d1d2          Z+ e, e j        d3d4                    Z- e*j.        ee+e-5           dS dS )6    N)FastAPIFile
UploadFileFormBackgroundTasks)CORSMiddleware)WhisperModel)load_dotenvtts_service)transcription_serviceavatar_service)create_video_jobget_video_jobzGLMA Optimized Media API)title*T)allow_originsallow_credentialsallow_methodsallow_headersWHISPER_MODEL_SIZEsmallstartupc                  :  K   t          d           t          dt           d           t          d           	 t          t          dddd	          at          d
           n)# t          $ r} t          d|             Y d } ~ nd } ~ ww xY wt          d           d S )Nz3
==================================================zLOADING WHISPER MODEL (z)... PLEASE WAITz2==================================================cpuint8      )devicecompute_typecpu_threadsnum_workersz(SUCCESS: Whisper model loaded and ready!zERROR loading model: z3==================================================
)print
MODEL_SIZEr	   model	Exception)es    "/var/www/html/speakWrite/server.pystartup_eventr*       s       
-	
@J
@
@
@AAA	&MMM+
 
 
 	89999 + + +)a))********+	-s   (A# #
B	-BB	/c                     K   dddS )NonlinezAPI is running successfully.)statusmessage r0       r)   rootr2   4   s      +IJJJr1   z/speak/.AutoFbackground_taskstextvoiceratepitchvolumetashkeelc           	      <   K   t          | ||||||           d {V S Nr   )r4   r5   r6   r7   r8   r9   r:   s          r)   text_to_speechr=   8   s6       -tUD%QYZZZZZZZZZr1   z/transcribe/filec                 <   K   t          | t                     d {V S r<   )r   r&   )r>   s    r)   transcribe_audior@   D   s(      &tU333333333r1   z/generate_avatar/avatar_promptc           
      >   K   t          | |||||||           d {V S r<   r   )r4   r5   r6   r7   r8   r9   r:   rA   s           r)   generate_avatarrC   H   s9         0$tUFT\^klllllllllr1   z/available_voices/c                  j   K   t          j                     d {V } t          d | D                       S )Nc                     g | ]
}|d          S )	ShortNamer0   ).0vs     r)   
<listcomp>z(get_available_voices.<locals>.<listcomp>X   s    222a1[>222r1   )edge_ttslist_voicessorted)voicess    r)   get_available_voicesrN   U   sC      '))))))))F226222333r1   z/video/create/imageaudioc                 4   K   t          | ||           d {V S r<   )r   )r4   rO   rP   s      r)   create_videorR   Z   s-       ""2E5AAAAAAAAAr1   z/video/{job_id}job_idc                 0   K   t          |            d {V S r<   )r   )rS   s    r)   video_statusrU   c   s&      v&&&&&&&&&r1   __main__APP_HOSTz0.0.0.0APP_PORTi  )hostport)/osrJ   fastapir   r   r   r   r   fastapi.middleware.corsr   faster_whisperr	   dotenvr
   services.tts_servicer   services.transcription_servicer   services.avatar_servicer   *services.infinite_video_generation_servicer   r   appadd_middlewaregetenvr%   r&   on_eventr*   getr2   poststrboolr=   r@   rC   rN   rR   rU   __name__uvicornrY   intrZ   runr0   r1   r)   <module>rp      s   				  D D D D D D D D D D D D D D 2 2 2 2 2 2 ' ' ' ' ' '        - , , , , , @ @ @ @ @ @ 2 2 2 2 2 2 V V V V V V V Vg.///   %%%     RY+W55
i  & K K K ) S		fVf$v,,T%[[	[ 	[%	[
	[ 	[ 		[
 	[ 	[ 	[ 	[ 	[ 	[ ..2d3ii 4 4 4 4 4 4 
 S		fVf$v,,T%[[d
m 
m%
m

m 
m 	
m
 
m 
m 
m 
m 
m 
m 
m 	4 4 4 
 S		S		B B%BB B B B B 	's ' ' ' ' zNNN29Z++D3yryT**++DGK$T******	 r1   