§
    ÷óÉj: ã            	       óª  — 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mZ d dlm	Z	 d dl
mZ d dlmZmZmZ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mZ d dlmZmZ d d	lmZ d d
lm Z m!Z! d dl"m#Z#m$Z$m%Z%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+ e G d„ d¦  «        ¦   «         Z,e G d„ d¦  «        ¦   «         Z-e G d„ d¦  «        ¦   «         Z.e G d„ d¦  «        ¦   «         Z/ G d„ d¦  «        Z0 G d„ d¦  «        Z1dee-         dee2         de3dee-         fd„Z4dej5        dej6        fd„Z7d e8de9fd!„Z:d"e!d#ee3         deee3                  fd$„Z;d%ee2         d&e8d'e8ddfd(„Z<dS ))é    N)ÚasdictÚ	dataclass)Ú	signature)Úceil)ÚBinaryIOÚIterableÚListÚOptionalÚTupleÚUnion)Úwarn)Útqdm)Údecode_audioÚpad_or_trim)ÚFeatureExtractor)Ú_LANGUAGE_CODESÚ	Tokenizer)Údownload_modelÚformat_timestampÚget_endÚ
get_logger)ÚSpeechTimestampsMapÚ
VadOptionsÚcollect_chunksÚget_speech_timestampsc                   ó>   — e Zd ZU eed<   eed<   eed<   eed<   d„ ZdS )ÚWordÚstartÚendÚwordÚprobabilityc                 óL   — t          dt          d¦  «         t          | ¦  «        S )NzIWord._asdict() method is deprecated, use dataclasses.asdict(Word) insteadé   ©r   ÚDeprecationWarningr   ©Úselfs    ú|/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib/python3.11/site-packages/faster_whisper/transcribe.pyÚ_asdictzWord._asdict&   s+   € ÝØWÝØñ	
ô 	
ð 	
õ
 �d‰|Œ|Ðó    N)Ú__name__Ú
__module__Ú__qualname__ÚfloatÚ__annotations__Ústrr)   © r*   r(   r   r      sL   € € € € € € à€L€L�LØ	€J€J�JØ
€I€I�IØÐÐÑðð ð ð ð r*   r   c                   ó´   — e Zd ZU eed<   eed<   eed<   eed<   eed<   ee         ed<   eed<   eed<   eed	<   eee	                  ed
<   ee         ed<   d„ Z
dS )ÚSegmentÚidÚseekr   r   ÚtextÚtokensÚavg_logprobÚcompression_ratioÚno_speech_probÚwordsÚtemperaturec                 óL   — t          dt          d¦  «         t          | ¦  «        S )NzOSegment._asdict() method is deprecated, use dataclasses.asdict(Segment) insteadr#   r$   r&   s    r(   r)   zSegment._asdict=   s+   € ÝØ]ÝØñ	
ô 	
ð 	
õ
 �d‰|Œ|Ðr*   N)r+   r,   r-   Úintr/   r.   r0   r	   r
   r   r)   r1   r*   r(   r3   r3   /   s«   € € € € € € à€G€G�GØ
€I€I�IØ€L€L�LØ	€J€J�JØ
€I€I�IØ�ŒIÐÐÑØÐÐÑØÐÐÑØÐÐÑØ�D˜”JÔÐÐÑØ˜%”Ð Ð Ñ ðð ð ð ð r*   r3   c                   óÐ  — e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   ee         ed<   ee         ed<   ee         ed	<   eed
<   eed<   ee         ed<   ee	e
ee         f                  ed<   ee
         ed<   eed<   eee                  ed<   eed<   eed<   eed<   e
ed<   e
ed<   eed<   ee         ed<   e	e
ee         f         ed<   ee         ed<   ee
         ed<   dS )ÚTranscriptionOptionsÚ	beam_sizeÚbest_ofÚpatienceÚlength_penaltyÚrepetition_penaltyÚno_repeat_ngram_sizeÚlog_prob_thresholdÚno_speech_thresholdÚcompression_ratio_thresholdÚcondition_on_previous_textÚprompt_reset_on_temperatureÚtemperaturesÚinitial_promptÚprefixÚsuppress_blankÚsuppress_tokensÚwithout_timestampsÚmax_initial_timestampÚword_timestampsÚprepend_punctuationsÚappend_punctuationsÚmultilingualÚmax_new_tokensÚclip_timestampsÚhallucination_silence_thresholdÚhotwordsN)r+   r,   r-   r>   r/   r.   r
   Úboolr	   r   r0   r   r1   r*   r(   r@   r@   F   s‹  € € € € € € à€N€N�NØ€L€L�LØ€O€O�OØÐÐÑØÐÐÑØÐÐÑØ  œÐ'Ð'Ñ'Ø! %œÐ(Ð(Ñ(Ø!)¨%¤Ð0Ð0Ñ0Ø $Ð$Ð$Ñ$Ø!&Ð&Ð&Ñ&Ø�u”+ÐÐÑØ˜U 3¨°¬Ð#5Ô6Ô7Ð7Ð7Ñ7Ø�SŒMÐÐÑØÐÐÑØ˜d 3œiÔ(Ð(Ð(Ñ(ØÐÐÑØ Ð Ð Ñ ØÐÐÑØÐÐÑØÐÐÑØÐÐÑØ˜S”MÐ!Ð!Ñ!Ø˜3  U¤Ð+Ô,Ð,Ð,Ñ,Ø%-¨e¤_Ð4Ð4Ñ4Ø�sŒmÐÐÑÐÐr*   r@   c                   ó~   — e Zd ZU eed<   eed<   eed<   eed<   eeeeef                           ed<   e	ed<   e
ed<   dS )	ÚTranscriptionInfoÚlanguageÚlanguage_probabilityÚdurationÚduration_after_vadÚall_language_probsÚtranscription_optionsÚvad_optionsN)r+   r,   r-   r0   r/   r.   r
   r	   r   r@   r   r1   r*   r(   r]   r]   d   ss   € € € € € € à€M€M�MØÐÐÑØ€O€O�OØÐÐÑØ   e¨C°¨JÔ&7Ô!8Ô9Ð9Ð9Ñ9Ø/Ð/Ð/Ñ/ØÐÐÑÐÐr*   r]   c            M       óz  — e Zd Zd„ Zd„ Zdej        dedefd„Z	ddd	d
d
ddddg 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f#de
eeej        f         dee         dedededededed ed!ed"e
eee         eed#f         f         d$ee         d%ee         d&ee         d'ed(ed)ee
eee         f                  d*ee         d+ed,eee                  d-ed.ed/ed0ed1ed2ed3ed4ee
eef                  d5ee         d6ee         d7eee                  d8ee         d9ed:ee         d;ee         d<ed=eee         ef         fJd>„Zd?„ ZdS )@ÚBatchedInferencePipelinec                 ó"   — || _         d| _        d S )Nç        )ÚmodelÚlast_speech_timestamp)r'   ri   s     r(   Ú__init__z!BatchedInferencePipeline.__init__p   s   € ð $)ˆŒ
Ø%(ˆÔ"Ð"Ð"r*   c           	      ó   ‡ ‡‡‡— ‰                       |‰|¦  «        \  }}g }g }t          ||¦  «        D ]Ÿ\  ŠŠ‰d         }	t          t          |	¦  «        ‰ j        j        z  ¦  «        }
|                     |
¦  «         ‰ j                             ‰‰d         ‰d         |
|	d¬¦  «        \  }}}|                     ˆˆˆ ˆfd„|D ¦   «         ¦  «         Œ |j        r4‰ j         	                    |‰|||j
        |j        ‰ j        ¦  «        ‰ _        |S )Nr`   r7   Úoffsetr   ©Ú	tokenizerr7   Útime_offsetÚsegment_sizeÚsegment_durationr5   c                 ó8  •— g | ]–}t          ‰                     |d          ¦  «        ‰d         ‰d         |d          |d         |d         t          ‰                     |d          ¦  «        ¦  «        t          ‰d         ‰j        j        z  ¦  «        ¬¦  «        ‘Œ—S )r7   r8   r:   r   r   rm   )r6   r8   r:   r7   r   r   r9   r5   )ÚdictÚdecodeÚget_compression_ratior>   ri   Úframes_per_second)Ú.0Ú
subsegmentÚchunk_metadataÚoutputr'   ro   s     €€€€r(   ú
<listcomp>z4BatchedInferencePipeline.forward.<locals>.<listcomp>�   s½   ø€ ð ð ð ð #õ Ø&×-Ò-¨j¸Ô.BÑCÔCØ$*¨=Ô$9Ø'-Ð.>Ô'?Ø)¨(Ô3Ø(¨Ô1Ø& uÔ-Ý*?Ø%×,Ò,¨Z¸Ô-AÑBÔBñ+ô +õ !Ø*¨8Ô4°t´zÔ7SÑSñô ðñ ô ðð ð r*   )Úgenerate_segment_batchedÚzipr>   r   ri   rw   ÚappendÚ_split_segments_by_timestampsrS   Úadd_word_timestampsrT   rU   rj   )r'   Úfeaturesro   Úchunks_metadataÚoptionsÚencoder_outputÚoutputsÚsegmented_outputsÚsegment_sizesr`   rq   Úsubsegmentsr5   Úsingle_timestamp_endingrz   r{   s   ` `           @@r(   Úforwardz BatchedInferencePipeline.forwardw   sv  øøøø€ Ø"&×"?Ò"?Ø�i ñ#
ô #
Ñˆ˜ð ÐØˆÝ&)¨/¸7Ñ&CÔ&Cð "	ð "	Ñ"ˆN˜FØ% jÔ1ˆHÝ�t H™~œ~°´
Ô0LÑLÑMÔMˆLØ× Ò  Ñ.Ô.Ð.ð
 ”
×8Ò8Ø#Ø˜hÔ'Ø*¨8Ô4Ø)Ø!)Øð 9ñ ô ñ	ØØØ'ð ×$Ò$ðð ð ð ð ð ð ð '2ðñ ô ñô ð ð ð& Ô"ð 		Ø)-¬×)GÒ)GØ!ØØØØÔ,ØÔ+ØÔ*ñ*ô *ˆDÔ&ð !Ð r*   r‚   ro   r„   c                 ó®  ‡‡— |j         d         }| j                             ‰|j        �‰                     |j        ¦  «        ng |j        |j        ¬¦  «        Š|j        �t          ‰¦  «        |j        z   }n| j        j	        }|| j        j	        k    rPt          dt          ‰¦  «        › d|t          ‰¦  «        z
  › d|› d| j        j	        › d| j        j	        › d�¦  «        ‚| j                             |¦  «        }ˆfd	„t          |¦  «        D ¦   «         }|j        reˆfd
