
    I[j                        d dl m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ej	        
                    d d           d dlmZ dZ ed          ez  Zedz  Zedz  Ze                    d	d	
           d Zedz  Zedz  Zedz  Ze                                r(e                                re                                sJ  ee          Z ej        e                                          Z ej        e                                          Ze                    d          dk    r0e                    d          d	u re                    d          ek    sJ e                    d          dk    r2e                    d          ek    re                    d          dk    sJ dZdefgZed         D ]Zd  ej         ded                   D             Z!g Z"e!D ]Z# e$e#          dk    rd  ej%        de#dd                   D             Z&e&re&d         ne#dd         '                    d           d!z   Z(e(d k    r e)d"ed#                    e"*                    e#de(         +                                           e#e(d         +                                Z# e$e#          dk    e#re"*                    e#           d ,                    e"          ed         k    sJ d$Z-d Z.e"D ]gZ#e-rI e$e-          d!z    e$e#          z   dk    r+e*                    ed#          d%e.d&e-f           e.d!z  Z.e#Z-Me-d z   e#z   +                                Z-he-r#e*                    ed#          d%e.d&e-f            e            Z/g Z0 e1e          D ]\  Z2\  Z3Z4ee2d'd%e3 d(z  Z5 ej6        e47                                          8                                Z9d)Z:e5                                r	  ej;         e<e5          d*          5 Z=e=>                                d!k    oGe=?                                d+k    o/e=@                                d,k    oe=A                                d k    Z:ddd           n# 1 swxY w Y   n	#  d)Z:Y nxY we:swe5B                    d	-           dZC eDd!d.          D ]>ZE	 e/F                    e4d/d0d	 e<e5          d1d2          ZGeGjH        re5                                s eIeGjJ        pd3           ej;         e<e5          d*          5 Z=e=>                                d!k    oGe=?                                d+k    o/e=@                                d,k    oe=A                                d k    Z:ddd           n# 1 swxY w Y   e:s eId4          dZC nG# eK$ r?ZL e<eL          ZCe5B                    d	-            ejM        eEd+z             Y dZL[L8dZL[Lww xY weCr e)d5e2 d6eC           e0*                    e2e3e9 ee5           e<e5          d7           d8e ee           e$e           e$e0          e0d9ZNed:z  O                     ejP        eNd)d+;          d<z              dee ee          d=d/d0d	 e$e           e$e0          e0ej        Q                    ejR        jS                  T                                d>ZUed?z  ZVeVO                     ejP        eUd)d+;          d<z               eW ejP        d e$e           eeV          d@                     dS )A    )PathNz/opt/OpenMontage)NgocHuyenCloneTTSgacmai_20260718_091744z(/data/video-pipeline/GacMaiAudio/project	artifactszassets/audio/chunksT)parentsexist_okc                     t          j        t          |                                                                                     S )N)hashlibsha256r   
read_bytes	hexdigest)ps    \/data/video-pipeline/GacMaiAudio/project/gacmai_20260718_091744/artifacts/scripts/run_tts.pyshar      s/    '.a!3!3!5!566@@BBB    zstory_canonical.jsonzproduction_authorization.jsonztts_projection.jsonstatuspassedtts_authorizedstory_sha256segment_count   uv   Cảm ơn các bạn đã nghe truyện từ Gác Mái Audio. Chúc các bạn có thời gian nghe truyện vui vẻ.INTROsegmentsc                 ^    g | ]*}|                                 |                                 +S  )strip).0xs     r   
<listcomp>r      s-    VVV!AGGIIVAGGIIVVVr   u   (?<=[.!?…])\s+texti  c                 6    g | ]}|                                 S r   )end)r   ms     r   r   r      s     ;;;Q;;;r   z[,;:]\s+i      zunsplittable:id _02d04dz.wavFrb   i  )
missing_ok   
doc_truyengffffff?   )r    stylespeeddenoiseoutput_pathtimeoutzprovider output missingzinvalid PCMzchunk z failed:)indexr'   text_sha256audio_sha256pathin_progress)r   r   projection_sha256planned_countcompleted_countchunksztts_manifest.partial.json)ensure_asciiindent
zNgoc-Huyen-Clone)r   
project_idr   r<   voicer2   r3   r4   r=   r>   r?   
created_atztts_manifest.json)r   r?   manifest_sha256)Xpathlibr   sysjsonr
   rewavedatetimetimer:   insert tools.audio.ngoc_huyen_clone_ttsr   PRACmkdirr   storyauth
