
    miD                         d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZmZmZ d dlZd dlmZ d dlmZ d	ed
edefdZddZdS )    N)Image	ImageDraw)AudioFileClip	VideoClip)FileResponse)AudioSegment)DAvatarDStyleDFormat)tts_service)remove_filepromptoutput_pathreturnc                 \  K   	 t          t          j        |           fd}t          j                            |           d {V }|r4t          j                                      rt          d|  d           dS dS # t          $ r}t          d|            Y d }~dS d }~ww xY w)N)styleseedc                  
   j                             dd          dz   } t          j        |           }|j        dk    rDt          d          5 }|                    |j                   d d d            n# 1 swxY w Y   dS dS )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      3/var/www/html/speakWrite/services/avatar_service.py_fetch_and_savez.generate_avatar_image.<locals>._fetch_and_save   s    *$$Wg669ooC|C((H#s**+t,, .GGH,---. . . . . . . . . . . . . . .t5s   A66A:=A: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_imager1      s      "
 
 

	 	 	 	 	 	 00AAAAAAAA 	rw~~k22 	T6TTTUUU4u   /A//000uuuuus   A:B 
B+B&&B+c           
      	  #$%&'()*+,-K   t          t          j                              }d| d}	d }
g }	 t          | ||||||d           d {V \  }
}|                    |           |                    |
           d| d}|                    |           |r(|                                r|                                nd}t          ||           d {V }|r|}nd}t          j	        
                    |          s,t          j        d	d
d          }|                    |           t          j        |                              d	          ##j        \  }}#                    d          $t%          |dz            )t%          |dz            *t%          |dz            +	 #                    )*dz
  f          }n	#  d}Y nxY wt)          |          dk     rg |d d         dR }t+          d|d         dz
            t+          d|d         dz
            t+          d|d         dz
            df(d'#$'()*+fd}g &t-          d          D ]#}&                     ||dz                       $t/          j        |
          }|j        }d%t+          dt%          |%z                      }t+          dt%          t)          |          |z                      }g -t-          |          D ]3}||z  }|dz   |z  }|||         }-                    |j                   4-r"t+          -          dk    rt+          -          nd,%&,-fd }t7          ||!          }t9          |
          } |                    |           }|                    |	%d"d#d $           |                                 |                                  |                      tB          |	           |D ]}!|                      tB          |!           tE          |	d%d&'          S # tF          $ r}"tI          d(|"            t          j	        
                    |	          rt          j%        |	           |D ]5}!t          j	        
                    |!          rt          j%        |!           6d)t          |"          icY d }"~"S d }"~"ww xY w)*Navatar_z.mp4T)return_path
temp_base_z.pngz<charismatic young businessman with modern hairstyle and suitzavatar_base.pngRGBA)   r7   r   r   r   r   )colorAg      ?g?gQ?(   )                  r?   r      <      2   )r;   
   rF   r?   c                    	                                                     d          }t          j        d|j        d          }t          j        |          }t          d| dz  z   z            }t          d| z            }|dz  z
  |dz  z   |z   g}| dk    rM|                    |dd	
           | dk    r.|	                    |dz  z
  dz   |dz  z   dz   gdd           |	                    |dz  z
  f|dz  z   fgd           | dk    r|
                    |dd	d           t          j        d|j        d          }|                    d          }|                    |
           |                    |           t          j        ||          }t          j        |                    d                    S )Nr6   r8   g?g?#   rD   g?r      )fill皙?rA      )r?   r?   r?   r   )rJ   widthr@   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_framez(avatar_service.<locals>.create_pro_frameb   s   MMOO++F33Ei
LAAG>'**D!'SJ4D-E"FGGO j11N _11_11^+	J D  j!S7HIII##II"_%99:>"_%99:> 1  ; ; ;
 IIo22J?o22J? Q  ( ( (
 A~~Q)1EEE!Ic5:q99M#..s33MI>>>]+++)%99E8EMM%00111    rL   g      @   c                     t          | z            }|t                    k    rd         S |         z  }|dk    rd         S |dk    rd         S |dk    rd         S |dk    rd	         S d         S )
Nr   g?r@   g333333?rA   rK   rD   g?rB   )rV   len)t	frame_idx	vol_ratiofpsframesmax_volvolumess      r#   
make_framez"avatar_service.<locals>.make_frame   s    AGICLL((ay 	*W4I3vay 03vay 03vay 03vay 0!9rq   )durationlibx264aac)rx   codecaudio_codecloggerz	video/mp4z
avatar.mp4)r+   
media_typefilenamezAvatar Service Error: error)&struuiduuid4r   extendappendstripr1   r*   r+   r,   r   rS   saver   rR   rT   rZ   rV   getpixelrt   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_promptr/   base_img_pathimgwh
skin_colorrp   i	audio_segr}   frame_count
chunk_sizestartendchunkr|   clip
audio_clipr!   r0   ri   rj   rx   ry   rk   rl   rm   rn   ro   rz   r{   s.                                      @@@@@@@@@@@r#   avatar_servicer   /   s     $*,,G(7(((JJJL!(3dE4VZ)
 )
 )
 #
 #
 #
 #
 #
 #

K 	+&&&*%%% 8'777,--- 6C  b}GZGZG\G\  b=..000  db-.>@RSSSSSSSS 	..MM-Mw~~m,, 	$)FLEEECHH]###:m,,44V<<}1'',,	 S\\
T]]
a$h--	.!**J
R+HIIJJ	.-JJJz??Q-Cz"1"~-Cs-C-C
JqMB.//Q
18J1K1KSQRT^_`TadfTfMgMgilm	-%	2 %	2 %	2 %	2 %	2 %	2 %	2 %	2 %	2 %	2 %	2P q 	5 	5AMM**1s7334444 !*:66	-!SC0011CI <==>>
{## 	& 	&A
NEq5J&CeCi(ENN59%%%%")Ec'llQ.>.>#g,,,A		 		 		 		 		 		 		 		 h777":..
z**ZS	u]abbb

 	!!+z::: 	6 	6A%%k15555l[[[[ ! ! !*q**+++7>>*%% 	"Ij!!! 	 	Aw~~a   	!Q       !s8   E5P# /G
 	P# 
GIP# #
S-BS :S S)N)r*   r   ior'   numpyr^   PILr   r   moviepyr   r   fastapi.responsesr   pydubr   dicebearr	   r
   r   r   services.tts_servicer   utilsr   r   boolr1   r    rq   r#   <module>r      s!   				  				                      , , , , , , , , * * * * * *       - - - - - - - - - -  , , , , , ,       # $    :R! R! R! R! R! R!rq   