„| j        j                             |¦  «        D ¦   «         }‰                     ‰j        ¦  «        }	t!          |¦  «        D ]\  }
}|||
         |	<   Œ| j        j                             |||j        |j        |j        ||j        |j        dd|j        d         |j        |j        ¬¦  «        }g }|D ]o}t          |j        d         ¦  «        }|j        d         ||j        z  z  }|                     t;          ||dz   z  |j        |j        d         ¬¦  «        ¦  «         Œp||fS )Nr   )Úprevious_tokensrQ   rZ   úThe length of the prompt is ú, and the `max_new_tokens` úC. Thus, the combined length of the prompt and `max_new_tokens` is: ú6. This exceeds the `max_length` of the Whisper model: úŠ. You should either reduce the length of your prompt, or reduce the value of `max_new_tokens`, so that their combined length is less that ú.c                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r1   )Úcopy)rx   Ú_Úprompts     €r(   r|   zEBatchedInferencePipeline.generate_segment_batched.<locals>.<listcomp>Ò   s!   ø€ Ð<Ð<Ð< Q�6—;’;‘=”=Ð<Ð<Ð<r*   c                 ó\   •— g | ](}‰j                              |d          d          ¦  «        ‘Œ)S ©r   )ro   Útoken_to_id)rx   Úsegment_langsro   s     €r(   r|   zEBatchedInferencePipeline.generate_segment_batched.<locals>.<listcomp>Õ   sD   ø€ ð ð ð à!ð Ô#×/Ò/°¸aÔ0@ÀÔ0CÑDÔDðð ð r*   T)rA   rC   rD   Ú
max_lengthrO   rP   Úreturn_scoresÚreturn_no_speech_probÚsampling_temperaturerE   rF   é   )r8   r:   r7   )Úshaperi   Ú
get_promptrM   ÚencoderQ   rZ   rW   Úlenrœ   Ú
ValueErrorÚrangerV   Údetect_languageÚindexr^   Ú	enumerateÚgeneraterA   rC   rD   rO   rP   rL   rE   rF   Úsequences_idsÚscoresr   rt   r:   )r'   r‚   ro   r„   Ú
batch_sizerœ   r…   ÚpromptsÚlanguage_tokensÚlanguage_token_indexÚiÚlanguage_tokenÚresultsr{   ÚresultÚseq_lenÚcum_logprobr—   s     `              @r(   r}   z1BatchedInferencePipeline.generate_segment_batched®   sê  øø€ ð ”^ AÔ&ˆ
à”×&Ò&Øð Ô)Ð5ð × Ò  Ô!7Ñ8Ô8Ð8àà&Ô9ØÔ%ð 'ñ 	
ô 	
ˆð Ô!Ð-Ý˜V™œ wÔ'=Ñ=ˆJˆJàœÔ.ˆJà˜œ
Ô-Ò-Ð-ÝðW­s°6©{¬{ð Wð WØ¥ F¡¤Ñ+ðWð Wà,6ðWð Wð 7;´jÔ6KðWð Wð ?C¼jÔ>SðWð Wð Wñô ð ð œ×*Ò*¨8Ñ4Ô4ˆØ<Ð<Ð<Ð<­%°
Ñ*;Ô*;Ð<Ñ<Ô<ˆàÔð 	Bðð ð ð à%)¤ZÔ%5×%EÒ%EÀnÑ%UÔ%Uðñ ô ˆOð $*§<¢<°	Ô0BÑ#CÔ#CÐ å%.¨Ñ%?Ô%?ð Bð BÑ!��>Ø3A�˜”
Ð/Ñ0Ð0à”*Ô"×+Ò+ØØØÔ'ØÔ%Ø"Ô1Ø!Ø"Ô1Ø#Ô3ØØ"&Ø!(Ô!5°aÔ!8Ø&Ô9Ø!(Ô!=ð ,ñ 
ô 
ˆð  ˆØð 	ð 	ˆFå˜&Ô.¨qÔ1Ñ2Ô2ˆGØ œ-¨Ô*¨g°wÔ7MÑ.MÑNˆKà�MŠMÝØ +¨w¸©{Ñ ;Ø#)Ô#8Ø!Ô/°Ô2ðñ ô ñô ð ð ð ˜vÐ%Ð%r*   NÚ
transcribeFé   r    r   ©rh   gš™™™™™É?gš™™™™™Ù?ç333333ã?gš™™™™™é?ç      ð?ç333333@ç      ð¿rº   Tç      à?éÿÿÿÿr»   õ   "'â€œÂ¿([{-õ   "'.ã€‚,ï¼Œ!ï¼�?ï¼Ÿ:ï¼šâ€�)]}ã€�é   Úaudior^   ÚtaskÚlog_progressrA   rB   rC   rD   rE   rF   r<   .rI   rG   rH   rJ   rK   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   Ú
vad_filterÚvad_parametersrW   Úchunk_lengthrX   rY   r­   rZ   Úlanguage_detection_thresholdÚlanguage_detection_segmentsÚreturnc%           
      ó	  ‡ ‡4— ‰ j         j        j        Š4|r2‰ j         j         j        s!‰ j         j                             d¦  «         d}t          |t          j        ¦  «        st          |‰4¬¦  «        }|j
        d         ‰4z  }%‰ j         j                             dt          |%¦  «        ¦  «         |p‰ j         j        j        }|s¶|ru|€t          |d¬¦  «        }nPt          |t          ¦  «        r;d	|                     ¦   «         v r|                     d	¦  «         t          d?i |¤d	|i¤Ž}t%          ||¦  «        }n'|%|k     rd|j
        d         d
œg}nt'          d¦  «        ‚d}&t)          |||¬¦  «        \  }'}(n¯d}&ˆ4fd„|D ¦   «         }g g }(}'t+          |¦  «        D ]‹\  })}*|'                     ||*d         |*d         …         ¦  «         |*d         |*d         z
  ‰4z  }+|+dk    r ‰ j         j                             d|)¦  «         |(                     |*d         ‰4z  |+|*gdœ¦  «         ŒŒt/          d„ |D ¦   «         ¦  «        ‰4z  },‰ j         j                             dt          |%|,z
  ¦  «        ¦  «         |,rˆ fd„|'D ¦   «         ng }-d}.|€—‰ j         j         j        sd}d}/n¾‰ j                              t          j        |-t          j        ‰ j         j         j        dfdd¬¦  «        gz   d¬¦  «        |$|#¬¦  «        \  }}/}.‰ j         j                             d||/¦  «         n=‰ j         j         j        s*|dk    r$‰ j         j                             d|z  ¦  «         d}d}/t9          ‰ j         j        ‰ j         j         j        ||¬ ¦  «        }0|-rt          j        d!„ |-D ¦   «         ¦  «        ng }-t?          d?i d"|“d#|“d$|“d%|“d&|	“d'|
“d(|“d)|“d*|“d+t          |t@          tB          f¦  «        r
|dd…         n|g“d,|“d-|“d.|“d/|rtE          |0|¦  «        n|“d0|“d1|“d2|“d3|"“d4|“d5d“d6d“d7|“d8d9“d:|“d;|“d<d=“Ž}1tG          ||/|%|,|1||.¬>¦  «        }2‰  $                    |-|0|(|!|1|¦  «        }3|&stK          |3|‰4¦  «        }3|3|2fS )@at  transcribe audio in chunks in batched fashion and return with language info.

        Arguments:
            audio: Path to the input file (or a file-like object), or the audio waveform.
            language: The language spoken in the audio. It should be a language code such
                as "en" or "fr". If not set, the language will be detected in the first 30 seconds
                of audio.
            task: Task to execute (transcribe or translate).
            log_progress: whether to show progress bar or not.
            beam_size: Beam size to use for decoding.
            best_of: Number of candidates when sampling with non-zero temperature.
            patience: Beam search patience factor.
            length_penalty: Exponential length penalty constant.
            repetition_penalty: Penalty applied to the score of previously generated tokens
                (set > 1 to penalize).
            no_repeat_ngram_size: Prevent repetitions of ngrams with this size (set 0 to disable).
            temperature: Temperature for sampling. If a list or tuple is passed,
                only the first value is used.
            initial_prompt: Optional text string or iterable of token ids to provide as a
                prompt for the each window.
            suppress_blank: Suppress blank outputs at the beginning of the sampling.
            suppress_tokens: List of token IDs to suppress. -1 will suppress a default set
                of symbols as defined in `tokenizer.non_speech_tokens()`.
            without_timestamps: Only sample text tokens.
            word_timestamps: Extract word-level timestamps using the cross-attention pattern
                and dynamic time warping, and include the timestamps for each word in each segment.
                Set as False.
            prepend_punctuations: If word_timestamps is True, merge these punctuation symbols
                with the next word
            append_punctuations: If word_timestamps is True, merge these punctuation symbols
                with the previous word
            multilingual: Perform language detection on every segment.
            vad_filter: Enable the voice activity detection (VAD) to filter out parts of the audio
                without speech. This step is using the Silero VAD model
                https://github.com/snakers4/silero-vad.
            vad_parameters: Dictionary of Silero VAD parameters or VadOptions class (see available
                parameters and default values in the class `VadOptions`).
            max_new_tokens: Maximum number of new tokens to generate per-chunk. If not set,
                the maximum will be set by the default max_length.
            chunk_length: The length of audio segments. If it is not None, it will overwrite the
                default chunk_length of the FeatureExtractor.
            clip_timestamps: Optionally provide list of dictionaries each containing "start" and
                "end" keys that specify the start and end of the voiced region within
                `chunk_length` boundary. vad_filter will be ignored if clip_timestamps is used.
            batch_size: the maximum number of parallel requests to model for decoding.
            hotwords:
                Hotwords/hint phrases to the model. Has no effect if prefix is not None.
            language_detection_threshold: If the maximum probability of the language tokens is
                higher than this value, the language is detected.
            language_detection_segments: Number of segments to consider for the language detection.

        Unused Arguments
            compression_ratio_threshold: If the gzip compression ratio is above this value,
                treat as failed.
            log_prob_threshold: If the average log probability over sampled tokens is
                below this value, treat as failed.
            no_speech_threshold: If the no_speech probability is higher than this value AND
                the average log probability over sampled tokens is below `log_prob_threshold`,
                consider the segment as silent.
            condition_on_previous_text: 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. Set as False
            prompt_reset_on_temperature: Resets prompt if temperature is above this value.
                Arg has effect only if condition_on_previous_text is True. Set at 0.5
            prefix: Optional text to provide as a prefix at the beginning of each window.
            max_initial_timestamp: The initial timestamp cannot be later than this, set at 0.0.
            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. set as None.
        Returns:
          A tuple with:

            - a generator over transcribed segments
            - an instance of TranscriptionInfo
        úiThe current model is English-only but the multilingual parameter is set toTrue; setting to False instead.F©Úsampling_rater   ú!Processing audio with duration %sNé    )Úmax_speech_duration_sÚmin_silence_duration_msrÒ   )r   r   zPNo clip timestamps found. Set 'vad_filter' to True or provide 'clip_timestamps'.)Úmax_durationTc                 óP   •— g | ]"}ˆfd „|                      ¦   «         D ¦   «         ‘Œ#S )c                 ó<   •— i | ]\  }}|t          |‰z  ¦  «        “ŒS r1   )r>   )rx   ÚkÚvrÏ   s      €r(   ú
<dictcomp>zBBatchedInferencePipeline.transcribe.<locals>.<listcomp>.<dictcomp>­  s,   ø€ ÐGÐGÐG©t¨q°!�•C˜˜MÑ)Ñ*Ô*ÐGÐGÐGr*   )Úitems)rx   ÚsegmentrÏ   s     €r(   r|   z7BatchedInferencePipeline.transcribe.<locals>.<listcomp>¬  sF   ø€ ð ð ð àð HÐGÐGÐG°w·}²}±´ÐGÑGÔGðð ð r*   r   r   é   zSSegment %d is longer than 30 seconds, only the first 30 seconds will be transcribed)rm   r`   Úsegmentsc              3   ó8   K  — | ]}|d          |d         z
  V — ŒdS )r   r   Nr1   )rx   rÛ   s     r(   ú	<genexpr>z6BatchedInferencePipeline.transcribe.<locals>.<genexpr>Æ  s0   è è € ÐSÐS¸�˜” '¨'Ô"2Ñ2ÐSÐSÐSÐSÐSÐSr*   úVAD filter removed %s of audioc                 óX   •— g | ]&}‰j                              |¦  «        d dd…f         ‘Œ'S ).Nr¿   )ri   Úfeature_extractor)rx   Úchunkr'   s     €r(   r|   z7BatchedInferencePipeline.transcribe.<locals>.<listcomp>Ð  s6   ø€ ÐUÐUÐU¸uˆTŒZ×)Ò)¨%Ñ0Ô0°°c°r°c°Ô:ÐUÐUÐUr*   Úenr    g      ø¿Úfloat32)Údtype©Úaxis©r‚   rÊ   rÉ   ú,Detected language '%s' with probability %.2fú`The current model is English-only but the language parameter is set to '%s'; using 'en' instead.©rÄ   r^   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r1   )r   )rx   Úfeatures     r(   r|   z7BatchedInferencePipeline.transcribe.<locals>.<listcomp>  s    € ÐCÐCÐC¨w•k 'Ñ*Ô*ÐCÐCÐCr*   rA   rB   rC   rD   rE   rF   rG   rH   rI   rL   rM   rN   rO   rP   rT   rU   rW   rZ   rS   rY   rJ   rX   rK   r¾   rV   rQ   rR   rh   ©r^   r_   r`   ra   rc   rd   rb   r1   )&ri   râ   rÏ   Úis_multilingualÚloggerÚwarningÚ
isinstanceÚnpÚndarrayr   r¡   Úinfor   rÈ   r   rt   ÚkeysÚpopr   ÚRuntimeErrorr   r©   r   Úsumr§   ÚconcatenateÚfullÚn_melsr   Úhf_tokenizerÚstackr@   ÚlistÚtupleÚget_suppressed_tokensr]   Ú_batched_segments_generatorÚrestore_speech_timestamps)5r'   rÃ   r^   rÄ   rÅ   rA   rB   rC   rD   rE   rF   r<   rI   rG   rH   rJ   rK   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rÆ   rÇ   rW   rÈ   rX   rY   r­   rZ   rÉ   rÊ   r`   Úclip_timestamps_providedÚaudio_chunksrƒ   r±   ÚclipÚclip_durationra   r‚   rb   r_   ro   r„   rö   rÝ   rÏ   s5   `                                                   @r(   r·   z#BatchedInferencePipeline.transcribeþ   s  øø€ ðv œ
Ô4ÔBˆàð 	! ¤
Ô 0Ô @ð 	!ØŒJÔ×%Ò%ð2ñô ð ð !ˆLå˜%¥¤Ñ,Ô,ð 	EÝ  °mÐDÑDÔDˆEØ”;˜q”> MÑ1ˆàŒ
Ô×ÒØ/Õ1AÀ(Ñ1KÔ1Kñ	
ô 	
ð 	
ð $ÐP t¤zÔ'CÔ'Pˆàð 7	Øð Ø!Ð)Ý%/Ø.:Ø03ð&ñ &ô &�N�Nõ   µÑ5Ô5ð Ø.°.×2EÒ2EÑ2GÔ2GÐGÐGØ&×*Ò*Ð+BÑCÔCÐCå%/ð &ð &Ø(ð&ð &Ø@Lð&ð &ð &�Nõ #8¸¸~Ñ"NÔ"N��à˜LÒ(Ð(Ø-.°u´{À1´~Ð#FÐ#FÐ"G��å"ðMñô ð ð
 (-Ð$Ý,:Ø�°\ð-ñ -ô -Ñ)ˆL˜/˜/ð
 (,Ð$ðð ð ð à.ðñ ô ˆOð
 -/°˜/ˆLÝ$ _Ñ5Ô5ð ð ‘��4Ø×#Ò# E¨$¨w¬-¸$¸u¼+Ð*EÔ$FÑGÔGÐGà!% e¤¨t°G¬}Ñ!<ÀÑ M�Ø  2Ò%Ð%Ø”JÔ%×-Ò-ðHàñô ð ð  ×&Ò&à"& w¤-°-Ñ"?Ø$1Ø%) Fðð ñô ð ð õ ÐSÐSÀ?ÐSÑSÔSÑSÔSØñð 	ð
 	Œ
Ô×ÒØ,Ý˜XÐ(:Ñ:Ñ;Ô;ñ	
ô 	
ð 	
ð "ðÐUÐUÐUÐUÈÐUÑUÔUÐUàð 	ð "ÐàÐØ”:Ô#Ô3ð Ø�Ø'(Ð$Ð$ð ”J×.Ò.Ýœ^Ø åœG T¤ZÔ%5Ô%<¸aÐ$@À$ÈiÐXÑXÔXðñð ðñ ô ð 1LØ1Mð /ñ 
ô 
ñ	ØØ(Ø&ð ”
Ô!×&Ò&ØBØØ(ñô ð ð ð ”:Ô#Ô3ð  ¸ÀDÒ8HÐ8HØ”
Ô!×)Ò)ð*Ø,4ñ5ñô ð ð  �à#$Ð åØŒJÔ#ØŒJÔÔ,ØØð	
ñ 
ô 
ˆ	ð IQÐX�BŒHÐCÐC¸(ÐCÑCÔCÑDÔDÐDÐVXð 	õ 'ð #
ð #
ð #
Ø�ið#
à�Gð#
ð �Xð#
ð *˜>ð	#
ð
  2Ð1ð#
ð "6Ð!5ð#
ð  2Ð1ð#
ð !4Ð 3ð#
ð )DÐ(Cð#
õ ˜k­Dµ%¨=Ñ9Ô9ð#�˜B˜Q˜B”�à!�]øð#
ð *˜>ð#
ð  �6ð!#
ð" *˜>ð##
ð( #ð%Õ% i°ÑAÔAÐAà$øð+#
ð. "6Ð!5ð/#
ð0 !4Ð 3ð1#
ð2 *˜>ð3#
ð4 �Xð5#
ð6 ,˜Oð7#
ð8 -1¨Dð9#
ð: (- uð;#
ð< ,˜Oð=#
ð> ),¨ð?#
ð@ &˜ðA#
ðB  2Ð1ðC#
ðD #& #ðE#
ˆõJ !ØØ!5ØØ1Ø")Ø&Ø1ð
ñ 
ô 
ˆð ×3Ò3ØØØØØØñ
ô 
ˆð (ð 	Ý0Ø˜/¨=ñô ˆHð ˜ˆ~Ðr*   c              #   ó‚  K  — t          t          |¦  «        | d¬¦  «        }d}t          dt          |¦  «        |¦  «        D ]à}	|                      ||	|	|z   …         |||	|	|z   …         |¦  «        }
|
D ]­}|D ]“}|dz  }t	          |d         ||d         t          |d         d¦  «        t          |d         d¦  «        |j        sd nd	„ |d
         D ¦   «         |d         |d         |d         |d         |j        d         ¬¦  «        V — Œ”|                     d¦  «         Œ®Œá| 	                    ¦   «          d| _
        d S )Nr   )ÚtotalÚdisableÚpositionr    r5   r6   r   é   r   c                 ó&   — g | ]}t          d i |¤Ž‘ŒS ©r1   ©r   ©rx   r    s     r(   r|   zHBatchedInferencePipeline._batched_segments_generator.<locals>.<listcomp>]  s"   € Ð!LÐ!LÐ!L°4¥$ , ,¨ , ,Ð!LÐ!LÐ!Lr*   r;   r7   r8   r:   r9   )r5   r4   r6   r   r   r;   r7   r8   r:   r9   r<   rh   )r   r¤   r¦   r‹   r3   ÚroundrS   rL   ÚupdateÚcloserj   )r'   r‚   ro   rƒ   r­   r„   rÅ   ÚpbarÚseg_idxr±   r³   r´   rÛ   s                r(   r  z4BatchedInferencePipeline._batched_segments_generatorD  s“  è è € õ �#˜h™-œ-°\Ð1AÈAÐNÑNÔNˆØˆÝ�q�#˜h™-œ-¨Ñ4Ô4ð 	ð 	ˆAØ—l’lØ˜˜Q ™^Ð+Ô,ØØ  A¨
