§
    øóÉjÔD  ã                   óì  — d dl Z d dlmZmZmZ d dlmZ d dlZd dlZd dl	Z
d dlZd dlmZ d dlmZmZ d dlmZ d dlmZ d dlmZmZmZmZ d d	lmZmZmZ d d
lmZm Z m!Z! d dl"m#Z#  e#e$¦  «        Z%d„ Z& G d„ dej'        ¦  «        Z' G d„ de¦  «        Z(	 	 	 	 	 	 	 	 	 	 	 	 	 d"de)de)dee*         dee)         dee         dee)         dee*         dee'         dee)         deee)e+f                  d e(fd!„Z,dS )#é    N)ÚListÚOptionalÚUnion)Úreplace)Ú	Tokenizer)ÚTranscriptionOptionsÚget_ctranslate2_storage)ÚPipeline)ÚPipelineIterator)Ú	N_SAMPLESÚSAMPLE_RATEÚ
load_audioÚlog_mel_spectrogram)ÚSingleSegmentÚTranscriptionResultÚProgressCallback)ÚVadÚSileroÚPyannote)Ú
get_loggerc                 óê   — g }t          | j        ¦  «        D ][}|                      |g¦  «                             d¦  «        }t	          d„ |D ¦   «         ¦  «        }|r|                     |¦  «         Œ\|S )Nú c              3   ó   K  — | ]}|d v V — Œ	dS )u   0123456789%$Â£N© )Ú.0Úcs     úo/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib/python3.11/site-packages/whisperx/asr.pyú	<genexpr>z-find_numeral_symbol_tokens.<locals>.<genexpr>   s(   è è € Ð FÐ F¸1 Ð&6Ð!6Ð FÐ FÐ FÐ FÐ FÐ Fó    )ÚrangeÚeotÚdecodeÚremoveprefixÚanyÚappend)Ú	tokenizerÚnumeral_symbol_tokensÚiÚtokenÚhas_numeral_symbols        r   Úfind_numeral_symbol_tokensr+      s„   € ØÐÝ�9”=Ñ!Ô!ð ,ð ,ˆØ× Ò  ! Ñ%Ô%×2Ò2°3Ñ7Ô7ˆÝ Ð FÐ FÀÐ FÑ FÔ FÑFÔFÐØð 	,Ø!×(Ò(¨Ñ+Ô+Ð+øØ Ð r   c                   óX   — e Zd ZdZ	 d	dej        dedefd„Zdej        de	j
        fd„ZdS )
ÚWhisperModelz¥
    FasterWhisperModel provides batched inference for faster-whisper.
    Currently only works in non-timestamp mode and fixed prompt for all samples in batch.
    NÚfeaturesr&   Úoptionsc                 ó<  ‡— |j         d         }g }d}|j        �Fd|j                             ¦   «         z   }‰                     |¦  «        }	|                     |	¦  «         ||d …         }
|                      ‰|
|j        |j        |j        ¬¦  «        }|                      |¦  «        }| j	         
                    ||g|z  |j        |j        |j        | j        |j        |j        |j        |j        d¬¦  «        }d„ |D ¦   «         }g }|D ]O}t'          |j        d         ¦  «        }|j        d         ||j        z  z  }|                     ||dz   z  ¦  «         ŒPdt.          t.          t0                            d	t.          t2                   fˆfd
