
    kiD                         S SK r S SKrS SKrS SKrS SKrS SKJrJr  S SK	J
r
Jr  S SKJr  S SKJr  S SKJrJrJr  S SKrS SKJr  S SKJr  S	\S
\S\4S jrSS jrg)    N)Image	ImageDraw)AudioFileClip	VideoClip)FileResponse)AudioSegment)DAvatarDStyleDFormat)tts_service)remove_filepromptoutput_pathreturnc                 b  ^^#     [        [        R                  U S9mUU4S jn[        R                  R                  U5      I S h  vN nU(       a4  [        R                  R                  T5      (       a  [        SU  S35        gg N@! [         a  n[        SU 35         S nAgS nAff = f7f)N)styleseedc                    > TR                   R                  SS5      S-   n [        R                  " U 5      nUR                  S:X  a1  [        TS5       nUR                  UR                  5        S S S 5        gg! , (       d  f       g= f)Nz/svg?z/png?z4&mouth=serious&size=1024&backgroundColor=transparent   wbTF)url_svgreplacerequestsgetstatus_codeopenwritecontent)urlresponsefavr   s      CD:\Projects\GLMA\whisper_new\whisper_new\services\avatar_service.py_fetch_and_save.generate_avatar_image.<locals>._fetch_and_save   sp    **$$Wg69ooC||C(H##s*+t,GGH,,- - -,s   A99
Bz6SUCCESS: Avatar image generated using DiceBear (seed: )TFzDiceBear Generation Error: )r	   r
   	avataaarsanyio	to_threadrun_syncospathexistsprint	Exception)r   r   r$   successer"   s    `   @r#   generate_avatar_imager2      s     ""

	 00AArww~~k22J6(RSTU B  +A3/0sA   B/AB
 B>B
 B/B
 

B,B'"B/'B,,B/c                   ^#^$^%^&^'^(^)^*^+^,^-#    [        [        R                  " 5       5      nSU S3n	S n
/ n [        XX#XEUSS9I S h  vN u  pUR	                  U5        UR                  U
5        SU S3nUR                  U5        U(       a%  UR                  5       (       a  UR                  5       OSn[        X5      I S h  vN nU(       a  UnOSn[        R                  R                  U5      (       d'  [        R                  " S	S
SS9nUR                  U5        [        R                  " U5      R                  S	5      m#T#R                   u  nnT#R#                  S5      m$[%        US-  5      m)[%        US-  5      m*[%        US-  5      m+ T#R'                  T)T*S-
  45      n[)        U5      S:  a
  / US S QSP7n[+        SUS   S-
  5      [+        SUS   S-
  5      [+        SUS   S-
  5      S4m(Sm'U#U$U'U(U)U*U+4S jn/ m&[-        S5       H  nT&R                  U" US-  5      5        M     [.        R0                  " U
5      nUR2                  nSm%[+        S[%        UT%-  5      5      n[+        S[%        [)        U5      U-  5      5      n/ m-[-        U5       H0  nUU-  nUS-   U-  nUUU nT-R                  UR4                  5        M2     T-(       a  [+        T-5      S:  a  [+        T-5      OSm,U%U&U,U-4S  jn[7        UUS!9n[9        U
5      n UR;                  U 5      nUR=                  U	T%S"S#S S$9  UR?                  5         U R?                  5         U RA                  [B        U	5        U H  n!U RA                  [B        U!5        M     [E        U	S%S&S'9$  GNL GN!   Sn GN= f! [F         a  n"[I        S(U" 35        [        R                  R                  U	5      (       a  [        RJ                  " U	5        U H?  n![        R                  R                  U!5      (       d  M)  [        RJ                  " U!5        MA     S)[        U"5      0s S n"A"$ S n"A"ff = f7f)*Navatar_z.mp4T)return_path
temp_base_z.pngz<charismatic young businessman with modern hairstyle and suitzavatar_base.pngRGBA)   r8   r   r   r   r   )colorAg      ?g?gQ?(   )                  r@   r      <      2   )r<   
   rG   r@   c                 @  > T	R                  5       R                  S5      n[        R                  " SUR                  S5      n[
        R                  " U5      n[        TSU S-  -   -  5      n[        SU -  5      nTUS-  -
  TTUS-  -   TU-   /nU S:  a?  UR                  USS	TS
9  U S:  a'  UR                  TUS-  -
  TS-   TUS-  -   TS-   /SSS9  UR                  TUS-  -
  T4TUS-  -   T4/TSS9  U S:  a  UR                  USS	TSS9  [        R                  " SUR                  S5      nUR                  S5      nUR                  UT
S9  UR                  U5        [        R                  " X5      n[        R                   " UR                  S5      5      $ )Nr7   r9   g?g?#   rE   g?r      )fill皙?rB      )r@   r@   r@   r   )rK   widthrA   Lr;   )maskRGB)copyconvertr   newsizer   Drawintpieslicelinearc
getchannelpasteputalphaalpha_compositenparray)
open_ratioframeoverlaydrawm_width_dynamiccurrent_open_h
mouth_rectcombined_maskoverlay_alphabase_img	face_maskinner_mouth_color	lip_color
m_center_x
m_center_ym_widths            r#   create_pro_frame(avatar_service.<locals>.create_pro_frameb   s   MMO++F3Eii

LAG>>'*D!'SJ4D-E"FGO j1N _11_11^+	J D j!S7HI#II"_%99:>"_%99:> 1  ;
 IIo22J?o22J? Q  (
 A~Q)1E!IIc5::q9M#..s3MI>]+))%9E88EMM%011    rM   g      @   c                    > [        U T-  5      nU[        T5      :  a  TS   $ TU   T-  nUS:  a  TS   $ US:  a  TS   $ US:  a  TS   $ US:  a  TS	   $ TS   $ )
Nr   g?rA   g333333?rB   rL   rE   g?rC   )rW   len)t	frame_idx	vol_ratiofpsframesmax_volvolumess      r#   
make_frame"avatar_service.<locals>.make_frame   s    AGICL(ay 	*W4I3vay 03vay 03vay 03vay 0!9rs   )durationlibx264aac)rz   codecaudio_codecloggerz	video/mp4z
avatar.mp4)r,   
media_typefilenamezAvatar Service Error: error)&struuiduuid4r   extendappendstripr2   r+   r,   r-   r   rT   saver   rS   rU   r[   rW   getpixelrv   maxranger   	from_fileduration_secondsrmsr   r   
with_audiowrite_videofilecloseadd_taskr   r   r/   r.   remove).background_taskstextvoiceratepitchvolumetashkeelavatar_promptfile_id
video_path
audio_path
temp_filesextra_tempsgenerated_img_patheffective_promptr0   base_img_pathimgwh
skin_colorrq   i	audio_segr   frame_count
chunk_sizestartendchunkr~   clip
audio_clipr!   r1   rj   rk   rz   r{   rl   rm   rn   ro   rp   r|   r}   s.                                      @@@@@@@@@@@r#   avatar_servicer   /   s    $**,G7)4(JJJL!(3EVZ)
 #

 	+&*%  *'$7,- 6C}GZGZG\G\=..0  db-.>SS.M-Mww~~m,,))FLECHH]#::m,44V<}}1'',	 S\
T]
a$h-	.!**J
R+HIJ z?Q-Cz"1~-Cs-C
JqMB./Q
18J1KSQRT^_`TadfTfMgilm	-%	2 %	2P qAMM*1s734  !**:6	--!SC01CI <=>
{#A
NEq5J&CeC(ENN599%	 $ #*c'lQ.>#g,A		 		 h7":.
z*ZS	u]ab

 	!!+z:A%%k15  l[[C#
 T,	.-J~  !&qc*+77>>*%%IIj!Aww~~a  		!  Q  !sz   )QN# NA;N# NC
N# N %G-N# QN# N# N N# #
Q-A/Q &QQQQQ)N)r+   r   ior(   numpyr_   PILr   r   moviepyr   r   fastapi.responsesr   pydubr   dicebearr	   r
   r   r   services.tts_servicer   utilsr   r   boolr2   r    rs   r#   <module>r      sO    	  	     , *  - -  ,  # $ :R!rs   