¡NÐ 2Ô3Øñ	ô ˆGð "ð ð �Ø%ð ð �GØ˜q‘L�GÝ!Ø$ Vœ_Ø"Ø$ Vœ_Ý# G¨GÔ$4°aÑ8Ô8Ý! '¨%¤.°!Ñ4Ô4ð $+Ô#:ðM˜D˜Dà!LÐ!L¸7À7Ô;KÐ!LÑ!LÔ!Là& xÔ0Ø$+¨MÔ$:Ø'.Ð/?Ô'@Ø*1Ð2EÔ*FØ$+Ô$8¸Ô$;ðñ ô ð ð ð ð ð$ —’˜A‘”��ð+ð. 	�
Š
‰ŒˆØ%(ˆÔ"Ð"Ð"r*   )r+   r,   r-   rk   r‹   rô   rõ   r   r@   r}   r   r0   r   r
   r[   r>   r.   r	   r   r   rt   r   r3   r]   r·   r  r1   r*   r(   rf   rf   o   s^  € € € € € ð)ð )ð )ð5!ð 5!ð 5!ðnN&à”*ðN&ð ðN&ð &ð	N&ð N&ð N&ð N&ðf #'Ø Ø"ØØØØ !Ø$%Ø$%ðE
ð E
ð E
ð 8;Ø.2Ø/2Ø+/Ø-0Ø>BØ $Ø#Ø02¨tØ#'Ø'*Ø %Ø$2Ø#EØ"ØØ<@Ø(,Ø&*Ø04Ø;?ØØ"&Ø8;Ø+,ðYDð Dà�S˜( B¤JÐ.Ô/ðDð ˜3”-ðDð ð	Dð
 ðDð ðDð ðDð ðDð ðDð "ðDð "ðDð ˜5 $ u¤+¨u°U¸C°ZÔ/@Ð@ÔAðDð( &.¨e¤_ð)Dð* % UœOð+Dð, & eœ_ð-Dð. %)ð/Dð0 &+ð1Dð2 !  s¨H°S¬MÐ'9Ô!:Ô;ð3Dð4 ˜”ð5Dð6 ð7Dð8 " $ s¤)Ô,ð9Dð: !ð;Dð<  %ð=Dð> ð?Dð@ "ðADðB !ðCDðD ðEDðF ðGDðH !  t¨ZÐ'7Ô!8Ô9ðIDðJ ! œðKDðL ˜s”mðMDðN " $ t¤*Ô-ðODðP *2°%¬ðQDðR ðSDðT ˜3”-ðUDðV '/¨u¤oðWDðX &)ðYDðZ 
ˆx˜Ô Ð"3Ð3Ô	4ð[Dð Dð Dð DðL
%)ð %)ð %)ð %)ð %)r*   rf   c            K       ó¢  — e Zd Z	 	 	 	 	 	 	 	 	 	 dadeded	eeee         f         d
edededee         dede	dee         deeeef                  fd„Z
edee         fd„¦   «         Zdbde	fd„Zdddddddddg 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f"d#eeeej        f         d$ee         d%ed&ed'ed(ed)ed*ed+ed,ed-eeee         eed.f         f         d/ee         d0ee         d1ee         d2ed3ed4eeeee         f                  d5ee         d6ed7eee                  d8ed9ed:ed;ed<ed=ed>ed?eee	ef                  d@ee         dAee         dBeeee         f         dCee         dDee         dEee         dFedeee         ef         fHdG„ZdHedIee         dJedKedLedMedeee                  fdN„Z	 dbdOej        dHedPedQeej                 dee         f
dR„ZdOej        dej        fdS„ZdQej        dTee         dHedPedeej        j         eeef         f
dU„Z!	 	 	 dcdHedVee         d8ed5ee         dDee         dee         fdW„Z"dXee	         dHedQej        dYed;ed<edZedefd[„Z#	 dddHed]ee         dQej        dYed^edee	         fd_„Z$	 	 	 	 	 	 ded#eej                 dOeej                 d>ed?ee	ef         dFedEedeeeeeeef                  f         fd`„Z%dS )fÚWhisperModelÚautor   Údefaultr    NFÚmodel_size_or_pathÚdeviceÚdevice_indexÚcompute_typeÚcpu_threadsÚnum_workersÚdownload_rootÚlocal_files_onlyÚfilesÚrevisionÚuse_auth_tokenc           
      óö  — t          ¦   «         | _        d\  }}|	r/|}|	                     dd¦  «        }|	                     dd¦  «        }n6t          j                             |¦  «        r|}nt          ||||
|¬¦  «        }t          j        j	        |f||||||	dœ|¤Ž| _
        t          j                             |d¦  «        }|r%t          j                             |¦  «        | _        nyt          j                             |¦  «        r%t          j                             |¦  «        | _        n5t          j                             d| j
        j        rdnd	z   ¦  «        | _        |                      ||¦  «        | _        t-          di | j        ¤Ž| _        d
| _        | j        j        | j        z  | _        | j        j        | j        j        z  | _        | j        j        | j        z  | _        d| _        d| _        dS )a>	  Initializes the Whisper model.

        Args:
          model_size_or_path: Size of the model to use (tiny, tiny.en, base, base.en,
            small, small.en, distil-small.en, medium, medium.en, distil-medium.en, large-v1,
            large-v2, large-v3, large, distil-large-v2, distil-large-v3, large-v3-turbo, or turbo),
            a path to a converted model directory, or a CTranslate2-converted Whisper model ID from
            the HF Hub. When a size or a model ID is configured, the converted model is downloaded
            from the Hugging Face Hub.
          device: Device to use for computation ("cpu", "cuda", "auto").
          device_index: Device ID to use.
            The model can also be loaded on multiple GPUs by passing a list of IDs
            (e.g. [0, 1, 2, 3]). In that case, multiple transcriptions can run in parallel
            when transcribe() is called from multiple Python threads (see also num_workers).
          compute_type: Type to use for computation.
            See https://opennmt.net/CTranslate2/quantization.html.
          cpu_threads: Number of threads to use when running on CPU (4 by default).
            A non zero value overrides the OMP_NUM_THREADS environment variable.
          num_workers: When transcribe() is called from multiple Python threads,
            having multiple workers enables true parallelism when running the model
            (concurrent calls to self.model.generate() will run in parallel).
            This can improve the global throughput at the cost of increased memory usage.
          download_root: Directory where the models should be saved. If not set, the models
            are saved in the standard Hugging Face cache directory.
          local_files_only:  If True, avoid downloading the file and return the path to the
            local cached file if it exists.
          files: Load model files from the memory. This argument is a dictionary mapping file names
            to file contents as file-like or bytes objects. If this is set, model_path acts as an
            identifier for this model.
          revision:
            An optional Git revision id which can be a branch name, a tag, or a
            commit hash.
          use_auth_token: HuggingFace authentication token or True to use the
            token stored by the HuggingFace config folder.
        )NNztokenizer.jsonNúpreprocessor_config.json)r"  Ú	cache_dirr$  r%  )r  r  r  Úintra_threadsÚinter_threadsr#  zopenai/whisper-tinyÚ z.enr#   g{®Gáz”?iÀ  r1   ) r   rñ   rø   ÚosÚpathÚisdirr   Úctranslate2ÚmodelsÚWhisperri   ÚjoinÚ
