
    7q]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d dl	Z	d dl
Zd dlZd dlmZ  ee                                          j        d         Zedz  ZdZd'dZd(dZd)dZd*dZd+dZd,dZd-dZedk    r	  ej         e                       dS # e$ rZdd e e          j         d e ej        !                    ej"        j#                  $                                d!Z%	  ej&        e'                    d"#                    Z( e ee(d$          e%           n# e$ r Y nw xY w e) ej*        e%d%          ej+        &            ej        d           Y dZ[dS dZ[ww xY wdS ).    )annotationsN)Path   zscript/project-manifest.jsonz0http://192.168.40.32:7861/voice/ngoc-huyen-clonepathr   returnstrc                   t          j                    }|                     d          5 t          fdd          D ]}|                    |           	 d d d            n# 1 swxY w Y   |                                S )Nrbc                 .                          d          S )Ni   )read)handles   script/run-voice-test.py<lambda>zsha256.<locals>.<lambda>   s    &++o">">     r   )hashlibsha256openiterupdate	hexdigest)r   digestchunkr   s      @r   r   r      s    ^F	4 !F>>>>DD 	! 	!EMM%    	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! s   ,A##A'*A'manifestdictkeyc                   |                      d          pi                      |          }t          |t                    r|st          d| d          t	          |          }|                                s
t          |z  }	 |                                                    t                                                     n%# t          $ r}t          d|           |d }~ww xY w|S )Nactive_pathszactive_paths.z is missingzactive path escapes project: )
get
isinstancer   RuntimeErrorr   is_absoluteROOTresolverelative_to
ValueError)r   r   valuer   excs        r   resolve_activer(      s    \\.))/R44S99EeS!! = =;3;;;<<<;;D d{K""4<<>>2222 K K K@3@@AAsJKKs   >C 
C$CC$databytesNonec                   | j                             dd           t          j        d| j         d| j                   \  }}	 t          j        |d          5 }|                    |           |                                 t          j	        |
                                           d d d            n# 1 swxY w Y   t          j        ||            t
          j                            |          rt          j        |           d S d S # t
          j                            |          rt          j        |           w w xY w)NTparentsexist_ok.)prefixdirwb)parentmkdirtempfilemkstempnameosfdopenwriteflushfsyncfilenoreplacer   existsunlink)r   r)   fdr8   r   s        r   atomic_writerC   +   sX   KdT222'749'7'7'7T[IIIHBYr4   	&FLLLLNNNHV]]__%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	
