
    shv                         S SK r S SKrS SKrS SKrS SKJrJrJrJrJ	r	  S SK
rS SKrS SKrSSKJrJrJrJrJrJrJr  SSKJrJr  SSKJr  SSKJrJrJr  SSKJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'  \(       a  SS	K(J)r)  SS
SSSSSSSSSSSS.SSS\	\*\RV                  \RX                  4   S\\-   S\	\.\\.S4   4   S\\.   S\\.   S\\.   S\-S\\*   S\-S \-S!\*S"\*S#\	\*\\.   4   S$\\.   4S% jjr/S& r0\1S':X  a  \0" 5         gg)(    N)TYPE_CHECKINGListOptionalTupleUnion   )FRAMES_PER_SECOND
HOP_LENGTHN_FRAMES	N_SAMPLESSAMPLE_RATElog_mel_spectrogrampad_or_trim)DecodingOptionsDecodingResult)add_word_timestamps)	LANGUAGESTO_LANGUAGE_CODEget_tokenizer)	exact_divformat_timestampget_end
get_writer	make_safeoptional_floatoptional_intstr2bool)Whisper)        皙?g?333333?g?      ?333333@      r!   TF   "'“¿([{-   "'.。,，!！?？:：”)]}、0)verbosetemperaturecompression_ratio_thresholdlogprob_thresholdno_speech_thresholdcondition_on_previous_textinitial_promptcarry_initial_promptword_timestampsprepend_punctuationsappend_punctuationsclip_timestampshallucination_silence_thresholdmodelr   audior(   r)   .r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   c                  ^ ^^^^^^U^V^W^X TR                  SS5      (       a  [        R                  O[        R                  nT R                  [        R                  " S5      :X  as  [        R
                  R                  5       (       a  [        R                  " S5        U[        R                  :X  a&  [        R                  " S5        [        R                  nU[        R                  :X  a  STS'   [        UT R                  R                  [        S9nUR                  S   [        -
  n[        U[         -  ["        -  5      nTR                  S	S
5      c  T R$                  (       d  STS	'   OU(       a  ['        S5        [)        U[        5      R+                  T R                  5      R+                  U5      nT R-                  U5      u  nn[/        UUR                   S9TS	'   Ub&  ['        S[0        TS	      R3                  5        35        TS	   nTR                  SS5      n[5        T R$                  T R6                  UUS9mW[9        U[:        5      (       a3  U(       a  UR=                  S5      O/  Vs/ s H  n[        U5      PM     nnU Vs/ s H  n[?        U[@        -  5      PM     nn[C        U5      S:X  a  URE                  S5        [C        U5      S-  S:X  a  URE                  U5        [G        [I        US
S
S2   USS
S2   5      5      nSmUU
(       a  US:X  a  [        R                  " S5        S[        RJ                  S[L        4UUUU UU4S jjnSnUU   S   mV[O        [        T R                  RP                  5      nU[         -  ["        -  n/ n / n!Sn"T R                  RR                  S-  S-
  n#UbB  TWRU                  SURW                  5       -   5      n$U RY                  U$5        U#[C        U$5      -  n#O/ n$S[        S[        S[        RJ                  S [L        4UVUW4S! jjn%[Z        RZ                  " US"USLS#9 n&S$n'U[C        U5      :  Ga  UU   u  n(n)TVU(:  a  U(mVTVU):  a  US-  nU[C        U5      :  a  UU   S   mVMD  [        TV[         -  ["        -  5      n*[        TV[        -   [         -  ["        -  5      n+[]        [        UTV-
  U)TV-
  5      n,US
S
2TVTVU,-   24   nU,[         -  ["        -  n-[)        U[        5      R+                  T R                  5      R+                  U5      nU	(       a'  [/        [C        U$5      U"5      n.U U.S
 U#* S
 n/U$U/-   TS%'   OU U"S
 TS%'   U" U5      n0[        R^                  " U0R`                  5      n1Tb3  U0Rb                  T:  n2Tb  U0Rd                  T:  a  Sn2U2(       a  TVU,-  mVGM~  TVn3/ n4S&[f        S[        4S' jmXS[h        [f           S[j        4UUUX4S( jjn5S)[l        [f           S[h        [f           4S* jn6U1Ro                  TWRp                  5      n7U7S+S
 Rs                  5       SS/:H  n8[        Rt                  " U7S
S U7SS
 -  5      S   n9U9Rw                  S5        [C        U95      S:  a  U9Rs                  5       n:U8(       a  U:RE                  [C        U15      5        Sn;U: Hn  n<U1U;U< n=U=S   Ry                  5       TWRp                  -
  n>U=S   Ry                  5       TWRp                  -
  n?U4RE                  U%" U*U>U-  -   U*U?U-  -   U=U0S,95        U<n;Mp     U8(       a  TVU,-  mVOU1U;S-
     Ry                  5       TWRp                  -
  n@TVU@U-  -  mVOU-nAU1U7R{                  5       R}                  5          nB[C        UB5      S:  aF  WBS   Ry                  5       TWRp                  :w  a%  WBS   Ry                  5       TWRp                  -
  n@U@U-  nAU4RE                  U%" U*U*WA-   U1U0S,95        TVU,-  mVU
(       Ga  [        U4T TWUU,UUU'S-9  U8(       d&  [        U45      nCUCb  WCU*:  a  [?        WC[@        -  5      mVUGb}  UnDU8(       d7  [        U45      nCUCb)  WCU*:  a#  U+WC-
  nEUEWD:  a  [?        WC[@        -  5      mVOU3U,-   mVU6" U45      nFUFb3  U5" WF5      (       a&  WFS   U*-
  nGUGWD:  a  U3[?        WG[@        -  5      -   mVGM  U'nH[        [C        U45      5       H  nIU4UI   nJUJS.   (       d  M  U5" WJ5      (       a  U6" U4WIS-   S
 5      nKUKb  WKS.   S   S   nLOU*U--   nLWJS   WH-
  WD:  =(       d    WJS   WD:  =(       d    WJS   U*-
  S/:  nMWLWJS   -
  WD:  =(       d    U5" WK5      =(       d    U+WJS   -
  S/:  nNWM(       a>  WN(       a7  [?        [/        U*S-   WJS   5      [@        -  5      mVUUJS   -
  WD:  a  UmV/ U4WIS
&   O	WJS   nHM     [        U45      nCUCb  WCn'U(       aI  U4 HC  nJUJS   UJS   UJS0   nQnPnOS1[        UO5       S2[        UP5       S3UQ 3nR['        [        UR5      5        ME     [        U45       H:  u  nSnJUJS   UJS   :X  d  WJS0   RW                  5       S4:X  d  M+  S4WJS0'   / UJS'   / UJS.'   M<     U!RY                  [        U4[C        U!5      S59 VSVJs/ s H  u  nSnJS6US0UJEPM     snJnS5        U RY                  U4 VJVTs/ s H  nJUJS     H  nTUTPM     M     snTnJ5        U(       a  U0R                  S7:  a  [C        U 5      n"U&R                  []        UTV5      U3-
  5        U[C        U5      :  a  GM  S
S
S
5        [g        TWR                  U [C        U$5      S
 5      U!US89$ s  snf s  snf s  snJnSf s  snTnJf ! , (       d  f       NJ= f)9a  
Transcribe an audio file using Whisper

Parameters
----------
model: Whisper
    The Whisper model instance

audio: Union[str, np.ndarray, torch.Tensor]
    The path to the audio file to open, or the audio waveform

verbose: bool
    Whether to display the text being decoded to the console. If True, displays all the details,
    If False, displays minimal details. If None, does not display anything

temperature: Union[float, Tuple[float, ...]]
    Temperature for sampling. It can be a tuple of temperatures, which will be successively used
    upon failures according to either `compression_ratio_threshold` or `logprob_threshold`.

compression_ratio_threshold: float
    If the gzip compression ratio is above this value, treat as failed

logprob_threshold: float
    If the average log probability over sampled tokens is below this value, treat as failed

no_speech_threshold: float
    If the no_speech probability is higher than this value AND the average log probability
    over sampled tokens is below `logprob_threshold`, consider the segment as silent

condition_on_previous_text: bool
    if True, the previous output of the model is provided as a prompt for the next window;
    disabling may make the text inconsistent across windows, but the model becomes less prone to
    getting stuck in a failure loop, such as repetition looping or timestamps going out of sync.

word_timestamps: bool
    Extract word-level timestamps using the cross-attention pattern and dynamic time warping,
    and include the timestamps for each word in each segment.

prepend_punctuations: str
    If word_timestamps is True, merge these punctuation symbols with the next word

append_punctuations: str
    If word_timestamps is True, merge these punctuation symbols with the previous word

initial_prompt: Optional[str]
    Optional text to provide as a prompt for the first window. This can be used to provide, or
    "prompt-engineer" a context for transcription, e.g. custom vocabularies or proper nouns
    to make it more likely to predict those word correctly.

carry_initial_prompt: bool
    If carry_initial_prompt is True, `initial_prompt` is prepended to the prompt of each internal
    `decode()` call. If there is not enough context space at the start of the prompt, it is
    left-sliced to make space.

decode_options: dict
    Keyword arguments to construct `DecodingOptions` instances

clip_timestamps: Union[str, List[float]]
    Comma-separated list start,end,start,end,... timestamps (in seconds) of clips to process.
    The last end timestamp defaults to the end of the file.

hallucination_silence_threshold: Optional[float]
    When word_timestamps is True, skip silent periods longer than this threshold (in seconds)
    when a possible hallucination is detected

Returns
-------
A dictionary containing the resulting text ("text") and segment-level details ("segments"), and
the spoken language ("language"), which is detected when `decode_options["language"]` is None.
fp16Tcpuz2Performing inference on CPU when CUDA is availablez0FP16 is not supported on CPU; using FP32 insteadF)paddinglanguageNenz]Detecting language using up to the first 30 seconds. Use `--language` to specify the language)keyzDetected language: task
transcribe)num_languagesr<   r?   ,r      r   u*   "'“¿([{-"'.。,，!！?？:：”)]}、	translatez:Word-level timestamps on translations may not be reliable.segmentreturnc                   > [        T[        [        45      (       a  T/OTnS nU H  n0 TEnUS:  a%  UR                  SS 5        UR                  SS 5        OUR                  SS 5        [	        S0 UDSU0D6nT
R                  X5      nSnTb  UR                  T:  a  SnT	b  UR                  T	:  a  SnTb%  UR                  T:  a  T	b  UR                  T	:  a  SnU(       a  M    U$    U$ )	Nr   	beam_sizepatiencebest_ofr)   FT )	
isinstanceintfloatpopr   decodecompression_ratioavg_logprobno_speech_prob)rE   temperaturesdecode_resulttkwargsoptionsneeds_fallbackr*   decode_optionsr+   r5   r,   r)   s          f/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/whisper/transcribe.pydecode_with_fallback(transcribe.<locals>.decode_with_fallback   s   'c5\BB[M 	 A''F1u

;-

:t, 

9d+%>>A>G!LL:M"N+7!336QQ!%!-!--0AA!%#/!003FF%1!--0AA!&!>E D      startendtokensresultc           
         > UR                  5       nU Vs/ s H  oDTR                  :  d  M  UPM     nnTU UTR                  U5      UUR                  UR                  UR
                  UR                  S.	$ s  snf )N)	seekr`   ra   textrb   r)   rR   rQ   rS   )tolisteotrP   r)   rR   rQ   rS   )r`   ra   rb   rc   tokentext_tokensre   	tokenizers         r[   new_segmenttranscribe.<locals>.new_segment   s{     *0J&IMM4Iu&J$$[1!--!--!'!9!9$33

 
	
 Ks
   A8A8frames)totalunitdisabler   promptwordc                     U R                  SS5      nU S   U S   -
  nSnUS:  a  US-  nUS:  a  USU-
  S-  -  nUS	:  a  X2S	-
  -  nU$ )
Nprobabilityr   ra   r`   g333333?r"   g/$?          @)get)rs   ru   durationscores       r[   word_anomaly_score&transcribe.<locals>.word_anomaly_score<  sn    "hh}c:;g6%SLEe#eh."44Ec>^+Er^   c                    > U b
  U S   (       d  gU S    Vs/ s H  oS   T;  d  M  UPM     nnUS S n[        U4S jU 5       5      nUS:  =(       d    US-   [        U5      :  $ s  snf )NwordsFrs      c              3   4   >#    U  H  nT" U5      v   M     g 7f)NrK   ).0wr{   s     r[   	<genexpr>9transcribe.<locals>.is_segment_anomaly.<locals>.<genexpr>M  s     A5a.q115s      g{Gz?)sumlen)rE   r   r~   rz   punctuationr{   s       r[   is_segment_anomaly&transcribe.<locals>.is_segment_anomalyH  ss    ?''*: $+G$4U$4q&	8T$4Ubq	A5AAz?UT\SZ%?? Vs
   A&A&segmentsc                 (    [        S U  5       S 5      $ )Nc              3   <   #    U  H  oS    (       d  M  Uv   M     g7f)r~   NrK   )r   ss     r[   r   9transcribe.<locals>.next_words_segment.<locals>.<genexpr>Q  s     ?1gJQQs   	)next)r   s    r[   next_words_segment&transcribe.<locals>.next_words_segmentP  s    ??FFr^   )r`   ra   rb   rc   )r   r5   rk   mel
num_framesr1   r2   last_speech_timestampr~   rw   rf   [z --> z]  )r`   idg      ?)rf   r   r<   )Hrx   torchfloat16float32devicecudais_availablewarningswarnr   dimsn_melsr   shaper   rN   r
   r   is_multilingualprintr   todetect_languagemaxr   titler   rA   rL   strsplitroundr	   r   appendlistzipTensorr   r   n_audio_ctx
n_text_ctxencodestripextendtqdmmintensorrb   rS   rR   dictr   boolr   getimestamp_beginrg   whereadd_itemnonzeroflattenr   r   ranger   r   	enumerater)   updaterP   )Yr5   r6   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   rZ   dtyper   content_framescontent_durationmel_segment_probsr<   r?   tsseek_points
seek_clipsr\   clip_idxinput_stridetime_precision
all_tokensall_segmentsprompt_reset_sinceremaining_prompt_lengthinitial_prompt_tokensrl   pbarr   seek_clip_startseek_clip_endtime_offsetwindow_end_timesegment_sizesegment_durationnignoredremaining_promptrc   rb   should_skipprevious_seekcurrent_segmentsr   r   timestamp_tokenssingle_timestamp_endingconsecutiveslices
last_slicecurrent_slicesliced_tokensstart_timestamp_posend_timestamp_poslast_timestamp_posry   
timestampslast_word_end	thresholdremaining_durationfirst_segmentgaphal_last_endsirE   next_segmenthal_next_startsilence_beforesilence_afterr`   ra   rf   lineiri   r   re   rk   r{   sY   `  ````        `                                                                     @@@@r[   r@   r@   &   s3   r ,//==EMM5==E||u||E**::""$$MMNOEMM!MMLMMME!&v eUZZ%6%6	
JCYYr]X-N^j8;FG*d+3$$)-N:&s &c8477EHHOK,,[9HAu),U		)BN:&"))N:4N*O*U*U*W)XY #:.H""6<8D))	I /3''?N!6!6s!;TV!V
!V"E"I!V 	 
 GVVoeB):$:;oKV
;11
;!q >*(,SSqS1A;qtRStCT-U(VJ@K4;.RS(ell (~ ( (T Hh"D%**((L 	z!K/  JL#jj33q81<! ) 0 0~7K7K7M1M N/03'<#== "

#
-2\\
CQ
 
$ 
8WE5I
	 #
 Z(-7-A*O]o%&}$Ac*o-%h/2Dz 1K ?@K#TH_
$B[$PQOx$)>PT@TULa|(;!;;<K+j8;F%k8<??MPPQVWK#s#89;MN#-hi#8:Q9Q9R#S +@CS+Sx(+56H6I+Jx(%9+%FF\\&--0F".$336II%1**->> #(KL(D M!
 
% 
@HTN @t @ @GT$Z GHTN G .4YYy7P7P-Q&6rs&;&B&B&DPT&U#++&6s&;>Nqr>R&RSTUVKQ;!#$++-*MM#f+.
%+M$*:m$DM%a(--/)2K2KK ( &b)..093L3LL & %++#"-0Cn0T"T +.?..P P#0#)	 "/J! &,$ +L(D zA~.335	8Q8QQ ' .==D+#$4$<$<$>$F$F$HI

Oa'"2++-1J1JJ #2++-	0I0II '  2NBH '')'(2%%	 $#-'#+)=(;*?	 /$+,<$=M$0][5P$]5F%FG 3> ?I2(/0@(A(49T1@=1P.1I=',]=N-N'O'4|'C %77G$HM$05G5V5V+G4{B?#05?P9P3Q#QD$ $9L#C(8$9:"22"6&w/$-g66+= 0a :,L  ,71=g1Fq1I'1R1<?O1O ' 0< ?) K !H#*7#3i#?!H#*7#3k#AC#G + !/ ?) K !J#5l#C!J#2WU^#Cc#I *
  .-',$'a9I$J&7%8(" $4gen#Dy#P+9D8: 0 5 %'.u~? ;B !((8 9 ,,9)/G'.w'7QW3E/67u=Mc=R<SSUVZU[\D)D/*  0 ((89
77#wu~59N9N9PTV9V&(GFO(*GH%')GG$	 :  '0(L0A''
7 1((' &6V&67GHDU5DU&6V .1C1Cc1I%(_" KKND1MABY Z(
l j-B)C)EFG k

 W@
 WY
 
s>   4mm"Xm34m3m'$m3<m-Am3'm33
nc                  N  ^ SSK Jm  U4S jn [        R                  " [        R                  S9nUR                  SS[        SS9  UR                  S	S
U SS9  UR                  S[        S SS9  UR                  S[        R                  R                  5       (       a  SOSSS9  UR                  SS[        SSS9  UR                  SS[        S/ SQSS9  UR                  S[        S S!S9  UR                  S"[        S#S#S$/S%S9  UR                  S&[        S [        [        R                  " 5       5      [        [        R                  " 5        Vs/ s H  o"R                  5       PM     sn5      -   S'S9  UR                  S([         S)S*S9  UR                  S+["        S,S-S9  UR                  S.["        S,S/S9  UR                  S0[         S S1S9  UR                  S2[         S S3S9  UR                  S4[        S5S6S9  UR                  S7[        S S8S9  UR                  S9[        S:S;S9  UR                  S<[        S S=S9  UR                  S>[        S S?S9  UR                  S@[$        SASBS9  UR                  SC[$        SDSES9  UR                  SF[$        SGSHS9  UR                  SI[$        SJSKS9  UR                  SL[        S:SMS9  UR                  SN[        SOSPS9  UR                  SQ[        SRSSS9  UR                  ST[        S:SUS9  UR                  SV["        S SWS9  UR                  SX["        S SYS9  UR                  SZ["        S S[S9  UR                  S\["        S)S]S9  UR                  S^[        S_S`S9  UR                  Sa[$        SbSc9  UR'                  5       R(                  nUR+                  Sd5      nUR+                  Se5      nUR+                  Sf5      nUR+                  Sg5      nUR+                  Sh5      n[,        R.                  " US Si9  UR1                  Sj5      (       a3  USk   Sl;  a*  USk   b  [2        R4                  " U SmUSk    Sn35        SoUSk'   UR+                  Sp5      n	UR+                  Sq5      =n
b"  [7        [8        R:                  " U	SrU
5      5      n	OU	/n	UR+                  Ss5      =nS):  a  [        R<                  " U5        SStK Jn  U" XHUSu9n[A        Xv5      n/ SvQnUSw   (       d*  U H$  nUU   (       d  M  URC                  SxU Sy35        M&     USz   (       a   US{   (       d  [2        R4                  " S|5        US}   (       a   US{   (       a  [2        R4                  " S~5        U Vs0 s H  nUUR+                  U5      _M     nnUR+                  S5       H  n [E        UU4SpU	0UD6nU" UU40 UD6  M     g s  snf s  snf ! [F         aP  n[H        RJ                  " 5         [M        SU S[O        U5      RP                   S[        U5       35         S nAM  S nAff = f)Nr   )available_modelsc                    > U T" 5       ;   d$  [         R                  R                  U 5      (       a  U $ [        ST" 5        S35      e)Nzmodel should be one of z or path to a model checkpoint)ospathexists
ValueError)namer   s    r[   valid_model_namecli.<locals>.valid_model_name  sE    #%%)=)=K%&6&8%99WX
 	
r^   )formatter_classr6   +zaudio file(s) to transcribe)nargstypehelpz--modelturboz name of the Whisper model to use)defaultr  r	  z--model_dirz>the path to save model files; uses ~/.cache/whisper by default)r  r  r	  z--devicer   r9   z#device to use for PyTorch inference)r  r	  z--output_dirz-o.zdirectory to save the outputsz--output_formatz-fall)txtvttsrttsvjsonr  zSformat of the output file; if not specified, all available formats will be produced)r  r  choicesr	  z	--verboseTz4whether to print out the progress and debug messagesz--taskr@   rD   zawhether to perform X->X speech recognition ('transcribe') or X->English translation ('translate')z
--languagezHlanguage spoken in the audio, specify None to perform language detectionz--temperaturer   ztemperature to use for samplingz	--best_of   z<number of candidates when sampling with non-zero temperaturez--beam_sizezHnumber of beams in beam search, only applicable when temperature is zeroz
--patiencezoptional patience value to use in beam decoding, as in https://arxiv.org/abs/2204.05424, the default (1.0) is equivalent to conventional beam searchz--length_penaltyzoptional token length penalty coefficient (alpha) as in https://arxiv.org/abs/1609.08144, uses simple length normalization by defaultz--suppress_tokensz-1zcomma-separated list of token ids to suppress during sampling; '-1' will suppress most special characters except common punctuationsz--initial_promptz:optional text to provide as a prompt for the first window.z--carry_initial_promptFz{if True, prepend initial_prompt to every internal decode() call. May reduce the effectiveness of condition_on_previous_textz--condition_on_previous_textzif True, provide the previous output of the model as a prompt for the next window; disabling may make the text inconsistent across windows, but the model becomes less prone to getting stuck in a failure loopz--fp16z5whether to perform inference in fp16; True by defaultz#--temperature_increment_on_fallbackr    zhtemperature to increase when falling back when the decoding fails to meet either of the thresholds belowz--compression_ratio_thresholdr#   zUif the gzip compression ratio is higher than this value, treat the decoding as failedz--logprob_thresholdr$   zUif the average log probability is lower than this value, treat the decoding as failedz--no_speech_thresholdr!   zif the probability of the <|nospeech|> token is higher than this value AND the decoding has failed due to `logprob_threshold`, consider the segment as silencez--word_timestampszQ(experimental) extract word-level timestamps and refine the results based on themz--prepend_punctuationsr%   zNif word_timestamps is True, merge these punctuation symbols with the next wordz--append_punctuationsr&   zRif word_timestamps is True, merge these punctuation symbols with the previous wordz--highlight_wordszT(requires --word_timestamps True) underline each word as it is spoken in srt and vttz--max_line_widthze(requires --word_timestamps True) the maximum number of characters in a line before breaking the linez--max_line_countzJ(requires --word_timestamps True) the maximum number of lines in a segmentz--max_words_per_linezk(requires --word_timestamps True, no effect with --max_line_width) the maximum number of words in a segmentz	--threadsz]number of threads used by torch for CPU inference; supercedes MKL_NUM_THREADS/OMP_NUM_THREADSz--clip_timestampsr'   zcomma-separated list start,end,start,end,... timestamps (in seconds) of clips to process, where the last end timestamp defaults to the end of the filez!--hallucination_silence_thresholdz(requires --word_timestamps True) skip silent periods longer than this threshold (in seconds) when a possible hallucination is detected)r  r	  r5   	model_dir
output_diroutput_formatr   )exist_okz.enr<   >   r=   Englishz) is an English-only model but receipted 'z'; using English instead.r=   r)   !temperature_increment_on_fallbackgzo ?threads)
load_model)r   download_root)highlight_wordsmax_line_countmax_line_widthmax_words_per_liner0   z--z  requires --word_timestamps Truer  r   z7--max_line_count has no effect without --max_line_widthr!  z8--max_words_per_line has no effect with --max_line_widthz	Skipping z due to z: ))r   r   argparseArgumentParserArgumentDefaultsHelpFormatteradd_argumentr   r   r   r   r   sortedr   keysr   r   rN   r   r   
parse_args__dict__rO   r   makedirsendswithr   r   tuplenparangeset_num_threadsr  r   errorr@   	Exception	traceback	print_excr   r  __name__)r  parserkargs
model_namer  r  r  r   r)   	incrementr  r  r5   writerword_optionsoptionargwriter_args
audio_pathrc   er   s                         @r[   clirA    s   "
 $$X5[5[\F
s;XY
	79IPrs
C  EE  F

ejj6M6M6O6OFUZ  bG  H
3Jij
)4c5R}  EZ  [
(DG}~
sL<YdJe  mP  Q
3fY^^M]F^ag  }M  }R  }R  }T  iU  }Twxipipir  }T  iU  bV  GV  ]g  h
eQEfg
,  IG  H
L!  KU  V
5$  F\  ]
*  LS  T
+#t  KQ  R
*d  JF  G
0x  VS  T
6Xt  [l  m
xD{|
=N\_  gQ  R
7nVY  ax  y
-ND  Xo  p
/nc  Yy  z
+(E  Qd  e
0sO  [k  l
/cCf  nB  C
+(E  Qg  h
*t  Sz  {
*t  S_  `
.\4  WD  E
,  Ih  i
+#s  Jb  c
;.  Xa  b ''Dhhw'JXXk*Ihh|,J/2M((8$FKK
T*5!!d:&6>O&O
'MM,GZHXGYYrs  Z((=)KXXABB	OBIIk:yIJ"m88I&&!+g&z	JE2FL !""FF||r&)IJK # d+;&<OP !d+;&<PQ1=>#3%K>hhw'
	PzS{SdSF6:55 (W iUT ?
  	P!Ij\$q'2B2B1C2c!fXNOO	Ps%   W /W"W


X$AXX$__main__)2r"  r   r2  r   typingr   r   r   r   r   numpyr-  r   r   r6   r	   r
   r   r   r   r   r   decodingr   r   timingr   rk   r   r   r   utilsr   r   r   r   r   r   r   r   r5   r   r   ndarrayr   r   rN   r@   rA  r4  rK   r^   r[   <module>rI     s    	   > >      6 ' A A	 	 	  #3Q36)-+.'+$(!&! .A/27;!\\bjj%,,./\ d^	\
 ueE3J//0\ "*%\  \ "%\ !%\ SM\ \ \ \ \ 3U+,\  &.e_!\~fPR zE r^   