tokenizersr   Úfrom_bufferrþ   ÚisfileÚ	from_fileÚfrom_pretrainedrð   Ú_get_feature_kwargsÚfeat_kwargsr   râ   Úinput_strideÚ
hop_lengthÚnum_samples_per_tokenrÏ   rw   Útokens_per_secondÚtime_precisionrœ   )r'   r  r  r  r  r  r   r!  r"  r#  r$  r%  Úmodel_kwargsÚtokenizer_bytesÚpreprocessor_bytesÚ
model_pathÚtokenizer_files                    r(   rk   zWhisperModel.__init__m  s  € õd !‘l”lˆŒà.8Ñ+ˆÐ+Øð 	Ø+ˆJØ#ŸišiÐ(8¸$Ñ?Ô?ˆOØ!&§¢Ð+EÀtÑ!LÔ!LÐÐÝŒW�]Š]Ð-Ñ.Ô.ð 		Ø+ˆJˆJå'Ø"Ø!1Ø'Ø!Ø-ðñ ô ˆJõ !Ô'Ô/Øð	
àØ%Ø%Ø%Ø%Øð	
ð 	
ð ð	
ð 	
ˆŒ
õ œŸš jÐ2BÑCÔCˆØð 	Ý *Ô 4× @Ò @ÀÑ QÔ QˆDÔÐÝŒW�^Š^˜NÑ+Ô+ð 	Ý *Ô 4× >Ò >¸~Ñ NÔ NˆDÔÐå *Ô 4× DÒ DØ%¨t¬zÔ/IÐ)T¨¨ÈuÑUñ!ô !ˆDÔð  ×3Ò3°JÐ@RÑSÔSˆÔÝ!1Ð!EÐ!E°DÔ4DÐ!EÐ!EˆÔØˆÔàÔ"Ô-°Ô0AÑAð 	Ô"ð Ô"Ô0°DÔ4JÔ4UÑUð 	Ôð Ô"Ô0°DÔ4NÑNð 	Ôð #ˆÔØˆŒˆˆr*   rË   c                 óH   — | j         j        rt          t          ¦  «        ndgS )z%The languages supported by the model.rä   )ri   rð   r   r   r&   s    r(   Úsupported_languagesz WhisperModel.supported_languagesÔ  s#   € ð )-¬
Ô(BÐN�t•OÑ$Ô$Ð$ÈÈÐNr*   c                 óJ  ‡— i }	 t           j                             |d¦  «        }|rt          j        |¦  «        }n`t           j                             |¦  «        r?t          |dd¬¦  «        5 }t          j        |¦  «        }d d d ¦  «         n# 1 swxY w Y   n|S t          t          j
        ¦  «        j                             ¦   «         Šˆfd„|                     ¦   «         D ¦   «         S # t          j        $ r%}| j                             d|¦  «         Y d }~nd }~ww xY w|S )Nr'  Úrúutf-8)Úencodingc                 ó$   •— i | ]\  }}|‰v ¯	||“ŒS r1   r1   )rx   r×   rØ   Ú
valid_keyss      €r(   rÙ   z4WhisperModel._get_feature_kwargs.<locals>.<dictcomp>å  s$   ø€ ÐGÐGÐG™T˜Q °q¸J°°�A�q°°°r*   z&Could not load preprocessor config: %s)r,  r-  r2  ÚjsonÚloadsr5  ÚopenÚloadr   r   rk   Ú
parametersr÷   rÚ   ÚJSONDecodeErrorrñ   rò   )r'   rB  rA  ÚconfigÚconfig_pathÚfileÚerK  s          @r(   r8  z WhisperModel._get_feature_kwargsÙ  sg  ø€ Øˆð	MÝœ'Ÿ,š, zÐ3MÑNÔNˆKØ!ð ÝœÐ$6Ñ7Ô7��Ý”—’ Ñ,Ô,ð Ý˜+ s°WÐ=Ñ=Ô=ð -ÀÝ!œY t™_œ_�Fð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -øð �Ý"Õ#3Ô#<Ñ=Ô=ÔH×MÒMÑOÔOˆJØGÐGÐGÐG V§\¢\¡^¤^ÐGÑGÔGÐGøÝÔ#ð 	Mð 	Mð 	MØŒK×ÒÐ HÈ!ÑLÔLÐLÐLÐLÐLÐLÐLøøøøð	Møøøð ˆsC   …A(C, Á-BÂC, ÂBÂC, ÂBÂC, ÂAC, Ã,D Ã;DÄD r·   r¸   r¹   r¼   r½   rº   Tr¾   r¿   r»   rÀ   rÁ   Ú0rÃ   r^   rÄ   rÅ   rA   rB   rC   rD   rE   rF   r<   .rI   rG   rH   rJ   rK   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rÆ   rÇ   rW   rÈ   rX   rY   rZ   rÉ   rÊ   c$           
      ó~  ‡4— | j         j        Š4|r(| j        j        s| j                             d¦  «         d}t          |t          j        ¦  «        st          |‰4¬¦  «        }|j
        d         ‰4z  }$|$}%| j                             dt          |$¦  «        ¦  «         |�r|dk    �r|€t          ¦   «         }n!t          |t          ¦  «        rt          d2i |¤Ž}t          ||¦  «        }&t!          ||&¦  «        \  }'}(t          j        |'d¬¦  «        }|j
        d         ‰4z  }%| j                             d	t          |$|%z
  ¦  «        ¦  «         | j                             t&          j        ¦  «        r:| j                             d
d                     ˆ4fd„|&D ¦   «         ¦  «        ¦  «         nd}&|                       ||¬¦  «        })d}*d}+|€Ð| j        j        sd}d},nòt          |t.          ¦  «        r(t1          |                     d¦  «        d         ¦  «        n|d         }-|)j
        d         dz
  }.|-| j        z  |.k     rt7          |-| j        z  ¦  «        nd}/|                      |)d|/d…f         |#|"¬¦  «        \  }},}+| j                             d||,¦  «         n3| j        j        s%|dk    r| j                             d|z  ¦  «         d}d},t;          | j        | j        j        ||¬¦  «        }0t?          d2i d|“d|“d|“d|“d|	“d|
“d|“d|“d|“d |“d!|“d"t          |t@          tB          f¦  «        r|n|g“d#|“d$|“d%|“d&|rtE          |0|¦  «        n|“d'|“d(|“d)|“d*|“d+|“d,|“d-|“d.|“d/| “d0|!“Ž}1|  #                    |)|0|1||*¦  «        }2|&rtI          |2|&‰4¦  «        }2tK          ||,|$|%|1||+¬1¦  «        }3|2|3fS )3a'  Transcribes an input file.

        Arguments:
          audio: Path to the input file (or a file-like object), or the audio waveform.
          language: The language spoken in the audio. It should be a language code such
            as "en" or "fr". If not set, the language will be detected in the first 30 seconds
            of audio.
          task: Task to execute (transcribe or translate).
          log_progress: whether to show progress bar or not.
          beam_size: Beam size to use for decoding.
          best_of: Number of candidates when sampling with non-zero temperature.
          patience: Beam search patience factor.
          length_penalty: Exponential length penalty constant.
          repetition_penalty: Penalty applied to the score of previously generated tokens
            (set > 1 to penalize).
          no_repeat_ngram_size: Prevent repetitions of ngrams with this size (set 0 to disable).
          temperature: Temperature for sampling. It can be a tuple of temperatures,
            which will be successively used upon failures according to either
            `compression_ratio_threshold` or `log_prob_threshold`.
          compression_ratio_threshold: If the gzip compression ratio is above this value,
            treat as failed.
          log_prob_threshold: If the average log probability over sampled tokens is
            below this value, treat as failed.
          no_speech_threshold: If the no_speech probability is higher than this value AND
            the average log probability over sampled tokens is below `log_prob_threshold`,
            consider the segment as silent.
          condition_on_previous_text: 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.
          prompt_reset_on_temperature: Resets prompt if temperature is above this value.
            Arg has effect only if condition_on_previous_text is True.
          initial_prompt: Optional text string or iterable of token ids to provide as a
            prompt for the first window.
          prefix: Optional text to provide as a prefix for the first window.
          suppress_blank: Suppress blank outputs at the beginning of the sampling.
          suppress_tokens: List of token IDs to suppress. -1 will suppress a default set
            of symbols as defined in `tokenizer.non_speech_tokens()`.
          without_timestamps: Only sample text tokens.
          max_initial_timestamp: The initial timestamp cannot be later than this.
          word_timestamps: 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: If word_timestamps is True, merge these punctuation symbols
            with the next word
          append_punctuations: If word_timestamps is True, merge these punctuation symbols
            with the previous word
          multilingual: Perform language detection on every segment.
          vad_filter: Enable the voice activity detection (VAD) to filter out parts of the audio
            without speech. This step is using the Silero VAD model
            https://github.com/snakers4/silero-vad.
          vad_parameters: Dictionary of Silero VAD parameters or VadOptions class (see available
            parameters and default values in the class `VadOptions`).
          max_new_tokens: Maximum number of new tokens to generate per-chunk. If not set,
            the maximum will be set by the default max_length.
          chunk_length: The length of audio segments. If it is not None, it will overwrite the
            default chunk_length of the FeatureExtractor.
          clip_timestamps:
            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.
             vad_filter will be ignored if clip_timestamps is used.
          hallucination_silence_threshold:
            When word_timestamps is True, skip silent periods longer than this threshold
             (in seconds) when a possible hallucination is detected
          hotwords:
            Hotwords/hint phrases to provide the model with. Has no effect if prefix is not None.
          language_detection_threshold: If the maximum probability of the language tokens is higher
           than this value, the language is detected.
          language_detection_segments: Number of segments to consider for the language detection.
        Returns:
          A tuple with:

            - a generator over transcribed segments
            - an instance of TranscriptionInfo
        rÍ   FrÎ   r   rÐ   rV  Nrç   rà   z0VAD filter kept the following audio segments: %sz, c              3   ó‚   •K  — | ]9}d t          |d         ‰z  ¦  «        ›dt          |d         ‰z  ¦  «        ›d�V — Œ:dS )ú[r   z -> r   ú]N)r   )rx   rã   rÏ   s     €r(   rß   z*WhisperModel.transcribe.<locals>.<genexpr>‡  sq   øè è € ð ð ð "˜Eõ -¨U°7¬^¸mÑ-KÑLÔLÐLÐLÝ,¨U°5¬\¸MÑ-IÑJÔJÐJÐJððð ð ð ð ð r*   )rÈ   rä   r    ú,r¿   .ré   rê   rë   rì   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   rï   r1   )&râ   rÏ   ri   rð   rñ   rò   ró   rô   rõ   r   r¡   rö   r   r   rt   r   r   rû   ÚisEnabledForÚloggingÚDEBUGÚdebugr2  r0   r.   Úsplitrw   r>   r§   r   rþ   r@   r   r  r  Úgenerate_segmentsr  r]   )5r'   rÃ   r^   rÄ   rÅ   rA   rB   rC   rD   rE   rF   r<   rI   rG   rH   rJ   rK   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rÆ   rÇ   rW   rÈ   rX   rY   rZ   rÉ   rÊ   r`   ra   Úspeech_chunksr  rƒ   r‚   r…   rb   r_   Ústart_timestampÚcontent_framesr5   ro   r„   rÝ   rö   rÏ   s5                                                       @r(   r·   zWhisperModel.transcribeë  s•  ø€ ðn Ô.Ô<ˆàð 	! ¤
Ô :ð 	!ØŒK×Òð2ñô ð ð !ˆLå˜%¥¤Ñ,Ô,ð 	EÝ  °mÐDÑDÔDˆEà”;˜q”> MÑ1ˆØ%ÐàŒ×ÒØ/Õ1AÀ(Ñ1KÔ1Kñ	
ô 	
ð 	
ð ñ 	!˜/¨SÒ0Ñ0ØÐ%Ý!+¡¤��Ý˜N­DÑ1Ô1ð >Ý!+Ð!=Ð!=¨nÐ!=Ð!=�Ý1°%¸ÑHÔHˆMÝ,:¸5À-Ñ,PÔ,PÑ)ˆL˜/Ý”N <°aÐ8Ñ8Ô8ˆEØ!&¤¨Q¤°-Ñ!?ÐàŒK×ÒØ0Ý  Ð,>Ñ!>Ñ?Ô?ñô ð ð
 Œ{×'Ò'­¬Ñ6Ô6ð Ø”×!Ò!ØFØ—I’Ið ð ð ð ð &3ðñ ô ñ ô ñ
ô 
ð 
øð !ˆMà×)Ò)¨%¸lÐ)ÑKÔKˆàˆØ!Ðð ÐØ”:Ô-ð Ø�Ø'(Ð$Ð$õ " /µ3Ñ7Ô7ð,•E˜/×/Ò/°Ñ4Ô4°QÔ7Ñ8Ô8Ð8à(¨Ô+ð  ð
 "*¤°Ô!3°aÑ!7�ð '¨Ô)?Ñ?À.ÒPÐPõ ˜¨$Ô*@Ñ@ÑAÔAÐAàð ð ×(Ò(Ø% c¨4¨5¨5 jÔ1Ø0KØ1Mð )ñ ô ñ	ØØ(Ø&ð ”× Ò ØBØØ(ñô ð ð ð ”:Ô-ð  °(¸dÒ2BÐ2BØ”×#Ò#ð*Ø,4ñ5ñô ð ð  �à#$Ð åØÔØŒJÔ&ØØð	
ñ 
ô 
ˆ	õ 'ð !
ð !
ð !
Ø�ið!
à�Gð!
ð �Xð!
ð *˜>ð	!
ð
  2Ð1ð!
ð "6Ð!5ð!
ð  2Ð1ð!
ð !4Ð 3ð!
ð )DÐ(Cð!
ð (BÐ'Að!
ð )DÐ(Cð!
õ  *¨+½½e°}ÑEÔEÐX��ÈKÈ=øð!
ð *˜>ð!
ð  �6ð!!
ð" *˜>ð#!
ð( #ð%Õ% i°ÑAÔAÐAà$øð+!
ð.  2Ð1ð/!
ð0 #8Ð"7ð1!
ð2 ,˜Oð3!
ð4 "6Ð!5ð5!
ð6 !4Ð 3ð7!
ð8 &˜ð9!
ð: *˜>ð;!
ð< ,˜Oð=!
ð> -LÐ,Kð?!
ð@ �XðA!
ˆðF ×)Ò)Ø�i ¨,¸ñ
ô 
ˆð ð 	YÝ0°¸=È-ÑXÔXˆHå ØØ!5ØØ1Ø")Ø&Ø1ð
ñ 
ô 
ˆð ˜ˆ~Ðr*   ro   r7   rp   rq   rr   r5   c           	      óŠ  ‡‡— g }t          ‰¦  «        dk    o ‰d         ‰j        cxk     o‰d         k    nc }ˆˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         }	t          |	¦  «        dk    rÏt          |	¦  «        }
|r"|
                     t          ‰¦  «        ¦  «         d}|
D ]n}‰||…         }|d         ‰j        z
  }|d         ‰j        z
  }||| j        z  z   }||| j        z  z   }|                     t          ||||¬¦  «        ¦  «         |}Œo|r||z  }n�‰|dz
           ‰j        z
  }||| j        z  z  }n||}ˆfd„‰D ¦   «         }t          |¦  «        dk    r+|d         ‰j        k    r|d         ‰j        z
  }|| j        z  }|                     t          ||||z   ‰¬¦  «        ¦  «         ||z  }|||fS )	Nr#   éþÿÿÿr¿   c                 ój   •— g | ]/}|d k    r'‰|         ‰j         k    r‰|dz
           ‰j         k    ¯-|‘Œ0S )r   r    ©Útimestamp_begin)rx   r±   ro   r7   s     €€r(   r|   z>WhisperModel._split_segments_by_timestamps.<locals>.<listcomp>  sV   ø€ ð "
ð "
ð "
àØ�1ŠuˆuØ�q”	˜YÔ6Ò6Ð6Ø�q˜1‘u” Ô!:Ò:Ð:ð	 ð ;Ð:Ð:r*   r   )r5   r   r   r7   r    c                 ó*   •— g | ]}|‰j         k    ¯|‘ŒS r1   rh  ©rx   Útokenro   s     €r(   r|   z>WhisperModel._split_segments_by_timestamps.<locals>.<listcomp>;  s-   ø€ ð ð ð Ø¨U°iÔ6OÒ-OÐ-O�Ð-OÐ-OÐ-Or*   )r¤   ri  r¦   r   r   r>  rt   r:  )r'   ro   r7   rp   rq   rr   r5   Úcurrent_segmentsrŠ   Úconsecutive_timestampsÚslicesÚ
last_sliceÚcurrent_sliceÚsliced_tokensÚstart_timestamp_positionÚend_timestamp_positionÚ
start_timeÚend_timeÚlast_timestamp_positionr`   Ú
timestampss    ``                  r(   r€   z*WhisperModel._split_segments_by_timestamps   s�  øø€ ð Ðå�‰KŒK˜1ÒÐU ¨¤¨iÔ.GÐ!UÐ!UÒ!UÐ!UÈ6ÐRTÌ:Ò!UÐ!UÐ!UÐ!Uð 	 ð"
ð "
ð "
ð "
ð "
å�3˜v™;œ;Ñ'Ô'ð"
ñ "
ô "
Ðõ Ð%Ñ&Ô&¨Ò*Ð*ÝÐ0Ñ1Ô1ˆFØ&ð +Ø—’�c &™kœkÑ*Ô*Ð*àˆJØ!'ð +ð +�Ø & z°-Ð'?Ô @�Ø+8¸Ô+;¸iÔ>WÑ+WÐ(Ø)6°rÔ):¸YÔ=VÑ)VÐ&àÐ":¸TÔ=PÑ"PÑPð ð 'Ð)?À$ÔBUÑ)UÑU�à ×'Ò'ÝØ!Ø(Ø$Ø,ð	ñ ô ñô ð ð +�
�
à&ð Dà˜Ñ$��ð ˜:¨™>Ô*¨YÔ-FÑFð (ð Ð/°$Ô2CÑCÑC��ð (ˆHðð ð ð Ø#)ðñ ô ˆJõ �:‰Œ Ò"Ð" z°"¤~¸Ô9RÒ'RÐ'RØ*4°R¬.¸9Ô;TÑ*TÐ'Ø2°TÔ5HÑH�à×#Ò#ÝØØ%Ø# hÑ.Ø!ð	ñ ô ñô ð ð �LÑ ˆDà Ð'>Ð>Ð>r*   r‚   r„   r…   c              #   ó¬  ‡ ‡6‡7K  — |j         d         dz
  }t          |‰ j        j        z  ¦  «        }t	          |j        t          ¦  «        r2d„ |j        r|j                             d¦  «        ng D ¦   «         |_        ˆ fd„|j        D ¦   «         }t          |¦  «        dk    r| 	                    d¦  «         t          |¦  «        dz  dk    r| 	                    |¦  «         t          t          |d d d…         |dd d…         ¦  «        ¦  «        }	dŠ6d}
d}|	|         d         }g }d}|j        �{t	          |j        t          ¦  «        rGd	|j                             ¦   «         z   }|                     |¦  «        }|                     |¦  «         n|                     |j        ¦  «         t!          |d
| ¬¦  «        }d}|t          |	¦  «        k     �rê|	|         \  }}||k    r|}||k     r|}||k    r'|dz  }|t          |	¦  «        k     r|	|         d         }Œ\|‰ j        j        z  }t          |‰ j        j        z   ‰ j        j        z  ¦  «        }t%          ‰ j        j        ||z
  ||z
  ¦  «        }|d d …|||z   …f         }|‰ j        j        z  }t'          |¦  «        }‰ j                             t,          j        ¦  «        r(‰ j                             dt3          |¦  «        ¦  «         ||d …         }|dk    s|€‰                      |¦  «        }|j        r[‰ j                             |¦  «        }|d         d         \  }}|dd…         }|j                             |¦  «        |_        ||_         ‰  !                    |||j"        |dk    r|j#        nd |j$        ¬¦  «        }‰  %                    ||||¦  «        \  } }!}"}#|j&        �S| j'        |j&        k    }$|j(        �|!|j(        k    rd}$|$r-‰ j                             d| j'        |j&        ¦  «         ||z  }�Œa| j)        d         }%|}&dtT          dt          fd„Š7dtV          tT                   dtX          fˆ6ˆ7fd„}'dtZ          tT                   dtV          tT                   fd„}(‰  .                    ||%||||¬¦  «        \  })}}*|j/        �rÔ‰  0                    |)g||||j1        |j2        |¬¦  «         |*s.tg          |)¦  «        }+|+�|+|k    rti          |+‰ j5        z  ¦  «        }|j6        ��b|j6        }, |(|)¦  «        }-|-�8 |'|-¦  «        r-|-d         |z
  }.|.|,k    r|&ti          |.‰ j5        z  ¦  «        z   }�Œœ|}/to          t          |)¦  «        ¦  «        D ]÷}0|)|0         }|d         sŒ |'|¦  «        rÑ |(|)|0dz   d …         ¦  «        }1|1�|1d         d         d         }2n||z   }2|d         |/z
  |,k    p|d         |,k     p|d         |z
  dk     }3|2|d         z
  |,k    p |'|1¦  «        p||d         z
  dk     }4|3rJ|4rHti          tq          |dz   |d         ¦  «        ‰ j5        z  ¦  «        }||d         z
  |,k     r|}g |)|0d …<    n	|d         }/Œøtg          |)¦  «        }+|+�|+}|)D ]¦}|d         }%| 9                    |%¦  «        }5|d         |d         k    s|5                     ¦   «         sŒF|                     |%¦  «         |
dz  }
tu          |
|&|d         |d         |5|%|"|!|#| j'        |j/        rd „ |d         D ¦   «         nd ¬!¦  «        V — Œ§|j;        r|"|j<        k    r7|j;        r!‰ j                             d"|"|j<        ¦  «         t          |¦  «        }| =                    t%          ||¦  «        |&z
  ‰ j        j        z  ¦  «         |t          |	¦  «        k     �°ê| >                    ¦   «          d S )#Nr¿   r    c                 ó,   — g | ]}t          |¦  «        ‘ŒS r1   )r.   )rx   Útss     r(   r|   z2WhisperModel.generate_segments.<locals>.<listcomp>[  s.   € ð 'ð 'ð 'àõ �b‘	”	ð'ð 'ð 'r*   r[  c                 ó>   •— g | ]}t          |‰j        z  ¦  «        ‘ŒS r1   )r  rw   )rx   r{  r'   s     €r(   r|   z2WhisperModel.generate_segments.<locals>.<listcomp>d  s6   ø€ ð "
ð "
ð "
Ø35�E�"�tÔ-Ñ-Ñ.Ô.ð"
ð "
ð "
r*   r   r#   u*   "'â€œÂ¿([{-"'.ã€‚,ï¼Œ!ï¼�?ï¼Ÿ:ï¼šâ€�)]}ã€�ú Úseconds)r
  Úunitr  rh   zProcessing segment at %srf  )rQ   rN   rZ   Fz$No speech threshold is met (%f > %f)r    rË   c                 ó¬   — |                       dd¦  «        }| d         | d         z
  }d}|dk     r|dz  }|dk     r|d|z
  dz  z  }|d	k    r||d	z
  z  }|S )
Nr!   rh   r   r   g333333Ã?r»   g /Ý$Á?é   ç       @)Úget)r    r!   r`   Úscores       r(   Úword_anomaly_scorez:WhisperModel.generate_segments.<locals>.word_anomaly_scoreÚ  s{   € Ø"Ÿhšh }°cÑ:Ô:�Ø œ;¨¨g¬Ñ6�Ø�Ø Ò%Ð%Ø˜S‘L�EØ˜eÒ#Ð#Ø˜e hÑ.°"Ñ4Ñ4�EØ˜c’>�>Ø˜X¨™^Ñ+�EØ�r*   rÛ   c                 óÆ   •— | �| d         sdS ˆfd„| d         D ¦   «         }|d d…         }t          ˆfd„|D ¦   «         ¦  «        }|dk    p|dz   t          |¦  «        k    S )Nr;   Fc                 ó(   •— g | ]}|d          ‰v¯|‘ŒS )r    r1   )rx   ÚwÚpunctuations     €r(   r|   zNWhisperModel.generate_segments.<locals>.is_segment_anomaly.<locals>.<listcomp>é  s'   ø€ ÐUÐUÐU˜q¸¸&¼	ÈÐ8TÐ8T˜Ð8TÐ8TÐ8Tr*   rÂ   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S ©Nr1   )rx   rˆ  r…  s     €r(   rß   zMWhisperModel.generate_segments.<locals>.is_segment_anomaly.<locals>.<genexpr>ë  s/   øè è € ÐAÐA°aÐ.Ð.¨qÑ1Ô1ÐAÐAÐAÐAÐAÐAr*   r  g{®Gáz„?)rú   r¤   )rÛ   r;   r„  r‰  r…  s      €€r(   Úis_segment_anomalyz:WhisperModel.generate_segments.<locals>.is_segment_anomalyæ  s�   ø€ Ø�?¨'°'Ô*:�?Ø ˜5ØUÐUÐUÐU G¨GÔ$4ÐUÑUÔU�Ø˜b˜q˜bœ	�ÝÐAÐAÐAÐA¸5ÐAÑAÔAÑAÔA�Ø ’zÐ? U¨T¡\µS¸±Z´ZÒ%?Ð?r*   rÝ   c                 ó6   — t          d„ | D ¦   «         d ¦  «        S )Nc              3   ó*   K  — | ]}|d          ¯
|V — ŒdS )r;   Nr1   )rx   Úss     r(   rß   zMWhisperModel.generate_segments.<locals>.next_words_segment.<locals>.<genexpr>ï  s+   è è € Ð?Ð? 1°A°g´JÐ?˜QÐ?Ð?Ð?Ð?Ð?Ð?r*   )Únext)rÝ   s    r(   Únext_words_segmentz:WhisperModel.generate_segments.<locals>.next_words_segmentî  s!   € ÝÐ?Ð?¨Ð?Ñ?Ô?ÀÑFÔFÐFr*   rn   )rj   r   r;   r‚  r   r7   c                 ó&   — g | ]}t          d i |¤Ž‘ŒS r  r  r  s     r(   r|   z2WhisperModel.generate_segments.<locals>.<listcomp>V  s"   € ÐCÐCÐC¨$�˜˜ ˜˜ÐCÐCÐCr*   )r4   r5   r   r   r6   r7   r<   r8   r9   r:   r;   zBReset prompt. prompt_reset_on_temperature threshold is met %f > %f)?r¡   r.   râ   Útime_per_frameró   rX   r0   r`  r¤   r   r   r~   rM   Ústripr£   Úextendr   Únb_max_framesÚminr   rñ   r\  r]  r^  r_  r   rV   ri   r§   ro   rš   r^   Úlanguage_coder¢   rQ   rN   rZ   Úgenerate_with_fallbackrH   r:   rG   r«   rt   r
   r[   r	   r€   rS   r�   rT   rU   r   r  rw   rY   r¦   Úmaxru   r3   rJ   rK   r  r  )8r'   r‚   ro   r„   rÅ   r…   rd  Úcontent_durationÚseek_pointsÚ
seek_clipsÚidxÚclip_idxr5   Ú
all_tokensÚprompt_reset_sincerM   Úinitial_prompt_tokensr  rj   Úseek_clip_startÚseek_clip_endrp   Úwindow_end_timerq   rÛ   rr   r�   r³   r²   r_   r^   r—   r´   r8   r<   r9   Úshould_skipr7   Úprevious_seekrŒ  r‘  rm  rŠ   Úlast_word_endÚ	thresholdÚfirst_segmentÚgapÚhal_last_endÚsiÚnext_segmentÚhal_next_startÚsilence_beforeÚsilence_afterr6   r‰  r…  s8   `                                                     @@r(   ra  zWhisperModel.generate_segmentsO  s
  øøøè è € ð "œ¨Ô+¨aÑ/ˆÝ  °$Ô2HÔ2WÑ!WÑXÔXÐå�gÔ-­sÑ3Ô3ð 	ð'ð 'ð Ô.ð�GÔ+×1Ò1°#Ñ6Ô6Ð6àð'ñ 'ô 'ˆGÔ#ð"
ð "
ð "
ð "
Ø9@Ô9Pð"
ñ "
ô "
ˆõ ˆ{ÑÔ˜qÒ Ð Ø×Ò˜qÑ!Ô!Ð!Ýˆ{ÑÔ˜aÑ 1Ò$Ð$Ø×Ò˜~Ñ.Ô.Ð.Ý,0Ý�˜C˜C˜a˜CÔ  +¨a¨d°¨dÔ"3Ñ4Ô4ñ-
ô -
ˆ
ð EˆàˆØˆØ˜(Ô# AÔ&ˆØˆ
ØÐàÔ!Ð-Ý˜'Ô0µ#Ñ6Ô6ð :Ø!$ wÔ'=×'CÒ'CÑ'EÔ'EÑ!E�Ø(1×(8Ò(8¸Ñ(HÔ(HÐ%Ø×!Ò!Ð"7Ñ8Ô8Ð8Ð8à×!Ò! 'Ô"8Ñ9Ô9Ð9åÐ*°ÈÐDTÐUÑUÔUˆØ #Ðð
 �˜Z™œÒ(Ñ(Ø-7¸Ô-AÑ*ˆO˜]Ø˜~Ò-Ð-Ø .�Ø�oÒ%Ð%Ø&�Ø�}Ò$Ð$Ø˜A‘�Ø�c *™oœoÒ-Ð-Ø% hÔ/°Ô2�DØØ Ô!7Ô!FÑFˆKÝ#Ø˜Ô.Ô<Ñ<ØÔ(Ô7ñ8ñô ˆOõ ØÔ&Ô4Ø Ñ%Ø Ñ$ñô ˆLð
 ˜q˜q˜q $¨°Ñ)<Ð"<Ð<Ô=ˆGØ+¨dÔ.DÔ.SÑSÐÝ! 'Ñ*Ô*ˆGàŒ{×'Ò'­¬Ñ6Ô6ð Ø”×!Ò!Ø.Õ0@ÀÑ0MÔ0Mñô ð ð )Ð);Ð)<Ð)<Ô=ˆOà�aŠxˆx˜>Ð1Ø!%§¢¨WÑ!5Ô!5�àÔ#ð 3Øœ*×4Ò4°^ÑDÔD�Ø7>¸q´zÀ!´}Ñ4�Ð 4Ø)¨!¨B¨$Ô/�à%.Ô%8×%DÒ%DÀ^Ñ%TÔ%T�	Ô"Ø*2�	Ô'à—_’_ØØØ#*Ô#=Ø)-°ª¨�w”~�~¸Ø Ô)ð %ñ ô ˆFð ×+Ò+¨N¸FÀIÈwÑWÔWñØØØØ!ð Ô*Ð6à$Ô3°gÔ6QÒQ�ð Ô.Ð:Ø# gÔ&@Ò@Ð@ð #(�Kàð 	Ø”K×%Ò%Ø>ØÔ-ØÔ3ñô ð ð ˜LÑ(�DÙàÔ)¨!Ô,ˆFà ˆMð
­ð 
µ%ð 
ð 
ð 
ð 
ð@­HµT¬Nð @½tð @ð @ð @ð @ð @ð @ð @ðG­Tµ$¬Zð G½HÅT¼Nð Gð Gð Gð Gð ×2Ò2Ø#ØØ'Ø)Ø!1Øð 3ñ ô ñ	Ø ØØ'ð Ô&ñ A:Ø×(Ò(Ø%Ð&ØØ"Ø ØÔ0ØÔ/Ø*?ð )ñ ô ð ð /ð MÝ$+Ð,<Ñ$=Ô$=�MØ$Ð0°]À[Ò5PÐ5PÝ$ ]°TÔ5KÑ%KÑLÔL˜ð Ô:ÑFØ 'Ô G�Ið %7Ð$6Ð7GÑ$HÔ$H�MØ$Ð0Ð5GÐ5GÈÑ5VÔ5VÐ0Ø+¨GÔ4°{ÑB˜Ø š?˜?Ø#0µ5¸¸tÔ?UÑ9UÑ3VÔ3VÑ#V˜DÙ$ð $9�LÝ#¥CÐ(8Ñ$9Ô$9Ñ:Ô:ð 6ð 6˜Ø"2°2Ô"6˜Ø& wÔ/ð %Ø$Ø-Ð-¨gÑ6Ô6ð &Ø+=Ð+=Ø 0°°a±°°Ô :ñ,ô ,˜Lð  ,Ð7Ø1=¸gÔ1FÀqÔ1IÈ'Ô1R  à1<Ð?OÑ1O à '¨Ô 0°<Ñ ?À)Ò Kð !HØ#*¨7Ô#3°iÒ#?ð!Hà#*¨7Ô#3°kÑ#AÀCÒ#Gð +ð !/°¸´Ñ ?À)Ò Kð !JØ#5Ð#5°lÑ#CÔ#Cð!Jà#2°W¸U´^Ñ#CÀcÒ#Ið *ð
  .ð &°-ð &Ý',Ý$'¨°a©¸ÀÔ9IÑ$JÔ$JØ&*Ô&<ñ%=ñ("ô (" ð $4°g¸e´nÑ#DÀyÒ#PÐ#PØ+9 DØ8:Ð 0°°°Ñ 5Ø % Ø'.¨u¤~˜˜å 'Ð(8Ñ 9Ô 9�Ø Ð,Ø,9Ð)Ø+ð ð �Ø  Ô*�Ø ×'Ò'¨Ñ/Ô/�à˜7Ô# w¨u¤~Ò5Ð5¸T¿ZºZ¹\¼\Ð5Øà×!Ò! &Ñ)Ô)Ð)Ø�q‘�åØØ&Ø! 'Ô*Ø œØØ!Ø +Ø +Ø&7Ø#)Ô#8ð #Ô2ð"ÐCÐC°'¸'Ô2BÐCÑCÔCÐCà!ðñ ô ð ð ð ð ð& Ô6ð5à Ô!DÒDÐDàÔ5ð Ø”K×%Ò%Ø\Ø#ØÔ;ñô ð õ &)¨¡_¤_Ð"à�KŠKÝ�^ TÑ*Ô*¨]Ñ:ØÔ(Ô7ñ8ñô ð ðI �˜Z™œÒ(Ñ(ðP 	�
Š
‰Œˆˆˆr*   c                 óò   — | j         j        dk    ot          | j         j        ¦  «        dk    }|j        dk    rt          j        |d¦  «        }t          |¦  «        }| j                              ||¬¦  «        S )NÚcudar    r#   r   )Úto_cpu)	ri   r  r¤   r  Úndimrô   Úexpand_dimsÚget_ctranslate2_storager£   )r'   r‚   r´  s      r(   r£   zWhisperModel.encodeo  sq   € ð ”Ô" fÒ,ÐQµ°T´ZÔ5LÑ1MÔ1MÐPQÒ1QˆàŒ=˜AÒÐÝ”~ h°Ñ2Ô2ˆHÝ*¨8Ñ4Ô4ˆàŒz× Ò  °&Ð Ñ9Ô9Ð9r*   r—   c                 ó  — d }g }g }t          t          |j        | j        z  ¦  «        ¦  «        }|j        �t          |¦  «        |j        z   }	n| j        }	|	| j        k    rFt          dt          |¦  «        › d|	t          |¦  «        z
  › d|	› d| j        › d| j        › d�¦  «        ‚|j        D �]£}
|
dk    rd|j	        d|
d	œ}n|j
        |j        d
œ} | j        j        ||gf|j        |j        |j        |	dd|j        |j        |dœ	|¤Žd         }|j        d         }t          |¦  «        }|j        d         ||j        z  z  }||dz   z  }|                     |¦  «                             ¦   «         }t/          |¦  «        }|||
|f}|                     |¦  «         d}|j        �E||j        k    r%d}| j                             d|
||j        ¦  «         n|                     |¦  «         |j        �/||j        k     r$d}| j                             d|
||j        ¦  «         |j        �$|j        |j        k    r|j        �||j        k     rd}|s n.�Œ¥t?          |p|d„ ¬¦  «        }|d         |d         |
|d         f}|S )NrŽ   r�   r�   r‘   r’   r“   r   r    )rA   Únum_hypothesesÚsampling_topkrŸ   )rA   rC   T)	rD   rE   rF   rœ   r�   rž   rO   rP   Úmax_initial_timestamp_indexFzFCompression ratio threshold is not met with temperature %.1f (%f > %f)zDLog probability threshold is not met with temperature %.1f (%f < %f)c                 ó   — | d         S )Nr    r1   )Úxs    r(   ú<lambda>z5WhisperModel.generate_with_fallback.<locals>.<lambda>ð  s
   € ÈÈ1Ì€ r*   ©Úkeyr  ) r>   r  rR   r>  rW   r¤   rœ   r¥   rL   rB   rA   rC   ri   rª   rD   rE   rF   rO   rP   r«   r¬   ru   r”  rv   r   rI   rñ   r_  rG   rH   r:   rš  )r'   r…   r—   ro   r„   Údecode_resultÚall_resultsÚbelow_cr_threshold_resultsr»  rœ   r<   Úkwargsr´   r7   rµ   r¶   r8   r6   r9   Úneeds_fallbacks                       r(   r™  z#WhisperModel.generate_with_fallbackz  sŽ  € ð ˆØˆØ%'Ð"å&)Ý�'Ô/°$Ô2EÑEÑFÔFñ'
ô '
Ð#ð Ô!Ð-Ý˜V™œ wÔ'=Ñ=ˆJˆJàœˆJà˜œÒ'Ð'ÝðQ­s°6©{¬{ð Qð QØ¥ F¡¤Ñ+ðQð Qà,6ðQð Qð 7;´oðQð Qð ?C¼oðQð Qð Qñô ð ð #Ô/ð `	ñ `	ˆKØ˜QŠˆà!"Ø&-¤oØ%&Ø,7ð	ð ��ð ")Ô!2Ø 'Ô 0ðð �ð
 )�T”ZÔ(ØØ�ðð  'Ô5Ø#*Ô#=Ø%,Ô%AØ%Ø"Ø&*Ø&Ô5Ø 'Ô 7Ø,Gðð ð ðð ð ôˆFð Ô)¨!Ô,ˆFõ ˜&‘k”kˆGØ œ-¨Ô*¨g°wÔ7MÑ.MÑNˆKØ%¨°1©Ñ5ˆKà×#Ò# FÑ+Ô+×1Ò1Ñ3Ô3ˆDÝ 5°dÑ ;Ô ;Ðð ØØØ!ð	ˆMð ×Ò˜}Ñ-Ô-Ð-à"ˆNàÔ2Ð>Ø$ wÔ'JÒJÐJØ%)�Nà”K×%Ò%Ø`Ø#Ø)ØÔ;ñ	ô ð ð ð /×5Ò5°mÑDÔDÐDð Ô*Ð6Ø 'Ô"<Ò<Ð<à!%�à”×!Ò!ØZØØØÔ.ñ	ô ð ð Ô+Ð7ØÔ)¨GÔ,GÒGÐGØÔ.Ð:Ø 'Ô"<Ò<Ð<à!&�à!ð Ø�ñõ  Ø*Ð9¨k¸~¸~ðñ ô ˆMð
 ˜aÔ Ø˜aÔ ØØ˜aÔ ð	ˆMð Ðr*   r�   c                 ó  — g }|s|rº|s¸|                      |j        ¦  «         |rq|so|                     d|                     ¦   «         z   ¦  «        }t	          |¦  «        | j        dz  k    r|d | j        dz  dz
  …         }|                     |¦  «         |r)|                     || j        dz  dz
   d …         ¦  «         |                     |j        ¦  «         |r|                      |j        ¦  «         |r‹|                     d|                     ¦   «         z   ¦  «        }t	          |¦  «        | j        dz  k    r|d | j        dz  dz
  …         }|s|                      |j	        ¦  «         |                     |¦  «         |S )Nr}  r#   r    )