47>>$ 	IdOOOOO	 	27>>$ 	IdOOOO	s1   D AB6*D 6B::D =B:>D 6Er&   c                |    t          | t          j        |dd          dz                       d                     d S )NF   )ensure_asciiindent
utf-8)rC   jsondumpsencode)r   r&   s     r   atomic_jsonrM   9   s=    
5uQGGG$NVVW^__`````r   textc                   d |                      d          D             }g }d}|D ]C}|                    |           |t          |                                           z  }|dk    r nDd                    |          dz   }t          |                                           }d|cxk    rdk    sn t	          d|           |S )	Nc                ^    g | ]*}|                                 |                                 +S  )strip.0r&   s     r   
<listcomp>zmake_sample.<locals>.<listcomp>>   s-    QQQE5;;==Q%++--QQQr   z

r   X  rH   i  i   z#sample word count outside 500-800: )splitappendlenjoinr    )rN   
paragraphschosencount	paragraphsamplewordss          r   make_samplera   =   s    QQTZZ-?-?QQQJFE  	i   Y__&&'''C<<E [[  4'FE%3HHHIIIMr   objectbytes | Nonec                N   t          | t                    rdD ]}|                     |          }t          |t                    r|                    d          r|                    dd          d         n|}	 t          j        |d          }n# t          $ r d}Y nw xY w|                    d	          r|d
d         dk    r|c S | 	                                D ]}t          |          }|r|c S n/t          | t                    r| D ]}t          |          }|r|c S d S )N)audio_base64base64audior)   zdata:,r   T)validater      RIFF         WAVE)r   r   r   r   
startswithrW   rf   	b64decode	Exceptionvalues
find_audiolist)r&   r   itemrawdecodedfounds         r   rs   rs   M   sn   % > 		# 		#C99S>>D$$$ #040H0HRdjja((,,d"$.sTBBBGG  " " "!GGG"%%g.. #71R4=G3K3K"NNNLLNN 	 	Dt$$E 	 
E4	 	   	 	Dt$$E 4s   8BBBintc                 D   t          j        t                              d                    } t	          | d          }t	          | d          }t	          | d          }t	          | d          }|j        }|dz  }|dz  }|                    d	d	
           |                                s(|                                s|                                rt          d          t          |          }t          j        |                    d                    }	t          j        |                    d                    }
|	
                    d          dk    s|	
                    d          d	urt          d          |	
                    d          |k    sD|	
                    d|	
                    d                    |                                j        k    rt          d          |

                    d          d	us|

                    d          |k    rt          d          t          |                    d                    }t          ||                    d                     t!          |                                          }t$          j                            |dddd                              d          }t$          j                            t.          |ddid          }t$          j                            |d          5 }|                                }|j        }|j        
                    dd           }d d d            n# 1 swxY w Y   |                    d!          r|d"d#         d$k    r|nd }d%}|Id&}t          j        |                    d                    }t=          |          }|t          d'          t          ||           t          j        t?          j         d(d)d*d+d,d-d&tC          |          gd	.                    }tE          |d/         d0                   }d1 |
                    d2g           D             }|d3k    ob|d4k    o\t!          |          d5k    oI|d4         
                    d6          d7v o,tG          |d4         
                    d8d4                    d5k    }i d|rdnd9d|d:tC          |          d|dtC          |          d;t          |          d<tC          |          d=t          |          d>tC          |          d?t          |          d@|dAt.          dBdCdDddEdFdGd	dH|||tC          |          t          |          |||z  dIz  |tH          j$        %                    tH          j&        j'                  (                                dJdK	}tS          ||           tU          t          j+        |d         ||||dL         tC          |          dMdNO                     |rd4nd5S )PNrI   encoding	candidatecandidate_receiptproducer_close_receiptvoice_test_receiptzcandidate.txtzvoice-test.wavTr-   zDvoice-test run output already exists and requires audit/invalidationstatus	completedwriter_closedzcandidate writer is not closedcandidate_sha256r*   
byte_countz,candidate differs from producer-close markerverifiedz0candidate validation is absent, failed, or stale
doc_truyenz1.0true)rN   stylespeeddenoisezContent-Typez!application/x-www-form-urlencodedPOST)r)   headersmethodrV   )timeout rk   rl   rm   rn   wavrJ   z"TTS response contains no WAV audioffprobez-verrorz-show_entrieszMformat=duration,format_name:stream=codec_name,codec_type,sample_rate,channelsz-of)rN   formatdurationc                D    g | ]}|                     d           dk    |S )
codec_typerg   )r   rS   s     r   rU   zmain.<locals>.<listcomp>   s/    ggguEIIlD[D[_fDfDfUDfDfDfr   streams   r   r   
codec_name>   	pcm_f32le	pcm_s16le	pcm_s24lechannelsfailedcandidate_pathproducer_close_sha256candidate_validation_receiptcandidate_validation_sha256sample_pathsample_sha256sample_wordsendpointvoicezNgoc-Huyen-Cloner   r   g      ?r   http_status<   zsha256 streaming 8 MiB)	response_content_typeresponse_shapewav_path
wav_sha256duration_secondswpmprobeverified_athash_methodr   )r   r   r   r   r   receiptFrF   ),rJ   loadsMANIFEST_PATH	read_textr(   r4   r5   r@   r    r   r   statst_sizera   rC   rL   rY   rW   urllibparse	urlencoderequestRequestENDPOINTurlopenr   r   r   ro   decoders   
subprocesscheck_outputr   floatry   datetimenowtimezoneutc	isoformatrM   printrK   )r   r}   validation_pathproducer_close_pathreceipt_pathrun_dirr   r   candidate_hashclose
validationsample_textr   payloadr   responsebodyr   content_typerg   r   r&   r   r   audio_streamsr   r   s                              r   mainr   e   s   z-1171CCDDHx55I$X/BCCO(3KLL!(,@AAL!GO+K))HMM$M... c 2 2 4 4 c8I8I cabbbI&&NJ*44g4FFGGEO55w5GGHHJyyk))UYY-G-Gt-S-S;<<<yy#$$66%))GUYYWcMdMd:e:eiriwiwiyiy  jB  ;B  ;BIJJJ~~j!!--@R1S1SWe1e1eMNNNi1171CCDDKk0099:::{((**++Ll$$lUv& &  vg  n$$w!DEf %  G 
				5	5 @}}o'++NB??@ @ @ @ @ @ @ @ @ @ @ @ @ @ @
 OOG,,Padw1F1FDDDEN}
4;;w//005!!=CDDD5!!!Jz.4/Wvs8}}0 	    E
 U8_Z011Hgg		)R(@(@gggMs 	:x!| 	:M0B0Ba0G 	:!  ..2YY	:a $$Z33449 
7++x9CX#i..*<n 	!#&9":": =TU[\oUpUp 	'O(<(<	 ?\]cds]t]t	
 	s;''
 *9&:M:M
 P^_k 	H &'9 <CL SZ[^ 	4 ' O[(c(mmSYZbScSc$\H-Dr-ITY(,,X->-BCCMMOO/  G g&&&	$*(#<$WU^LHYHY        11as   7MMM__main__r   Fz: )r   r   r   	failed_atrI   r{   r   r   )file)r   r   r   r   )r   r   r   r   r   r   )r   r   r)   r*   r   r+   )r   r   r&   r   r   r+   )rN   r   r   r   )r&   rb   r   rc   )r   ry   ),
__future__r   rf   r   r   rJ   r9   r   sysr6   urllib.parser   urllib.requestpathlibr   __file__r#   r.   r"   r   r   r   r(   rC   rM   ra   rs   r   __name__exitrq   r'   typer   r   r   r   failurer   r   r   r   rK   stderrrQ   r   r   <module>r      s   " " " " " "     				     



               tH~~'*55=         a a a a       0M  M  M  M ` z   ES		*33c33!*..x/@/DEEOOQQ
 

	!tz-"9"97"9"K"KLLHKx1EFFPPPP 	 	 	D	jdju555CJGGGG s=   B! !E8&AE35:D0/E30D85E37D885E33E8