
    m"j                        d dl Zd dlZd dlZd dlZ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  ed          ZdZ ed          Z ed          ZdZdZd	Zed
z  Zedz  Zedz  Zedz  Zedz  ZdZi dddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4Zd5 Zd6 Zd7 Zd8 Zd9 Zd: Z d; Z!d< Z"e#d=k    r e"             dS dS )>    N)PathzZ/data/video-pipeline/Youtube-Video-Maker/Project/28052026-002-Tran-Quang-Dieu-Bui-Thi-Xuanz"http://192.168.1.201:3900/generatezK/data/video-pipeline/Youtube-Video-Maker/data/voices/template1/refaudio.mp3zJ/data/video-pipeline/Youtube-Video-Maker/data/voices/template1/reftext.txt   gffffff?g?zaudio/scenesz'audio/scenes_v1_backup_before_pause_fixzlogs/step_07_tts_v2_run.logz!logs/step_07_tts_v2_manifest.jsonzscript/tts_text_manifest.jsonu  Đọc giọng kể chuyện lịch sử Việt Nam, trầm, chậm rãi, rõ chữ. Ngắt nghỉ tự nhiên sau dấu phẩy, dấu chấm phẩy, dấu hai chấm và dấu chấm. Dừng lâu hơn giữa các câu. Không đọc liền mạch, không nuốt chữ.I   IIIII   IV   V   VI   VII   VIII   IX	   X
   XI   XII   XIII   XIV   XV   XVI   XVII            )XVIIIXIXXXc                 0   t          j        d          | z   }t          j                            dd           t                              dd          5 }|                    |dz              d d d            n# 1 swxY w Y   t          |d           d S )	Nz%Y-%m-%d %H:%M:%S Tparentsexist_okautf-8encoding
)flush)timestrftimeLOGparentmkdiropenwriteprint)msglinefs      x/data/video-pipeline/Youtube-Video-Maker/Project/28052026-002-Tran-Quang-Dieu-Bui-Thi-Xuan/scripts_run_step_07_tts_v2.pylogrB      s    	+	,	,S	0DJTD111	#w	'	'@1aggd4i.@.@.@@@@@@@@@@@@@@@@	$ds   A::A>A>c                    g fd}t          j        d||           }|}t          j        dd|          }t          j        dd|          }t          j        dd|          }t          j        d	d
|                                          }||k    r                    d           |                                }||k    r                    d           |fS )Nc                 n   |                      d                                          }t                              |          }|r]                    |                      d           d|                      d           d|            |                      d           d| S |                      d          S )Nr   r   z->r    )groupupperROMANgetappend)mnumeralvalchangess      rA   replznormalize.<locals>.repl   s    

  ""IIg 	)NNaggajj>>AGGAJJ>>>>???ggajj((3(((wwqzz    u.   (?i)\b(thế\s*k[ỷỉ])\s+([IVXLCDM]{1,6})\bu   \s*[:;\-–—]\s*z, z
([.!?])\s+z\1\nz,\s+z,  z\n{2,}r4   punctuation_to_comma_pauselowercase_for_omnivoice)resubstriprJ   lower)textrO   text2beforerV   rN   s        @rA   	normalizerZ      s    G     &BD$
O
OE F
&&e
4
4E
&
/
/E
&%
'
'E
&D%
(
(
.
.
0
0Ef}}gnn%ABBB KKMME~~0111'>rP   c                    dt          j                    j        z   }g }|                                 D ]6\  }}|                    d| d| d| d                                           7|                                D ]\  }}t          |          }t          j        t          |                    d         pd}|                    d| d| d|j
         d	| d
	                                |                                z   dz              |                    d| d                                           |d                    |          fS )Nz----OmniVoiceBoundaryz--z(
Content-Disposition: form-data; name="z"

z
r   zapplication/octet-streamz"; filename="z"
Content-Type: z

s   
z--
rP   )uuiduuid4hexitemsrJ   encoder   	mimetypes
guess_typestrname
read_bytesjoin)	fieldsfilesbchunkskvpathpmimes	            rA   	multipartrp   5   s   djll..AF||~~ f f![1[[[[TU[[[bbddeeee++-- c c$
t**9/A77:X>Xd  B1  B  B  B  BXYX^  B  Bsw  B  B  B  I  I  K  K  LM  LX  LX  LZ  LZ  Z  [b  b  	c  	c  	c  	c
MM.q...''))***SXXfrP   c                     t          |                                           d d         }|                    d          rd|d d         v rdndS )Nr#   s   RIFFs   WAVEr   wavunknown)r   re   
startswith)rm   datas     rA   	probe_fmtrv   @   sO    	d			 	 "	%DOOG,,TD"I1E1E559TrP   c                     	 t          j        dddddddt          |           gdd	
          }t          |                                          S # t
          $ r Y d S w xY w)Nffprobe-verrorz-show_entrieszformat=durationz-ofzdefault=nw=1:nk=1Tr   )rW   timeout)
subprocesscheck_outputrc   floatrU   	Exception)rm   outs     rA   durationr   D   s    #YtGOL]^cdwx{  }A  yB  yB  %C  JN  XZ  [  [  [SYY[[!!!   tts   AA 
AAc                 >   t           dk    rt          dk    rd S |                     d          }t          j        dddddt          |           dd	t           d
t          t           dz             dt          |          g	d           |                    |            d S )Nr   z.padded.tmp.wavffmpegz-yry   rz   z-iz-afzapad=pad_dur=z,adelay=i  z:all=1<   r{   )LEADING_SILENCE_SECTRAILING_SILENCE_SECwith_suffixr|   
check_callrc   intreplace)rm   tmps     rA   add_edge_silencer   K   s    a$8A$=$=


,
-
-C$gtSYYd3ddSATW[A[=\=\dddC 	   
 KKrP   c                    | d         }t           | dz  }t                                          rt                              d          nd}| d         d|dd	d
dd}dt          i}d }t          dd          D ]}	 t          ||          \  }}	t          j        	                    t          |	dd|z   id          }
t          j                            |
d          5 }|                                }|j                            dd          }d d d            n# 1 swxY w Y   |                    d          }|                    |           t#          |          dk    rt%          d| d|d d                   |                    |           t)          |           |d|t+          |          |                                j        t1          |          t2          t4          | d         d	c S # t6          $ rI}t+          |          }t9          d| d| d |            t;          j        d!|z             Y d }~d }~ww xY w|d"|t+          |          d#S )$Nscene_id.wavr1   r2    tts_textviz0.8816z2.0	broadcast)rW   languageref_textspeednum_stepguidance_scaleeffect_preset	ref_audior   r   zContent-Typezmultipart/form-data; boundary=POST)ru   headersmethodi,  r   z.tmprr   zunexpected format ct=z first=r   oknormalization)	r   statusattemptoutputbytesr   leading_silence_sectrailing_silence_secr   zERROR z	 attempt=rE   r   failed)r   r   rz   r   )	AUDIO_DIRREF_TEXTexists	read_text	REF_AUDIOrangerp   urllibrequestRequestENDPOINTurlopenreadr   rI   r   write_bytesrv   RuntimeErrorr   r   rc   statst_sizer   r   r   r   rB   r6   sleep)itemsidr   r   rg   rh   lastr   ri   bodyreqrblobctr   es                   rA   generater   V   s   ZCi34#5=__5F5FNX111BH 
#txPVbfx}  OZ  [  [Fy
!E	D1:: ] ]	]VU++FAd&&xT>RrstRtBu  ~D&  E  EC''S'99 CQVVXX!)--r"B"BrC C C C C C C C C C C C C C C''C)>)>)>~~u$$L9iQS9i9i\`adbdad\e9i9i,j,j&jKKS!!!"D7CPSHH]`]e]e]g]g]o  |D  EH  |I  |I  `s  K_  pt  uD  pE  F  F  F  F  F 	] 	] 	]QDDcDDGDDdDDEEEtzRST[R[G\G\G\G\G\G\G\G\	]HT3s88LLLs>   ;A!G00DG0D	G0D	 CG00
I:>H>>Ic                     t          j        t          dz                      d                    d         } t                              dd           t                                          s]t          t          	                    d                    r6t          j        t          t                     t          dt                      g }| D ]_}t          |d	                   \  }}|                    |d
         |d	         ||t          t          |d
          dz            d           `t                               t          j        t          j        g dt(          dt*          t,          |ddd          d           t          dt/          |           dt0                      g }t2          j                            t0                    5 fd|D             }t2          j                            |          D ]x}|                                }|                    |           t          |d          d|d
          d|                    dd           d|                    d                      y	 d d d            n# 1 swxY w Y   d |D             }	t          j        dd|	sd nd!t/          |          t/          |          t/          |	          z
  |	t?          d" |D                       tA          |d# $          d%	}
tB                              t          j        |
dd          d           t          d&t          j        |
d         |
d'         tE          |
d(         d)z  d          d*d+          z              d S ),Nzscript/scenes.jsonr1   r2   scenesTr-   zscene_*.wavzBACKUP 	narrationr   r   )r   r   r   r   r   )roman_century_to_numberpause_punctuationedge_silence_paddingg)\(?)
project_idrulesinstructr   r   r   r_   Fr   )ensure_asciiindentzSTART v2 total=z	 workers=)max_workersc                 F    g | ]}                     t          |          S  )submitr   ).0itexs     rA   
<listcomp>zmain.<locals>.<listcomp>{   s'    555bii$$555rP   r   rE   r   r   z dur=r   c                 *    g | ]}|d          dk    |S )r   r   r   r   r   s     rA   r   zmain.<locals>.<listcomp>~   s&    888!!H+x"7"7A"7"7"7rP   r   v2_pause_roman_fix	completedpartial_failedc              3   D   K   | ]}|                     d           pdV  dS )r   r   N)rI   r   s     rA   	<genexpr>zmain.<locals>.<genexpr>   s}        nY  nY  LM  pq  pu  pu  v@  pA  pA  pF  EF  nY  nY  nY  nY  nY  nYrP   c                     | d         S )Nr   r   )xs    rA   <lambda>zmain.<locals>.<lambda>   s      @A  BL  @M rP   )key)	r   stepversionr   total_scenesdoner   total_duration_secondsresultszDONE r   r   r   )r   r   duration_min)r   )#jsonloadsPROJECTr   r   r:   
BACKUP_DIRr   anyglobshutilcopytreerB   rZ   rJ   rc   TEXT_MANIFEST
write_textdumpsrd   INSTRUCTr   r   lenWORKERS
concurrentfuturesThreadPoolExecutoras_completedresultrI   sumsortedMANIFESTround)r   r_   sttsrN   r   futsfutr   r   manifestr   s              @rA   mainr  m   s   :w33>>>PPQQRZ[FOOD4O000 $3y~~m'D'D#E#E $	:..."j""###
E b bq~..W:1[>UXipz}  H  LM  NX  LY  I_  I_  I_  _  {`  {`  a  a  	b  	b  	b  	bTZgl  LR  LR  LR  ^f  os  J]  uI  RW  )X  )X  fk  st  u  u  u  F  G  G  G8#e**88w88999G			.	.7	.	C	C @r5555u555%22488 	@ 	@CjjllAGNN1---sak3~3~AjM3~3~TUTYTYZabcTdTd3~3~klkpkpq{k|k|3~3~////	@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 98w888F"<q;Olr  ZIYdYd  yI  Y\  ]b  Yc  Yc  kn  ot  ku  ku  vy  z@  vA  vA  kA  KQ  kn  nY  nY  QX  nY  nY  nY  kY  kY  dj  kr  wM  wM  dN  dN  dN  O  OH
8aHHHRYZZZ
Xh%7x?O_dem  oG  fH  IK  fK  LM  `N  `N  O  O  ]b  c  c  c  	c  d  d  d  d  ds   B'JJJ__main__)$concurrent.futuresr   r   ra   rS   r   r6   r\   urllib.requestr   r|   pathlibr   r   r   r   r   r   r   r   r   r   r8   r   r   r   rH   rB   rZ   rp   rv   r   r   r   r  __name__r   rP   rA   <module>r     s   ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^      ijj	-
$\
]
]		Z	[	[	  
.
 	<<
))	4	455a ks1  kT!  kE!  kD  k3q  ka  ka  kq  ka  kB  ktTV  kW\]_  k`fgi  kjopr  kswxz  k  |A  BD  k  EK  LN  k  WY  `b  hj  k  k  k    2	 	 	U U U  	 	 	M M M.d d d* ZrP   