r   Úsot_prevr£   r”  r¤   rœ   r•  Úsot_sequenceÚno_timestampsri  )	r'   ro   r�   rQ   rN   rZ   r—   Úhotwords_tokensÚprefix_tokenss	            r(   r¢   zWhisperModel.get_promptü  s©  € ð ˆàð 	N˜xð 	N°ð 	NØ�MŠM˜)Ô,Ñ-Ô-Ð-Øð / ð /Ø"+×"2Ò"2°3¸¿ºÑ9IÔ9IÑ3IÑ"JÔ"J�Ý�Ñ'Ô'¨4¬?¸aÑ+?Ò?Ð?Ø&5Ð6P¸¼È1Ñ8LÈqÑ8PÐ6PÔ&Q�OØ—’˜oÑ.Ô.Ð.Øð NØ—’˜o°´À1Ñ0DÀqÑ0HÐ.IÐ.KÐ.KÔLÑMÔMÐMà�Š�iÔ,Ñ-Ô-Ð-àð 	3Ø�MŠM˜)Ô1Ñ2Ô2Ð2àð 	)Ø%×,Ò,¨S°6·<²<±>´>Ñ-AÑBÔBˆMÝ�=Ñ!Ô! T¤_¸Ñ%9Ò9Ð9Ø -Ð.H°´À1Ñ0DÀqÑ0HÐ.HÔ I�Ø%ð 9Ø—’˜iÔ7Ñ8Ô8Ð8Ø�MŠM˜-Ñ(Ô(Ð(àˆr*   rÝ   Ú
num_framesrj   c                 ó  ‡— t          |¦  «        dk    rd S g }g }	|D ]d}
ˆfd„|
D ¦   «         }|                     t          t          j                             |¦  «        ¦  «        ¦  «         |	                     |¦  «         Œe|                      ‰|||¦  «        }g }|D �]\}t          j        d„ |D ¦   «         ¦  «        }|| 	                    ¦   «                  }t          |¦  «        dk    rt          j
        |¦  «        nd}t          dt          |¦  «        ¦  «        }|dz  }t          |¦  «        dk    r›d}t          dt          |¦  «        ¦  «        D ]{}||         d	         ||         d
         z
  |k    rX||         d         |v r||         d
         |z   ||         d	<   ŒN||dz
           d         |v r||         d	         |z
  ||         d