projectionexistsSloads	read_textazprojgetintrounitssegsplit	sentencespiecesslenfinditercutsrfindcut
SystemExitappendr   joinbufnttsmanifest	enumerateidxuidr    outr   encoder   thokopenstrwgetnchannelsgetsampwidthgetframerate
getnframesunlinkerrrangeattemptexecutersuccessRuntimeErrorerror	Exceptionesleeppartial
write_textdumpsnowtimezoneutc	isoformatfinalr   printr   r   r   <module>r      s{         - - - - - - - - - - - - - - - - - - - - - - - - - - - - $ % % % > > > > > >TT"LMMaO1RST_R_PQbcdyby`az{  {B  {B  KO  Y]  {B  {^  {^  {^ B B BA&E$EtQRShQhj||~~ ?$++-- ?J,=,=,?,? ? ? ?#e**

4>>++,,R*$*Z=Q=Q=S=S2T2TT	vvh!!bff-=&>&>$&F&F266R`KaKacdKdKdKdKdxx8##(@(@!(C(CQ`HaHacfHfHfHfHf~
 3 3CVVxrx(;CKHHVVV^`W]
  QAs

;;+"+k!DSD'::;;;4D@jRVWX\Y\X\V]VcVcdgVhVhijVjC	1ff::9c$i99:::	==4C4!!!AcddGMMOO! 	As

 v}}Q#f+%%%%!
  Q SSXXaZAs""5<<CI1G1G1G1G1G0L#M#M#MaQRdaWXSVSVGAIss2T,,Q,,,S1222i&& E ENC
T#C!>!>!H!H!J!Jb	JJLL 	##c((4    FA)9)91)<  *FAQAQSTAT  *FYZYgYgYiYikpYp  *Fuv  vB  vB  vD  vD  EF  vFb  F  F  F  F  F  F  F  F  F  F  F  F  F  F  FE
 
7***$cq V VgV	kk$|D4^a^abe^f^fqtuuvvA9aCJJLLa||AG<`G`/a/a)a	33s88D	!	!  GQ!..*:*:A*=  +G!..BRBRTUBU  +GZ[ZhZhZjZjlqZq  +Gvw  wC  wC  wE  wE  FG  wGr  G  G  G  G  G  G  G  G  G  G  G  G  G  G  G/LL///CUU
UUUSSVVCJJ$J$?$?$?

7ST9@U@U@U@U@U@U@U@UU6zz53555566	6	#3Rss3xxWZWZ[^W_W_``aaa cc*oofifijofpfp  DG  DG  HP  DQ  DQ  [c  
d  
d  fg  hC  fC  eO  eO  PZ  PT  PZ  [b  pu  }~  P  P  P  @D  PD  eE  eE  eE  eEaqSSQ[__ew  AM  VZ  ei  z}  z}  ~C  zD  zD  WZ  WZ  [c  Wd  Wd  nv  DL  DU  DY  DY  Zb  Zk  Zo  Dp  Dp  Dz  Dz  D|  D|  }  }  @A  BU  @U  ~  VW  Vb  Vb  cm  cg  cm  ns  AF  NO  cP  cP  cP  QU  cU  VV  VV  VV  W\  W\  ]g  ]a  ]g  rz  DG  DG  HM  DN  DN  ad  ad  ef  ag  ag  hh  hh  ]i  ]i  Wj  Wj  Wj  Wj  Wjso   :RA!R5RR	RR		RRA,V6-A!VV6VV6!V"V66W:;4W55W: