
    n\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mZ  ee                                          j        d         Zedz  Zedz  Zedz  Zedz  Zed	z  Zed
z  Z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&                    dd           e'                     ej(        e%dd !          d"z   d#$            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work/voice-test/run-001z&work/story/run-001/story-candidate.txtzlog/candidate-validation.jsonzcandidate.txtzvoice-test.wavzreceipt.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'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.0values     r   
<listcomp>zmake_sample.<locals>.<listcomp>!   s-    QQQE5;;==Q%++--QQQr   z

r   X  
  i   z#sample word count outside 500-800: )splitappendlenjoinRuntimeError)r   
paragraphschosencount	paragraphsamplewordss          r   make_sampler0       s    QQTZZ-?-?QQQJFE  	i   Y__&&'''C<<E [[  4'FE%3HHHIIIMr   r    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audiodatazdata:,r   T)validater      RIFF         WAVE)
isinstancedictgetr   
startswithr%   r5   	b64decode	Exceptionvalues
find_audiolist)r    keyitemrawdecodedfounds         r   rF   rF   0   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                 	   t                               dd           t          j        t                              d                    } t          t                    }|                     d          dus|                     d          |k    rt          d          t          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}|
jd}t          j        |                    d                    }t9          |          }
|
0t          j        |d          }t          d|d d                    t<                              |
           t          j        tA          j!        dddd d!d"dtE          t<                    gd#                    }tG          |d$         d%                   }|                    d&g           }d' |D             }|d(k    ob|d)k    o\t          |          d*k    oI|d)                             d+          d,v o,tI          |d)                             d-d)                    d*k    }i d.|rd/nd0d|d1tE          t                    d|d2tE          t                    d3t          t                    d4|d5t*          d6d7d8dd9d:d;dd<|d=|	d>|d?tE          t<                    d@t          t<                    |||z  dAz  |tJ          j%        &                    tJ          j'        j(                  )                                dBdC}tT                              t          j        |ddDE          dFz   d           tW          t          j        |d.         ||||dG         tE          tT                    dHd                     |rd)nd*S )INTparentsexist_okutf-8encodingverifiedcandidate_sha256z0candidate validation is absent, failed, or stale
doc_truyenz1.0true)r   stylespeeddenoisezContent-Typez!application/x-www-form-urlencodedPOST)r7   headersmethodr"   )timeout r;   r<   r=   r>   wavjsonFensure_asciiz*TTS response contains no WAV audio; shape=r$   ffprobez-verrorz-show_entrieszMformat=duration,format_name:stream=codec_name,codec_type,sample_rate,channelsz-of)r   formatdurationstreamsc                D    g | ]}|                     d           dk    |S )
codec_typer6   )rA   r   s     r   r!   zmain.<locals>.<listcomp>v   s.    VVVu599\3J3Jg3U3UU3U3U3Ur      r   r   
codec_name>   	pcm_f32le	pcm_s16le	pcm_s24lechannelsstatus	completedfailedcandidate_pathsample_pathsample_sha256sample_wordsendpointvoicezNgoc-Huyen-ClonerY   rZ   g      ?r[   http_statusresponse_content_typeresponse_shapewav_path
wav_sha256<   zsha256 streaming 8 MiB)duration_secondswpmprobeverified_athash_method   rd   indentr#   r   )rr   rU   rx   r   r   receipt),RUNmkdirrb   loads
VALIDATION	read_textr   	CANDIDATErA   r)   r0   SAMPLE
write_textr'   r%   urllibparse	urlencodeencoderequestRequestENDPOINTurlopenr   rr   r]   rB   decoderF   dumpsWAVwrite_bytes
subprocesscheck_outputr   floatrM   datetimenowtimezoneutc	isoformatRECEIPTprint)
validationcandidate_hashsample_textrx   payloadreqresponsebodyr{   content_typer6   r}   objsafer   rh   ri   audio_streamsrU   r   s                       r   mainr   H   sz   IIdTI***J00'0BBCCJI&&N~~j!!--@R1S1SWe1e1eMNNNi1171CCDDK
kG444{((**++Ll$$	& &  
 vg  .
 
 !DE	 !  C 
		S		1	1 @X}}o'++NB??@ @ @ @ @ @ @ @ @ @ @ @ @ @ @
 OOG,,Padw1F1FDDDEN}jW--..3=:c666DXDQURUQUJXXYYYOOEJz.4/Wvs3xx0 	    E
 U8_Z011Hii	2&&GVVVVVMs 	:qL	:!#	: !  ..2YY	: a $$Z33449 7++xH 	#i.. 	N	
 	s6{{ 	 	 	H 	# 	 	 	4 	{ 	  	.  	CHH!" 	fSkk#$ %h&+(,,X->-BCCMMOO/-  G0 tz'aHHH4OZabbb	$*(#$$u~w<<        11as   7GGG__main__rt   Fz: )rr   rU   rf   	failed_atTrO   r   r   r#   rR   rS   rc   )file)r   r   r   r   )r   r   r   r   )r    r1   r   r2   )r   rM   )+
__future__r   r5   r   r   rb   r   sysurllib.parser   urllib.requestpathlibr   __file__resolverP   ROOTr   r   r   r   r   r   r   r   r0   rF   r   __name__exitrD   exctyper   r   r   r   failurer   r   r   r   stderrr   r   r   <module>r      sm   " " " " " "         



              tH~~'*
&&;;	33
			

=          0W  W  W  W t z 
 
 
S		*33c33!*..x/@/DEEOOQQ	
 
 			$	...:4:gE!LLLtS^efffjdju555CJGGGG
 s   B& &E8+CE33E8