<   Œ|t          |||¦  «         |                     ||f¦  «         �Œ^t          |¦  «        D �]x\  }}
d}|
d         d         | j        z  }||         \  }}t          |
¦  «        D �]>\  }}d}g }|t          ||         ¦  «        k     rê|t          |	|         |         ¦  «        k     rË||         |         }|d         r`|                     t#          |d         t%          ||d
         z   d¦  «        t%          ||d	         z   d¦  «        |d         ¬¦  «        ¦  «         |t          |d         ¦  «        z  }|dz  }|t          ||         ¦  «        k     r|t          |	|         |         ¦  «        k     °Ët          |¦  «        dk    �r|d         d	         |z
  |dz  k    rø|d         d	         |d         d
         z
  |k    s7t          |¦  «        dk    rÄ|d         d	         |d         d
         z
  |dz  k    r t          |¦  «        dk    re|d         d	         |d         d
         z
  |k    rDt'          |d         d	         dz  |d         d	         |z
  ¦  «        }|x|d         d	<   |d         d
<   t'          d|d         d	         |z
  ¦  «        |d         d
<   |d
         |d         d	         k     rX|d
         dz
  |d         d
         k    r=t'          dt          |d         d	         |z
  |d
         ¦  «        ¦  «        |d         d
<   n|d         d
         |d
<   |d	         |d         d
         k    rJ|d	         dz   |d         d	         k     r/t'          |d         d
         |z   |d	         ¦  «        |d         d	<   n|d         d	         |d	<   |d	         }|||         |         d<   �Œ@�Œz|S )Nr   c                 ó8   •— g | ]}ˆfd „|d         D ¦   «         ‘ŒS )c                 ó*   •— g | ]}|‰j         k     ¯|‘ŒS r1   )Úeotrk  s     €r(   r|   z?WhisperModel.add_word_timestamps.<locals>.<listcomp>.<listcomp>0  s%   ø€ ÐRÐRÐR˜5¸EÀIÄMÒ<QÐ<Q�Ð<QÐ<QÐ<Qr*   r7   r1   )rx   ry   ro   s     €r(   r|   z4WhisperModel.add_word_timestamps.<locals>.<listcomp>/  sC   ø€ ð ð ð àð SÐRÐRÐR J¨xÔ$8ÐRÑRÔRðð ð r*   c                 ó0   — g | ]}|d          |d         z
  ‘ŒS )r   r   r1   r  s     r(   r|   z4WhisperModel.add_word_timestamps.<locals>.<listcomp><  s%   € ÐCÐCÐC°��e”˜t Gœ}Ñ,ÐCÐCÐCr*   rh   gffffffæ?r#   u   .ã€‚!ï¼�?ï¼Ÿr    r   r   r    r5   r!   )r    r   r   r!   r7   é   r¾   r¿   r;   )r¤   r   r   Ú	itertoolsÚchainÚfrom_iterableÚfind_alignmentrô   ÚarrayÚnonzeroÚmedianr—  r.   r¦   Úmerge_punctuationsr©   rw   rt   r  rš  )r'   rÝ   ro   r…   rÌ  rT   rU   rj   Útext_tokensÚtext_tokens_per_segmentrÛ   Úsegment_tokensÚ
alignmentsÚmedian_max_durationsÚ	alignmentÚword_durationsÚmedian_durationrÔ   Úsentence_end_marksr±   Úsegment_idxÚ
word_indexrp   Úsubsegment_idxry   Úsaved_tokensr;   ÚtimingÚboundarys     `                          r(   r�   z WhisperModel.add_word_timestamps  so  ø€ õ ˆx‰=Œ=˜AÒÐØˆFàˆØ"$ÐØð 	;ð 	;ˆGðð ð ð à")ðñ ô ˆNð ×Ò�t¥I¤O×$AÒ$AÀ.Ñ$QÔ$QÑRÔRÑSÔSÐSØ#×*Ò*¨>Ñ:Ô:Ð:Ð:à×(Ò(Ø�{ N°Jñ
ô 
ˆ
ð  "ÐØ#ð 	Iñ 	IˆIÝœXØCÐC¸ÐCÑCÔCñô ˆNð ,¨N×,BÒ,BÑ,DÔ,DÔEˆNå-0°Ñ-@Ô-@À1Ò-DÐ-D•”	˜.Ñ)Ô)Ð)È#ð õ " #¥u¨_Ñ'=Ô'=Ñ>Ô>ˆOØ*¨QÑ.ˆLõ �>Ñ"Ô" QÒ&Ð&Ø%3Ð"õ ˜q¥# i¡.¤.Ñ1Ô1ð Wð W�AØ  ”| EÔ*¨Y°q¬\¸'Ô-BÑBÀ\ÒQÐQØ$ Qœ<¨Ô/Ð3EÐEÐEØ2;¸A´,¸wÔ2GÈ,Ñ2V˜I aœL¨Ñ/Ð/Ø& q¨1¡uÔ-¨fÔ5Ð9KÐKÐKØ4=¸a´LÀÔ4GÈ,Ñ4V˜I aœL¨Ñ1øå˜yÐ*>Ð@SÑTÔTÐTØ ×'Ò'¨¸,Ð(GÑHÔHÐHÑHå$-¨hÑ$7Ô$7ð J	Gñ J	GÑ ˆK˜ØˆJØ! !œ* VÔ,¨tÔ/EÑEˆKØ,@ÀÔ,MÑ)ˆO˜\Ý.7¸Ñ.@Ô.@ð FGñ FGÑ*� 
Ø �Ø�à ¥3 z°+Ô'>Ñ#?Ô#?Ò?Ð?ÀLÕSVØ+¨KÔ8¸ÔHñTô Tò Eð Eð (¨Ô4°ZÔ@�Fà˜f”~ð ØŸšÝ Ø%+¨F¤^Ý&+¨K¸&À¼/Ñ,IÈ1Ñ&MÔ&MÝ$)¨+¸¸u¼Ñ*EÀqÑ$IÔ$IØ,2°=Ô,Að	ñ ô ñô ð ð !¥C¨¨xÔ(8Ñ$9Ô$9Ñ9�LØ !‘O�Jð! !¥3 z°+Ô'>Ñ#?Ô#?Ò?Ð?ÀLÕSVØ+¨KÔ8¸ÔHñTô Tò Eð Eõ( �u‘:”: ’>‘>ð ˜Q”xØôà-ñ.à0?À!Ñ0CòDð Dð ˜aœ œ¨%°¬(°7Ô*;Ñ;¸lÒJÐJå ™JœJ¨šN˜NØ % a¤¨¤°%¸´(¸7Ô2CÑ CÀlÐUVÑFVÒ VÐ Võ   ™JœJ¨šN˜NØ % a¤¨¤°%¸´(¸7Ô2CÑ CÀlÒ RÐ Rå'*Ø % a¤¨¤°!Ñ 3°U¸1´X¸e´_À|Ñ5Sñ(ô (˜Hð CKÐJ˜E !œH U™O¨e°A¬h°wÑ.?Ý,/°°5¸´8¸E´?À\Ñ3QÑ,RÔ,R˜˜aœ Ñ)ð # 7Ô+¨e°A¬h°u¬oÒ=Ð=Ø& wÔ/°#Ñ5¸¸a¼ÀÔ8IÒIÐIå,/ØÝ  a¤¨¤°/Ñ AÀ:ÈgÔCVÑWÔWñ-ô -˜˜aœ Ñ)Ð)ð
 /4°A¬h°wÔ.?˜
 7Ñ+ð # 5Ô)¨E°"¬I°gÔ,>Ò>Ð>Ø& uÔ-°Ñ3°e¸B´iÀÔ6FÒFÐFå+.Ø! "œI gÔ.°Ñ@À*ÈUÔBSñ,ô ,˜˜bœ	 %Ñ(Ð(ð -2°"¬I°eÔ,<˜
 5Ñ)à,6°uÔ,=Ð)ØAF�˜Ô% nÔ5°gÑ>Ñ>ñMFGðN %Ð$r*   é   rÛ  Úmedian_filter_widthc                 ó4  ‡— t          |¦  «        dk    rg S | j                             ||j        |||¬¦  «        }g }t	          ||¦  «        D �]É\  }}	|j        Š|j        }
t          j        d„ |
D ¦   «         ¦  «        }t          j        d„ |
D ¦   «         ¦  «        }| 	                    |	|j
        gz   ¦  «        \  }}t          |¦  «        dk    r|                     g ¦  «         Œšt          j        t          j        d„ |d d…         D ¦   «         ¦  «        d¦  «        }t          |¦  «        dk    r|                     g ¦  «         Œüt          j        t          j        |¦  «        dd¬	¦  «                             t           ¦  «        }||         | j        z  }||d d…                  }||dd …                  }ˆfd
„t	          |d d…         |dd …         ¦  «        D ¦   «         }|                     d„ t	          |||||¦  «        D ¦   «         ¦  «         �ŒË|S )Nr   )rë  c                 ó   — g | ]
}|d          ‘ŒS r™   r1   ©rx   Úpairs     r(   r|   z/WhisperModel.find_alignment.<locals>.<listcomp>¸  ó   € Ð$DÐ$DÐ$D° T¨!¤WÐ$DÐ$DÐ$Dr*   c                 ó   — g | ]
}|d          ‘ŒS )r    r1   rî  s     r(   r|   z/WhisperModel.find_alignment.<locals>.<listcomp>¹  rð  r*   r    c                 ó,   — g | ]}t          |¦  «        ‘ŒS r1   ©r¤   ©rx   Úts     r(   r|   z/WhisperModel.find_alignment.<locals>.<listcomp>Ç  s   € Ð<Ð<Ð< a�3˜q™6œ6Ð<Ð<Ð<r*   r¿   )r    r   )Úconstant_valuesc                 óN   •— g | ]!\  }}t          j        ‰||…         ¦  «        ‘Œ"S r1   )rô   Úmean)rx   r±   ÚjÚtext_token_probss      €r(   r|   z/WhisperModel.find_alignment.<locals>.<listcomp>Ó  sA   ø€ ð "ð "ð "á�A�qõ ”Ð(¨¨1¨Ô-Ñ.Ô.ð"ð "ð "r*   c           	      óB   — g | ]\  }}}}}t          |||||¬ ¦  «        ‘ŒS ))r    r7   r   r   r!   )rt   )rx   r    r7   r   r   r!   s         r(   r|   z/WhisperModel.find_alignment.<locals>.<listcomp>Ù  sR   € ð ð ð ñ >˜˜f e¨S°+õ Ø!Ø%Ø#ØØ$/ðñ ô ðð ð r*   )r¤   ri   ÚalignrÈ  r~   rú  rÞ  rô   r×  Úsplit_to_word_tokensrÐ  r   ÚpadÚcumsumÚdiffÚastyper[   r=  )r'   ro   rÛ  r…   rÌ  rë  r³   Úreturn_listr´   Ú
text_tokenrÞ  Útext_indicesÚtime_indicesr;   Úword_tokensÚword_boundariesÚjumpsÚ
jump_timesÚstart_timesÚ	end_timesÚword_probabilitiesrú  s                        @r(   rÖ  zWhisperModel.find_alignment¢  s†  ø€ õ ˆ{ÑÔ˜qÒ Ð ØˆIà”*×"Ò"ØØÔ"ØØØ 3ð #ñ 
ô 
ˆð ˆÝ"% g¨{Ñ";Ô";ð 0	ñ 0	ÑˆF�JØ%Ô6ÐØÔ*ˆJÝœ8Ð$DÐ$D¸Ð$DÑ$DÔ$DÑEÔEˆLÝœ8Ð$DÐ$D¸Ð$DÑ$DÔ$DÑEÔEˆLà!*×!?Ò!?Ø˜iœm˜_Ñ,ñ"ô "ÑˆE�;õ �;ÑÔ 1Ò$Ð$ð ×"Ò" 2Ñ&Ô&Ð&ØÝ œfÝ”	Ð<Ð<¨;°s¸°sÔ+;Ð<Ñ<Ô<Ñ=Ô=¸vñô ˆOõ �?Ñ#Ô# qÒ(Ð(Ø×"Ò" 2Ñ&Ô&Ð&Øå”F�2œ7 <Ñ0Ô0°&È!ÐLÑLÔL×SÒSÝñô ˆEð & eÔ,¨tÔ/EÑEˆJØ$ _°S°b°SÔ%9Ô:ˆKØ" ?°1°2°2Ô#6Ô7ˆIð"ð "ð "ð "å °°°Ô 4°oÀaÀbÀbÔ6IÑJÔJð"ñ "ô "Ðð
 ×Òðð õ BEØ˜{¨K¸ÐDVñBô Bðñ ô ñô ð ñ ð Ðr*   c           
      ó  ‡— |€|€
J d¦   «         ‚|�g|r9t          ||¦  «        }t          ||¦  «        \  }}	t          j        |d¬¦  «        }|d|| j        j        z  …         }|                      |¦  «        }|dd|| j        j        z  …f         }i Št          d|j        d         | j        j        ¦  «        D ]£}
|  	                    t          |d|
|
| j        j        z   …f         ¦  «        ¦  «        }| j                             |¦  «        d         }d„ |D ¦   «         }|d         \  }}||k    r nS‰                     |g ¦  «                             |¦  «         Œ¤t          ‰ˆfd„¬	¦  «        }t          ‰|         ¦  «        }|||fS )
aå  
        Use Whisper to detect the language of the input audio or features.

        Arguments:
            audio: Input audio signal, must be a 1D float array sampled at 16khz.
            features: Input Mel spectrogram features, must be a float array with
                shape (n_mels, n_frames), if `audio` is provided, the features will be ignored.
                Either `audio` or `features` must be provided.
            vad_filter: Enable the voice activity detection (VAD) to filter out parts of the audio
                without speech. This step is using the Silero VAD model.
            vad_parameters: Dictionary of Silero VAD parameters or VadOptions class (see available
                parameters and default values in the class `VadOptions`).
            language_detection_threshold: If the maximum probability of the language tokens is
                higher than this value, the language is detected.
            language_detection_segments: Number of segments to consider for the language detection.

        Returns:
            language: Detected language.
            language_probability: Probability of the detected language.
            all_language_probs: List of tuples with all language names and probabilities.
        Nz.Either `audio` or `features` must be provided.r   rç   .r¿   c                 ó,   — g | ]\  }}|d d…         |f‘ŒS )r#   rf  r1   )rx   rl  Úprobs      r(   r|   z0WhisperModel.detect_language.<locals>.<listcomp>"  s)   € Ð!SÐ!SÐ!S¹-¸5À$ 5¨¨2¨¤;°Ð"5Ð!SÐ!SÐ!Sr*   c                 ó.   •— t          ‰|          ¦  «        S r‹  ró  )ÚlangÚdetected_language_infos    €r(   r¾  z.WhisperModel.detect_language.<locals>.<lambda>-  s   ø€ ¥Ð%;¸DÔ%AÑ!BÔ!B€ r*   r¿  )r   r   rô   rû   râ   Ú	n_samplesr–  r¦   r¡   r£   r   ri   r§   Ú