„} ||¦  «        }||dœS )Nr   r   )Úwithout_timestampsÚprefixÚhotwordsT)	Ú	beam_sizeÚpatienceÚlength_penaltyÚ
max_lengthÚsuppress_blankÚsuppress_tokensÚno_repeat_ngram_sizeÚrepetition_penaltyÚreturn_scoresc                 ó(   — g | ]}|j         d          ‘ŒS )r   )Úsequences_ids©r   Úxs     r   ú
<listcomp>z9WhisperModel.generate_segment_batched.<locals>.<listcomp>L   s   € Ð;Ð;Ð;¨q˜œ¨Ô*Ð;Ð;Ð;r   é   ÚtokensÚreturnc                 óˆ   •— g }| D ]#}|                      ˆfd„|D ¦   «         ¦  «         Œ$‰j                             |¦  «        S )Nc                 ó*   •— g | ]}|‰j         k     ¯|‘ŒS r   )r!   )r   r)   r&   s     €r   rA   zOWhisperModel.generate_segment_batched.<locals>.decode_batch.<locals>.<listcomp>W   s%   ø€ ÐKÐKÐK e°U¸Y¼]Ò5JÐ5J˜EÐ5JÐ5JÐ5Jr   )r%   r&   Údecode_batch)rC   ÚresÚtkr&   s      €r   rG   z;WhisperModel.generate_segment_batched.<locals>.decode_batchT   sZ   ø€ ØˆCØð Mð M�Ø—
’
ÐKÐKÐKÐK¨rÐKÑKÔKÑLÔLÐLÐLàÔ&×3Ò3°CÑ8Ô8Ð8r   )ÚtextÚavg_logprob)ÚshapeÚinitial_promptÚstripÚencodeÚextendÚ
get_promptr1   r2   r3   ÚmodelÚgenerater4   r5   r6   r7   r8   r9   r:   r;   Úlenr>   Úscoresr%   r   ÚintÚstr)Úselfr.   r&   r/   Úencoder_outputÚ
batch_sizeÚ
all_tokensÚprompt_reset_sincerM   Úinitial_prompt_tokensÚprevious_tokensÚpromptÚresultÚtokens_batchÚavg_logprobsrH   Úseq_lenÚcum_logprobrG   rJ   s     `                 r   Úgenerate_segment_batchedz%WhisperModel.generate_segment_batched%   sâ  ø€ ð ”^ AÔ&ˆ
Øˆ
ØÐØÔ!Ð-Ø  7Ô#9×#?Ò#?Ñ#AÔ#AÑAˆNØ$-×$4Ò$4°^Ñ$DÔ$DÐ!Ø×ÒÐ3Ñ4Ô4Ð4Ø$Ð%7Ð%8Ð%8Ô9ˆØ—’ØØØ&Ô9Ø”>ØÔ%ð !ñ 
ô 
ˆð Ÿš XÑ.Ô.ˆà”×$Ò$ØØ�˜:Ñ%Ø!Ô+Ø Ô)Ø&Ô5Øœ?Ø&Ô5Ø 'Ô 7Ø%,Ô%AØ#*Ô#=Ø"ð %ñ ô ˆð <Ð;°FÐ;Ñ;Ô;ˆàˆØð 	=ð 	=ˆCÝ˜#Ô+¨AÔ.Ñ/Ô/ˆGØœ* Qœ-¨7°gÔ6LÑ+LÑMˆKØ×Ò ¨w¸©{Ñ ;Ñ<Ô<Ð<Ð<ð	9¥¥d­3¤i¤ð 	9µT½#´Yð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð ˆ|˜LÑ)Ô)ˆà¨\Ð:Ð:Ð:r   rD   c                 ó  — | j         j        dk    ot          | j         j        ¦  «        dk    }t          |j        ¦  «        dk    rt          j        |d¦  «        }t          |¦  «        }| j                              ||¬¦  «        S )NÚcudarB   é   r   )Úto_cpu)	rR   ÚdevicerT   Údevice_indexrL   ÚnpÚexpand_dimsr	   rO   )rX   r.   ri   s      r   rO   zWhisperModel.encode_   sy   € ð ”Ô" fÒ,ÐQµ°T´ZÔ5LÑ1MÔ1MÐPQÒ1QˆåˆxŒ~ÑÔ !Ò#Ð#Ý”~ h°Ñ2Ô2ˆHÝ*¨8Ñ4Ô4ˆàŒz× Ò  °&Ð Ñ9Ô9Ð9r   ©N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rl   Úndarrayr   r   re   Úctranslate2ÚStorageViewrO   r   r   r   r-   r-      s‚   € € € € € ðð ð ð8;ð 8;à”*ð8;ð ð8;ð &ð	8;ð 8;ð 8;ð 8;ðt	:˜rœzð 	:¨kÔ.Eð 	:ð 	:ð 	:ð 	:ð 	:ð 	:r   r-   c                   ó6  ‡ — e Zd ZdZ	 	 	 	 	 d!dededed	ee         d
e	e
edf         dee         defˆ fd„Zd„ Zd„ Zd„ Zd„ Zde
de
dededef
d„Z	 	 	 	 	 	 	 	 	 d"de	eej        f         dee
         dee         dee         dedefd„Zdej        defd „Zˆ xZS )#ÚFasterWhisperPipelinez>
    Huggingface Pipeline wrapper for FasterWhisperModel.
    NéÿÿÿÿÚptFrR   Ú
vad_paramsr/   r&   rj   ztorch.deviceÚlanguageÚsuppress_numeralsc
                 ó˜  •— || _         || _        || _        || _        |	| _        |
                     dd ¦  «        | _        d| _         | j        di |
¤Ž\  | _	        | _
        | _        d| _        || _        | j        dk    rŽt          |t          j        ¦  «        r|| _        nst          |t"          ¦  «        rt          j        |¦  «        | _        nD|dk     rt          j        d¦  «        | _        n$t          j        d|› �¦  «        | _        n|| _        t%          t&          | ¦  «                             ¦   «          || _        || _        d S )NrZ   rB   r   ry   Úcpuúcuda:r   )rR   r&   r/   Úpreset_languager|   ÚpopÚ_batch_sizeÚ_num_workersÚ_sanitize_parametersÚ_preprocess_paramsÚ_forward_paramsÚ_postprocess_paramsÚ
call_countÚ	frameworkÚ
isinstanceÚtorchrj   rW   Úsuperr
   Ú__init__Ú	vad_modelÚ_vad_params)rX   rR   Úvadrz   r/   r&   rj   r‰   r{   r|   ÚkwargsÚ	__class__s              €r   r�   zFasterWhisperPipeline.__init__r   s?  ø€ ð ˆŒ
Ø"ˆŒØˆŒØ'ˆÔØ!2ˆÔØ!Ÿ:š: l°DÑ9Ô9ˆÔØˆÔØRkÐRVÔRkÐRuÐRuÐntÐRuÐRuÑOˆÔ Ô!5°tÔ7OØˆŒØ"ˆŒØŒ>˜TÒ!Ð!Ý˜&¥%¤,Ñ/Ô/ð =Ø$�”�Ý˜F¥CÑ(Ô(ð =Ý#œl¨6Ñ2Ô2�”�Ø˜!’�Ý#œl¨5Ñ1Ô1�”�å#œlÐ+;°6Ð+;Ð+;Ñ<Ô<�”�à ˆDŒKå�h˜ÑÔ×&Ò&Ñ(Ô(Ð(ØˆŒØ%ˆÔÐÐr   c                 ó.   — i }d|v r|d         |d<   |i i fS )Nr&   Ú	maybe_argr   )rX   r‘   Úpreprocess_kwargss      r   r„   z*FasterWhisperPipeline._sanitize_parameters™   s0   € ØÐØ˜&Ð Ð Ø-3°KÔ-@Ð˜kÑ*Ø  " bÐ(Ð(r   c                 óª   — |d         }| j         j                             d¦  «        }t          ||�|ndt          |j        d         z
  ¬¦  «        }d|iS )NÚinputsÚfeature_sizeéP   r   ©Ún_melsÚpadding)rR   Úfeat_kwargsÚgetr   r   rL   )rX   ÚaudioÚmodel_n_melsr.   s       r   Ú
preprocessz FasterWhisperPipeline.preprocessŸ   sa   € Ø�h”ˆØ”zÔ-×1Ò1°.ÑAÔAˆÝ&ØØ#/Ð#;�<�<ÀÝ ¤¨A¤Ñ.ð
ñ 
ô 
ˆð
 ˜(Ð#Ð#r   c                 ó^   — | j                              |d         | j        | j        ¦  «        }|S )Nr—   )rR   re   r&   r/   )rX   Úmodel_inputsÚoutputss      r   Ú_forwardzFasterWhisperPipeline._forward©   s+   € Ø”*×5Ò5°lÀ8Ô6LÈdÌnÐ^bÔ^jÑkÔkˆØˆr   c                 ó   — |S rn   r   )rX   Úmodel_outputss     r   Úpostprocessz!FasterWhisperPipeline.postprocess­   s   € ØÐr   Únum_workersrZ   Úpreprocess_paramsÚforward_paramsÚpostprocess_paramsc                 ó  — t          || j        |¦  «        }dt          j        vrdt          j        d<   d„ }t          j        j                             ||||¬¦  «        }	t          |	| j        ||¬¦  «        }
t          |
| j	        |¦  «        }|S )NÚTOKENIZERS_PARALLELISMÚfalsec                 óB   — dt          j        d„ | D ¦   «         ¦  «        iS )Nr—   c                 ó   — g | ]
}|d          ‘ŒS )r—   r   r?   s     r   rA   zEFasterWhisperPipeline.get_iterator.<locals>.stack.<locals>.<listcomp>¿   s   € Ð*FÐ*FÐ*F¸1¨1¨X¬;Ð*FÐ*FÐ*Fr   )r‹   Ústack)Úitemss    r   r²   z1FasterWhisperPipeline.get_iterator.<locals>.stack¾   s&   € Ø�eœkÐ*FÐ*FÀÐ*FÑ*FÔ*FÑGÔGÐHÐHr   )r©   rZ   Ú
collate_fn)Úloader_batch_size)
r   r¡   ÚosÚenvironr‹   ÚutilsÚdataÚ
DataLoaderÚforwardr¨   )rX   r—   r©   rZ   rª   r«   r¬   Údatasetr²   Ú
dataloaderÚmodel_iteratorÚfinal_iterators               r   Úget_iteratorz"FasterWhisperPipeline.get_iterator°   s›   € õ # 6¨4¬?Ð<MÑNÔNˆØ#­2¬:Ð5Ð5Ø3:�BŒJÐ/Ñ0ð	Ið 	Ið 	Iå”[Ô%×0Ò0°ÀkÐ^hÐuzÐ0Ñ{Ô{ˆ
Ý)¨*°d´lÀNÐfpÐqÑqÔqˆÝ)¨.¸$Ô:JÐL^Ñ_Ô_ˆØÐr   r   é   rŸ   ÚtaskÚprogress_callbackrD   c           
      óL  — t          |t          ¦  «        rt          |¦  «        }d„ }t          t	          | j        ¦  «        t          ¦  «        r'| j                             |¦  «        }| j        j        }n t          j        |¦  «        }t          j        }|                      |t          dœ¦  «        } |||| j        d         | j        d         ¬¦  «        }| j        €M|p|                      |¦  «        }|pd}t          | j        j        | j        j        j        ||¬¦  «        | _        nm|p| j        j        }|p| j        j        }|| j        j        k    s|| j        j        k    r1t          | j        j        | j        j        j        ||¬¦  «        | _        | j        r€| j        j        }t/          | j        ¦  «        }t0                               d¦  «         || j        j        z   }t5          t7          |¦  «        ¦  «        }t9          | j        |¬	¦  «        | _        g }|p| j        }t=          |¦  «        }t?          |                        |||¦  «        ||¬
¦  «        ¦  «        D �]\  }}|r(|dz   |z  dz  }|r|dz  n|}tC          d|d›d�¦  «         |
� |
|dz   |z  dz  ¦  «         |d         }|d         }|dv r|d         }|d         }|	rLtC          dtE          ||         d         d¦  «        › dtE          ||         d         d¦  «        › d|› �¦  «         | #                    |tE          ||         d         d¦  «        tE          ||         d         d¦  «        |dœ¦  «         �Œ| j$        €d | _        | j        rt9          | j        |¬	¦  «        | _        ||dœS )Nc              3   ó¤   K  — |D ]J}t          |d         t          z  ¦  «        }t          |d         t          z  ¦  «        }d| ||…         iV — ŒKd S )NÚstartÚendr—   )rV   r   )rŸ   ÚsegmentsÚsegÚf1Úf2s        r   r¹   z.FasterWhisperPipeline.transcribe.<locals>.dataÕ   sg   è è € Øð /ð /�Ý˜˜Wœ­Ñ3Ñ4Ô4�Ý˜˜Uœ¥kÑ1Ñ2Ô2�à  r¨" u¤Ð.Ð.Ð.Ð.Ð.ð	/ð /r   )ÚwaveformÚsample_rateÚ	vad_onsetÚ
vad_offset)ÚonsetÚoffsetÚ
transcribe©rÂ   r{   z%Suppressing numeral and symbol tokens)r9   )rZ   r©   rB   éd   rh   z
Progress: ú.2fz%...rJ   rK   )r   rB   Nr   zTranscript: [rÆ   é   z --> rÇ   z] )rJ   rÆ   rÇ   rK   )rÈ   r{   )%rŠ   rW   r   Ú
issubclassÚtyperŽ   r   Úpreprocess_audioÚmerge_chunksr   r   r�   r&   Údetect_languager   rR   Úhf_tokenizerÚis_multilingualÚlanguage_coderÂ   r|   r/   r9   r+   ÚloggerÚinfoÚlistÚsetr   r‚   rT   Ú	enumerateÚ__call__ÚprintÚroundr%   r€   )rX   rŸ   rZ   r©   r{   rÂ   Ú
chunk_sizeÚprint_progressÚcombined_progressÚverboserÃ   r¹   rÌ   rÚ   Úvad_segmentsÚprevious_suppress_tokensr'   Únew_suppressed_tokensrÈ   Útotal_segmentsÚidxÚoutÚbase_progressÚpercent_completerJ   rK   s                             r   rÒ   z FasterWhisperPipeline.transcribeÅ   s  € õ �e�SÑ!Ô!ð 	&Ý˜uÑ%Ô%ˆEð	/ð 	/ð 	/õ •d˜4œ>Ñ*Ô*­CÑ0Ô0ð 	1Ø”~×6Ò6°uÑ=Ô=ˆHØ œNÔ7ˆLˆLåÔ0°Ñ7Ô7ˆHÝ#Ô0ˆLà—~’~°8ÍKÐ&XÐ&XÑYÔYˆØ#�|ØØØÔ" ;Ô/ØÔ# LÔ1ð	
ñ 
ô 
ˆð Œ>Ð!ØÐ> 4×#7Ò#7¸Ñ#>Ô#>ˆHØÐ'˜<ˆDÝ&Ø”
Ô'Ø”
Ô Ô0ØØ!ð	ñ ô ˆDŒNˆNð  Ð? 4¤>Ô#?ˆHØÐ.˜4œ>Ô.ˆDØ�t”~Ô*Ò*Ð*¨h¸$¼.Ô:VÒ.VÐ.VÝ!*Ø”JÔ+Ø”JÔ$Ô4ØØ%ð	"ñ "ô "�”ð Ô!ð 	XØ'+¤|Ô'CÐ$Ý$>¸t¼~Ñ$NÔ$NÐ!Ý�KŠKÐ?Ñ@Ô@Ð@Ø$9¸D¼LÔ<XÑ$XÐ!Ý$(­Ð-BÑ)CÔ)CÑ$DÔ$DÐ!Ý" 4¤<ÐAVÐWÑWÔWˆDŒLà(*ˆØÐ3 4Ô#3ˆ
Ý˜\Ñ*Ô*ˆÝ! $§-¢-°°°U¸LÑ0IÔ0IÐV`Ðny -Ñ"zÔ"zÑ{Ô{ð 	ñ 	‰HˆC�Øð ?Ø"%¨¡'¨^Ñ!;¸sÑ B�Ø8IÐ#\ =°1Ñ#4Ð#4È}Ð ÝÐ=Ð#3Ð=Ð=Ð=Ð=Ñ>Ô>Ð>Ø Ð,Ø!Ð! C¨!¡G¨~Ñ#=ÀÑ"DÑEÔEÐEØ�v”;ˆDØ˜mÔ,ˆKØ˜\Ð)Ð)Ø˜A”w�Ø)¨!œn�Øð ÝÐ}¥e¨L¸Ô,=¸gÔ,FÈÑ&JÔ&JÐ}Ð}ÕQVÐWcÐdgÔWhÐinÔWoÐqrÑQsÔQsÐ}Ð}Ðw{Ð}Ð}Ñ~Ô~Ð~Ø�OŠOà Ý" <°Ô#4°WÔ#=¸qÑAÔAÝ  ¨cÔ!2°5Ô!9¸1Ñ=Ô=Ø#.ð	ð ñô ð ñ ð ÔÐ'Ø!ˆDŒNð Ô!ð 	[Ý" 4¤<ÐAYÐZÑZÔZˆDŒLà$°(Ð;Ð;Ð;r   c                 ó,  — |j         d         t          k     rt                               d¦  «         | j        j                             d¦  «        }t          |d t          …         |�|nd|j         d         t          k    rdnt          |j         d         z
  ¬¦  «        }| j                             |¦  «        }| j        j         	                    |¦  «        }|d         d         \  }}|dd…         }t           
                    d|› d	|d
›d�¦  «         |S )Nr   z?Audio is shorter than 30s, language detection may be inaccurater˜   r™   rš   rh   éþÿÿÿzDetected language: z (rÕ   z) in first 30s of audio)rL   r   rß   ÚwarningrR   r�   rž   r   rO   rÛ   rà   )	rX   rŸ   r    ÚsegmentrY   ÚresultsÚlanguage_tokenÚlanguage_probabilityr{   s	            r   rÛ   z%FasterWhisperPipeline.detect_language,  s  € ØŒ;�qŒ>�IÒ%Ð%Ý�NŠNÐ\Ñ]Ô]Ð]Ø”zÔ-×1Ò1°.ÑAÔAˆÝ% e¨K­i¨KÔ&8Ø=IÐ=U¨\¨\Ð[]Ø38´;¸q´>ÅYÒ3NÐ3N¨a¨aÕT]Ð`eÔ`kÐlmÔ`nÑTnðpñ pô pˆð œ×*Ò*¨7Ñ3Ô3ˆØ”*Ô"×2Ò2°>ÑBÔBˆØ/6°q¬z¸!¬}Ñ,ˆÐ,Ø! ! B $Ô'ˆÝ�ŠÐg¨(ÐgÐgÐ6JÐgÐgÐgÐgÑhÔhÐhØˆr   )Nrx   ry   NF)	Nr   NNrÁ   FFFN)ro   rp   rq   rr   r-   Údictr   r   r   r   rV   rW   Úboolr�   r„   r¡   r¥   r¨   rÀ   rl   rs   r   r   rÒ   rÛ   Ú__classcell__)r’   s   @r   rw   rw   j   sð  ø€ € € € € ðð ð *.Ø24ØØ"&Ø"'ð%&ð %&àð%&ð ð	%&ð
 &ð%&ð ˜IÔ&ð%&ð �c˜3 Ð.Ô/ð%&ð ˜3”-ð%&ð  ð%&ð %&ð %&ð %&ð %&ð %&ðN)ð )ð )ð$ð $ð $ðð ð ðð ð ðð ðð ð	ð
  ðð ðð !ðð ð ð ð0 %)ØØ"&Ø"ØØØØØ.2ðe<ð e<à�S˜"œ*�_Ô%ðe<ð ˜S”Mðe<ð
 ˜3”-ðe<ð �sŒmðe<ð ,ðe<ð 
ðe<ð e<ð e<ð e<ðN R¤Zð °Cð ð ð ð ð ð ð ð r   rw   ÚdefaultÚpyannoterÒ   Fé   Úwhisper_archrj   Úasr_optionsr{   rŽ   Ú
vad_methodÚvad_optionsrR   Údownload_rootÚuse_auth_tokenrD   c                 ó‚  — |dk    r*|dk    rdnd}t                                d|› d|› �¦  «         |                      d¦  «        rd}|	pt          | |||||||¬	¦  «        }	|�#t	          |	j        |	j        j        |
|¬¦  «        }nt                                d¦  «         d
}i dd“dd“dd“dd“dd“dd“dg d¢“dd“dd“dd“dd“d d!“d"d
“d#d
“d$d%“d&d'g“d(d%“d)dd*d+|	j        j        dd
d
d
d
d,œ
¥}|�|                     |¦  «         |d-         }|d-= t          d8i |¤Ž}d.d!d/d0œ}|�|                     |¦  «         |�t          d1¦  «         |}n[|d2k    rt          d8i |¤Ž}nH|d3k    r0|dk    rd4|› �}n|}t          t          j        |¦  «        fd5d
i|¤Ž}nt          d6|› �¦  «        ‚t!          |	||||||¬7¦  «        S )9aâ  Load a Whisper model for inference.
    Args:
        whisper_arch - The name of the Whisper model to load.
        device - The device to load the model on.
        compute_type - The compute type to use for the model.
            Use "default" to automatically select based on device (float16 for GPU, float32 for CPU).
        vad_model - The vad model to manually assign.
        vad_method - The vad method to use. vad_model has a higher priority if it is not None.
        options - A dictionary of options to use for the model.
        language - The language of the model. (use English for now)
        model - The WhisperModel instance to use.
        download_root - The root directory to download the model to.
        local_files_only - If `True`, avoid downloading the file and return the path to the local cached file if it exists.
        threads - The number of cpu threads to use per worker, e.g. will be multiplied by num workers.
    Returns:
        A Whisper pipeline.
    rý   rg   Úfloat16Úfloat32z*Compute type not specified, defaulting to z for device z.enÚen)rj   rk   Úcompute_typer  Úlocal_files_onlyÚcpu_threadsr  NrÓ   z_No language specified, language will be detected for each audio file (increases inference time)r4   é   Úbest_ofr5   rB   r6   r;   r:   r   Útemperatures)ç        gš™™™™™É?gš™™™™™Ù?ç333333ã?gš™™™™™é?g      ð?Úcompression_ratio_thresholdg333333@Úlog_prob_thresholdg      ð¿Úno_speech_thresholdr  Úcondition_on_previous_textFÚprompt_reset_on_temperatureg      à?rM   r2   r8   Tr9   rx   r1   r  u   "'â€œÂ¿([{-u   "'.ã€‚,ï¼Œ!ï¼�?ï¼Ÿ:ï¼šâ€�)]}ã€�)
Úmax_initial_timestampÚword_timestampsÚprepend_punctuationsÚappend_punctuationsÚmultilingualr|   Úmax_new_tokensÚclip_timestampsÚhallucination_silence_thresholdr3   r|   rÁ   g¬Zd;×?)rç   rÎ   rÏ   z7Use manually assigned vad_model. vad_method is ignored.Úsilerorþ   r   r)   zInvalid vad_method: )rR   r�   r/   r&   r{   r|   rz   r   )rß   rà   Úendswithr-   r   rÜ   rR   rÝ   Úupdater   rå   r   r   r‹   rj   Ú
ValueErrorrw   )r   rj   rk   r
  r  r{   rŽ   r  r  rR   rÂ   r  r  Úthreadsr  r&   Údefault_asr_optionsr|   Údefault_vad_optionsÚ
device_vads                       r   Ú
load_modelr'  ;  s0  € ðF �yÒ Ð Ø$*¨fÒ$4Ð$4�y�y¸)ˆÝ�ŠÐcÀÐcÐcÐ[aÐcÐcÑdÔdÐdà×Ò˜UÑ#Ô#ð Øˆàð 8•\ ,Ø &Ø&2Ø&2Ø'4Ø*:Ø%,Ø(6ð8ñ 8ô 8€Eð ÐÝ˜eÔ0°%´+Ô2MÐTXÐckÐlÑlÔlˆ	ˆ	å�ŠÐuÑvÔvÐvØˆ	ðØ�Qðà�1ðð 	�Aðð 	˜!ð	ð
 	˜aðð 	 ðð 	Ð6Ð6Ð6ðð 	& sðð 	˜dðð 	˜sðð 	% eðð 	& sðð 	˜$ðð 	�$ðð 	˜$ðð  	˜B˜4ð!ð" 	˜dð#ð$ "%Ø Ø .ØAØœÔ3Ø"ØØØ+/Øð7ð ð Ðð< ÐØ×"Ò" ;Ñ/Ô/Ð/à+Ð,?Ô@ÐØÐ/Ð0å.ÐEÐEÐ1DÐEÐEÐð ØØðð Ðð ÐØ×"Ò" ;Ñ/Ô/Ð/ð ÐÝÐGÑHÔHÐHØˆ	ˆ	à˜Ò!Ð!ÝÐ5Ð5Ð!4Ð5Ð5ˆIˆIØ˜:Ò%Ð%Ø˜ÒÐØ3 \Ð3Ð3�
�
à#�
Ý ¥¤¨jÑ!9Ô!9Ð]Ð]ÀÐ]ÐI\Ð]Ð]ˆIˆIåÐ@°JÐ@Ð@ÑAÔAÐAå ØØØ#ØØØ+Ø&ðñ ô ð r   )r   rý   NNNrþ   NNrÒ   NFrÿ   N)-r¶   Útypingr   r   r   Údataclassesr   rt   Úfaster_whisperÚnumpyrl   r‹   Úfaster_whisper.tokenizerr   Úfaster_whisper.transcriber   r	   Útransformersr
   Útransformers.pipelines.pt_utilsr   Úwhisperx.audior   r   r   r   Úwhisperx.schemar   r   r   Úwhisperx.vadsr   r   r   Úwhisperx.log_utilsr   ro   rß   r+   r-   rw   rW   rú   rû   r'  r   r   r   ú<module>r4     s¥  ðØ 	€	€	€	Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ !Ð !Ð !Ð !Ð !Ð !Ø <Ð <Ð <Ð <Ð <Ð <à RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø )Ð )Ð )Ð )Ð )Ð )à	ˆ�HÑ	Ô	€ð!ð !ð !ðI:ð I:ð I:ð I:ð I:�>Ô.ñ I:ô I:ð I:ðVNð Nð Nð Nð N˜Hñ Nô Nð Nðh ØØ"&Ø"Ø"Ø *Ø"&Ø$(Ø	Ø#'ØØØ15ðð Øðàðð
 ˜$”ðð �sŒmðð ˜Œ}ðð ˜”ðð ˜$”ðð �LÔ!ðð ˜C”=ðð ˜U 3¨ 9Ô-Ô.ðð  ð!ð ð ð ð ð r   