setdefaultr   rš  )r'   rÃ   r‚   rÆ   rÇ   rÊ   rÉ   rb  r  rƒ   r±   r…   r³   rb   r^   r_   r  s                   @r(   r§   zWhisperModel.detect_languageè  sï  ø€ ð> Ð Ð!5Ð!5Ø;ñ "6Ô!5Ð!5ð ÐØð =Ý 5°e¸^Ñ LÔ L�Ý0>¸uÀmÑ0TÔ0TÑ-�˜oÝœ |¸!Ð<Ñ<Ô<�àØPÐ-°Ô0FÔ0PÑPÐPôˆEð ×-Ò-¨eÑ4Ô4ˆHàØÐUÐ.°Ô1GÔ1UÑUÐUÐUô
ˆð "$ÐÝ�q˜(œ.¨Ô,¨dÔ.DÔ.RÑSÔSð 	Ið 	IˆAØ!Ÿ[š[Ý˜H S¨!¨a°$Ô2HÔ2VÑ.VÐ*VÐ%VÔWÑXÔXñô ˆNð ”j×0Ò0°Ñ@Ô@ÀÔCˆGð "TÐ!SÈ7Ð!SÑ!SÔ!SÐà-?ÀÔ-BÑ*ˆHÐ*Ø#Ð&BÒBÐBØ�Ø"×-Ò-¨h¸Ñ;Ô;×BÒBÐCWÑXÔXÐXÐXõ Ø&ØBÐBÐBÐBðñ ô ˆHõ $'Ð'=¸hÔ'GÑ#HÔ#HÐ àÐ-Ð/AÐAÐAr*   )
r  r   r  r   r    NFNNNr‹  )FNN)rê  )NNFNr    r¾   )&r+   r,   r-   r0   r   r>   r	   r
   r[   rt   rk   ÚpropertyrE  r8  r   rô   rõ   r.   r   r   r   r3   r]   r·   r   r€   r@   r/  ÚStorageViewra  r£   r0  ÚWhisperGenerationResultr™  r¢   r�   rÖ  r§   r1   r*   r(   r  r  l  s�  € € € € € ð Ø./Ø%ØØØ'+Ø!&ØØ"&Ø59ðeð eàðeð ðeð ˜C  c¤˜NÔ+ð	eð
 ðeð ðeð ðeð   ”}ðeð ðeð ðeð ˜3”-ðeð !  s¨D yÔ!1Ô2ðeð eð eð eðN ðO T¨#¤Yð Oð Oð Oñ „XðOðð È$ð ð ð ð ð* #'Ø Ø"ØØØØ !Ø$%Ø$%ðE
ð E
ð E
ð 8;Ø.2Ø/2Ø+/Ø-0Ø>BØ $Ø#Ø02¨tØ#(Ø'*Ø %Ø$2Ø#EØ"Ø Ø<@Ø(,Ø&*Ø36Ø;?Ø"&Ø8;Ø+,ðWSð Sà�S˜( B¤JÐ.Ô/ðSð ˜3”-ðSð ð	Sð
 ðSð ðSð ðSð ðSð ðSð "ðSð "ðSð ˜5 $ u¤+¨u°U¸C°ZÔ/@Ð@ÔAðSð( &.¨e¤_ð)Sð* % UœOð+Sð, & eœ_ð-Sð. %)ð/Sð0 &+ð1Sð2 !  s¨H°S¬MÐ'9Ô!:Ô;ð3Sð4 ˜”ð5Sð6 ð7Sð8 " $ s¤)Ô,ð9Sð: !ð;Sð<  %ð=Sð> ð?Sð@ "ðASðB !ðCSðD ðESðF ðGSðH !  t¨ZÐ'7Ô!8Ô9ðISðJ ! œðKSðL ˜s”mðMSðN ˜s D¨¤KÐ/Ô0ðOSðP *2°%¬ðQSðR ˜3”-ðSSðT '/¨u¤oðUSðV &)ðWSðX 
ˆx˜Ô Ð"3Ð3Ô	4ðYSð Sð Sð SðjM?àðM?ð �S”	ðM?ð ð	M?ð
 ðM?ð  ðM?ð ðM?ð 
ˆd�3ŒiŒðM?ð M?ð M?ð M?ðj =Að^ð ^à”*ð^ð ð^ð &ð	^ð ! Ô!8Ô9ð^ð 
�'Ô	ð^ð ^ð ^ð ^ð@		:˜rœzð 	:¨kÔ.Eð 	:ð 	:ð 	:ð 	:ð@à#Ô/ð@ð �S”	ð@ð ð	@ð
 &ð@ð 
ˆ{Ô!Ô9¸5À%ÈÐNÔ	Oð@ð @ð @ð @ðL $)Ø $Ø"&ð!ð !àð!ð ˜cœð!ð !ð	!ð
 ˜”ð!ð ˜3”-ð!ð 
ˆcŒð!ð !ð !ð !ðFA%à�t”*ðA%ð ðA%ð $Ô/ð	A%ð
 ðA%ð "ðA%ð !ðA%ð  %ðA%ð 
ðA%ð A%ð A%ð A%ðR $%ðDð DàðDð ˜#”YðDð $Ô/ð	Dð
 ðDð !ðDð 
ˆdŒðDð Dð Dð DðP '+Ø)-Ø Ø26Ø+,Ø.1ðIBð IBà˜œ
Ô#ðIBð ˜2œ:Ô&ðIBð ð	IBð
 ˜d JÐ.Ô/ðIBð &)ðIBð ',ðIBð 
ˆs�E˜4  c¨5 jÔ 1Ô2Ð2Ô	3ðIBð IBð IBð IBð IBð IBr*   r  rÝ   rb  rÏ   rË   c              #   ó6  K  — t          ||¦  «        }| D �]}|j        r´g }|j        D ]~}|j        |j        z   dz  }|                     |¦  «        }|                     |j        |¦  «        |_        |                     |j        |¦  «        |_        |                     |¦  «         Œ|d         j        |_        |d         j        |_        ||_        n@|                     |j        ¦  «        |_        |                     |j        d¬¦  «        |_        |V — �Œd S )Nr#   r   r¿   T)Úis_end)r   r;   r   r   Úget_chunk_indexÚget_original_timer   )	rÝ   rb  rÏ   Úts_maprÛ   r;   r    ÚmiddleÚchunk_indexs	            r(   r  r  4  s!  è è € õ
 ! °Ñ>Ô>€Fàð ñ ˆØŒ=ð 	MØˆEØœð #ð #�àœ* t¤xÑ/°1Ñ4�Ø$×4Ò4°VÑ<Ô<�Ø#×5Ò5°d´jÀ+ÑNÔN�”
Ø!×3Ò3°D´H¸kÑJÔJ�”Ø—’˜TÑ"Ô"Ð"Ð"à! !œHœNˆGŒMØ œ)œ-ˆGŒKØ!ˆGŒMˆMð #×4Ò4°W´]ÑCÔCˆGŒMØ ×2Ò2°7´;ÀtÐ2ÑLÔLˆGŒKàˆˆˆ‰ð'ð r*   rÛ   c                 ól   — t          j        | ¦  «        } t          j                             | ¦  «        } | S r‹  )rô   Úascontiguousarrayr/  r  Ú
from_array)rÛ   s    r(   r·  r·  Q  s-   € ÝÔ" 7Ñ+Ô+€GÝÔ%×0Ò0°Ñ9Ô9€GØ€Nr*   r6   c                 óŽ   — |                       d¦  «        }t          |¦  «        t          t          j        |¦  «        ¦  «        z  S )NrH  )r£   r¤   ÚzlibÚcompress)r6   Ú
text_bytess     r(   rv   rv   W  s6   € Ø—’˜WÑ%Ô%€JÝˆz‰?Œ?�S¥¤¨zÑ!:Ô!:Ñ;Ô;Ñ;Ð;r*   ro   rP   c                 óŠ  — d|v r'd„ |D ¦   «         }|                      | j        ¦  «         n7|�t          |¦  «        dk    rg }nt          |t          ¦  «        s
J d¦   «         ‚|                      | j        | j        | j        | j        | j	        | j
        g¦  «         t          t          t          |¦  «        ¦  «        ¦  «        S )Nr¿   c                 ó   — g | ]
}|d k    ¯|‘ŒS r™   r1   rô  s     r(   r|   z)get_suppressed_tokens.<locals>.<listcomp>a  s   € Ð@Ð@Ð@ ¸¸aº¸˜1¸¸¸r*   r   zsuppress_tokens must be a list)r•  Únon_speech_tokensr¤   ró   r   r·   Ú	translateÚsotrÇ  Úsot_lmÚ	no_speechr  ÚsortedÚset)ro   rP   s     r(   r  r  \  sÚ   € ð 
ˆ_ÐÐØ@Ð@ oÐ@Ñ@Ô@ˆØ×Ò˜yÔ:Ñ;Ô;Ð;Ð;Ø	Ð	 ¥C¨Ñ$8Ô$8¸AÒ$=Ð$=Øˆˆå˜/­4Ñ0Ô0ÐRÐRÐ2RÑRÔRÐRà×ÒàÔ ØÔØŒMØÔØÔØÔð	
ñ	ô 	ð 	õ •�˜OÑ,Ô,Ñ-Ô-Ñ.Ô.Ð.r*   rà  Ú	prependedÚappendedc                 óž  — t          | ¦  «        dz
  }t          | ¦  «        dz
  }|dk    r‡| |         }| |         }|d                              d¦  «        rO|d                              ¦   «         |v r3|d         |d         z   |d<   |d         |d         z   |d<   d|d<   g |d<   n|}|dz  }|dk    °‡d}d}|t          | ¦  «        k     r„| |         }| |         }|d                              d¦  «        s=|d         |v r3|d         |d         z   |d<   |d         |d         z   |d<   d|d<   g |d<   n|}|dz  }|t          | ¦  «        k     °‚d S d S )Nr#   r    r   r    r}  r7   r+  )r¤   Ú
startswithr”  Úendswith)rà  r/  r0  r±   rù  ÚpreviousÚ	followings          r(   rÚ  rÚ  v  s¤  € åˆI‰Œ˜Ñ€AÝˆI‰Œ˜Ñ€AØ
ˆqŠ&ˆ&Ø˜Q”<ˆØ˜a”Lˆ	Ø�FÔ×&Ò& sÑ+Ô+ð 	°¸Ô0@×0FÒ0FÑ0HÔ0HÈIÐ0UÐ0Uà (¨Ô 0°9¸VÔ3DÑ DˆI�fÑØ"*¨8Ô"4°yÀÔ7JÑ"JˆI�hÑØ!ˆH�VÑØ!#ˆH�XÑÐàˆAØ	ˆQ‰ˆð ˆqŠ&ˆ&ð 	
€AØ	€AØ
�c�)‰nŒnÒ
Ð
Ø˜Q”<ˆØ˜a”Lˆ	Ø˜Ô×(Ò(¨Ñ-Ô-ð 	°)¸FÔ2CÀxÐ2OÐ2Oà'¨Ô/°)¸FÔ2CÑCˆH�VÑØ!)¨(Ô!3°iÀÔ6IÑ!IˆH�XÑØ "ˆI�fÑØ"$ˆI�hÑÐàˆAØ	ˆQ‰ˆð �c�)‰nŒnÒ
Ð
Ð
Ð
Ð
Ð
r*   )=rÓ  rL  r]  r,  r#  Údataclassesr   r   Úinspectr   Úmathr   Útypingr   r   r	   r
   r   r   Úwarningsr   r/  Únumpyrô   r3  r   Úfaster_whisper.audior   r   Ú faster_whisper.feature_extractorr   Úfaster_whisper.tokenizerr   r   Úfaster_whisper.utilsr   r   r   r   Úfaster_whisper.vadr   r   r   r   r   r3   r@   r]   rf   r  rt   r>   r  rõ   r  r·  r0   r.   rv   r  rÚ  r1   r*   r(   ú<module>rA     sÎ  ðØ Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø €€€à )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ Ð Ð Ð Ð Ð à Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð à Ð Ð Ð Ð Ð à :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø =Ð =Ð =Ð =Ð =Ð =Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ Vðð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ñ ô ñ „ðð ðð ð ð ð ñ ô ñ „ðð, ðð ð ð ð ñ ô ñ „ðð: ðð ð ð ð ñ ô ñ „ððz)ð z)ð z)ð z)ð z)ñ z)ô z)ð z)ðzEBð EBð EBð EBð EBñ EBô EBð EBðP&Ø�wÔðà˜”:ðð ðð ˆgÔð	ð ð ð ð: R¤Zð °KÔ4Kð ð ð ð ð< ð <¨ð <ð <ð <ð <ð
/Øð/à˜3”Zð/ð ˆd�3ŒiÔð/ð /ð /ð /ð4 $ t¤*ð ¸ð Èð ÐPTð ð ð ð ð ð r*   