+
    œ°³j%ä  ã                   ó&  € R t ^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RIH	t	H
t
HtHtHt ^ RIHt ^RIHt ^RIHt ^RIHtHt ]P.                  ! ]4      tRR	R
RRRRR/t/ RRbRRbRRbRRbRRbRRbRRbRRbR R!bR"R#bR$R%bR&R'bR(R)bR*R+bR,R-bR.R/bR0R1b/ R2R3bR4R5bR6R7bR8R9bR:R;bR<R=bR>R?bR@RAbRBRCbRDREbRFRGbRHRIbRJRKbRLRMbRNRObRPRQbRRRSbC/ RTRUbRVRWbRXRYbRZR[bR\R]bR^R_bR`RabRbRcbRdRebRfRgbRhRibRjRkbRlRmbRnRobRpRqbRrRsbRtRubC/ RvRwbRxRybRzR{bR|R}bR~RbR€R�bR‚RƒbR„R…bR†R‡bRˆR‰bRŠR‹bRŒR�bRŽR�bR�R‘bR’R“bR”R•bR–R—bC/ R˜R™bRšR›bRœR�bRžRŸbR R¡bR¢R£bR¤R¥bR¦R§bR¨R©bRªR«bR¬R­bR®R¯bR°R±bR²R³bR´RµbR¶R·bR¸R¹bCRºR»R¼R½R¾R¿RÀRÁRÂRÃRÄRÅRÆRÇRÈRÉRÊRËRÌRÍRÎRÏRÐRÑRÒRÓRÔRÕRÖR×/Ct/ ]P9                  4        U Uu/ uF  w  rWbK	  	  upp CRØR¾RÙR&RÚR(RÛR°RÜR¼RÝR²RÞRŒRßRBRàRBRáRŽRâRRãR/CtRäRå.t ! Ræ Rç]4      tR÷Rè Ré llt RøRê lt!RëRì/Rí lt"RøRî lt!Rï t#R÷Rð Rñ llt Rò Ró lt$Rô Rõ lt%Rö t&Rç.t'R# u upp i )ùz!Tokenization classes for Whisper.N)Ú	lru_cache)Ú
AddedTokenÚ	TokenizerÚdecodersÚpre_tokenizersÚ
processors)ÚBPE)ÚTokenizersBackend)Úlogging)ÚBasicTextNormalizerÚEnglishTextNormalizerÚ
vocab_filez
vocab.jsonÚtokenizer_fileztokenizer.jsonÚmerges_filez
merges.txtÚnormalizer_fileznormalizer.jsonÚenÚenglishÚzhÚchineseÚdeÚgermanÚesÚspanishÚruÚrussianÚkoÚkoreanÚfrÚfrenchÚjaÚjapaneseÚptÚ
portugueseÚtrÚturkishÚplÚpolishÚcaÚcatalanÚnlÚdutchÚarÚarabicÚsvÚswedishÚitÚitalianÚidÚ
indonesianÚhiÚhindiÚfiÚfinnishÚviÚ
vietnameseÚheÚhebrewÚukÚ	ukrainianÚelÚgreekÚmsÚmalayÚcsÚczechÚroÚromanianÚdaÚdanishÚhuÚ	hungarianÚtaÚtamilÚnoÚ	norwegianÚthÚthaiÚurÚurduÚhrÚcroatianÚbgÚ	bulgarianÚltÚ
lithuanianÚlaÚlatinÚmiÚmaoriÚmlÚ	malayalamÚcyÚwelshÚskÚslovakÚteÚteluguÚfaÚpersianÚlvÚlatvianÚbnÚbengaliÚsrÚserbianÚazÚazerbaijaniÚslÚ	slovenianÚknÚkannadaÚetÚestonianÚmkÚ
macedonianÚbrÚbretonÚeuÚbasqueÚisÚ	icelandicÚhyÚarmenianÚneÚnepaliÚmnÚ	mongolianÚbsÚbosnianÚkkÚkazakhÚsqÚalbanianÚswÚswahiliÚglÚgalicianÚmrÚmarathiÚpaÚpunjabiÚsiÚsinhalaÚkmÚkhmerÚsnÚshonaÚyoÚyorubaÚsoÚsomaliÚafÚ	afrikaansÚocÚoccitanÚkaÚgeorgianÚbeÚ
belarusianÚtgÚtajikÚsdÚsindhiÚguÚgujaratiÚamÚamharicÚyiÚyiddishÚloÚlaoÚuzÚuzbekÚfoÚfaroeseÚhtzhaitian creoleÚpsÚpashtoÚtkÚturkmenÚnnÚnynorskÚmtÚmalteseÚsaÚsanskritÚlbÚluxembourgishÚmyÚmyanmarÚboÚtibetanÚtlÚtagalogÚmgÚmalagasyÚasÚassameseÚttÚtatarÚhawÚhawaiianÚlnÚlingalaÚhaÚhausaÚbaÚbashkirÚjwÚjavaneseÚsuÚ	sundaneseÚyueÚ	cantoneseÚburmeseÚ	valencianÚflemishÚhaitianÚletzeburgeschÚpushtoÚpanjabiÚ	moldavianÚmoldovanÚ	sinhaleseÚ	castilianÚmandarinÚ	translateÚ
transcribec                   óÌ  a a€ ] tR t^£t oRt]tRR.t]t	R)V3R lV 3R lllt
R*V3R lV 3R llltR+R	 lt]R,R
 l4       tR-V3R lR lltR tR.V3R lV 3R llltRRRRRR/V3R lV 3R llltR t]R-R l4       tR/V3R lR lltR0V3R lR llt]V3R lR l4       tR/V3R lR lltR1V3R lV 3R  llltR2R! ltR" tR3V3R# lR$ lltV3R% lR& lt]R' 4       t R(t!Vt"V ;t## )4ÚWhisperTokenizeraß  
Construct a "fast" Whisper tokenizer (backed by HuggingFace's *tokenizers* library).

This tokenizer inherits from [`PreTrainedTokenizerFast`] which contains most of the main methods. Users should
refer to this superclass for more information regarding those methods.

Args:
    vocab_file (`str`, *optional*):
        Path to the vocabulary file.
    merges_file (`str`, *optional*):
        Path to the merges file.
    normalizer_file (`str`, *optional*):
        Path to the normalizer_file file.
    tokenizer_file (`str`, *optional*):
        Path to [tokenizers](https://github.com/huggingface/tokenizers) file (generally has a .json extension) that
        contains everything needed to load the tokenizer.
    unk_token (`str`, *optional*, defaults to `"<|endoftext|>"`):
        The unknown token. A token that is not in the vocabulary cannot be converted to an ID and is set to be this
        token instead.
    bos_token (`str`, *optional*, defaults to `"<|endoftext|>"`):
        The beginning of sequence token. The `decoder_start_token_id` is used to set the first token as
        `"<|startoftranscript|>"` when generating.
    eos_token (`str`, *optional*, defaults to `"<|endoftext|>"`):
        The end of sequence token.
    add_prefix_space (`bool`, *optional*, defaults to `False`):
        Whether or not to add an initial space to the input. This allows to treat the leading word just as any
        other word. (Whisper tokenizer detect beginning of words by the preceding space).
    language (`str`, *optional*):
        The language of the transcription text. The corresponding language id token is appended to the start of the
        sequence for multilingual speech recognition and speech translation tasks, e.g. for Spanish the token
        `"<|es|>"` is appended to the start of sequence. This should be used for multilingual fine-tuning only.
    task (`str`, *optional*):
        Task identifier to append at the start of sequence (if any). This should be used for mulitlingual
        fine-tuning, with `"transcribe"` for speech recognition and `"translate"` for speech translation.
    predict_timestamps (`bool`, *optional*, defaults to `False`):
        Whether to omit the `<|notimestamps|>` token at the start of the sequence.
Ú	input_idsÚattention_maskFc                óT   <€ V ^8„  d   QhRS[ S[S[ S[3,          ,          R,          /# )é   ÚvocabN)ÚstrÚdictÚint)ÚformatÚ__classdict__s   "€Úq/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/whisper/tokenization_whisper.pyÚ__annotate__ÚWhisperTokenizer.__annotate__Î   s*   ø€ ÷ F!ñ F!á‘T™#™s˜(•^Õ# dÕ*ñF!ó    c                ó�  <€ \        V\        4      '       d   \        VR R R RR7      MTp\        V\        4      '       d   \        VR R R RR7      MTp\        V\        4      '       d   \        VR R R RR7      MTpVe   TM/ V n        Ve   TM. V n        \        \        V P                  V P                  RRRR R7      4      V n        \        P                  ! VR7      V P                  n
        \        P                  ! 4       V P                  n        \        SV `8  ! RRVRVR	VR
VRVRVRV	RV
/VB  Ve;   \        VRR7      ;_uu_ 4       p\         P"                  ! V4      V n        RRR4       MRV n        \&        P(                  ! R4      V n        W€n        W�n        W n        V P3                  4        R#   + '       g   i     LO; i)FT)ÚlstripÚrstripÚ
normalizedÚspecialNÚ )rì   ÚmergesÚdropoutÚcontinuing_subword_prefixÚend_of_word_suffixÚfuse_unk)Úadd_prefix_spaceÚ	unk_tokenÚ	bos_tokenÚ	eos_tokenr  r   ÚlanguageÚtaskÚpredict_timestampsúutf-8©Úencodingz<\|(\d+\.\d+)\|>© )Ú
isinstancerí   r   Ú_vocabÚ_mergesr   r   Ú
_tokenizerr   Ú	ByteLevelÚpre_tokenizerr   ÚdecoderÚsuperÚ__init__ÚopenÚjsonÚloadÚenglish_spelling_normalizerÚreÚcompileÚtimestamp_patr  r  r  Úset_prefix_tokens)Úselfrì   rü   r   r  r  r  r  r  r  r  ÚkwargsÚvocab_handleÚ	__class__s   &&&&&&&&&&&, €rò   r  ÚWhisperTokenizer.__init__Î   sÐ  ø€ ô  ˜)¤S×)Ò)ô �y¨°uÈÐX\Õ]àð 	ô ˜)¤S×)Ò)ô �y¨°uÈÐX\Õ]àð 	ô ˜)¤S×)Ò)ô �y¨°uÈÐX\Õ]àð 	ð  %Ò0‘e°bˆŒØ!'Ò!3‘v¸ˆŒä#ÜØ—k‘kØ—|‘|ØØ*,Ø#%Øôó	
ˆŒô )7×(@Ò(@ÐRbÔ(cˆ�‰Ô%Ü"*×"4Ò"4Ó"6ˆ�‰Ôä‰Òñ 
	
Øð
	
àð
	
ð  ð
	
ð .ð	
	
ð
 ,ð
	
ð ð
	
ð ð
	
ð  2ð
	
ð ò
	
ð Ò&Ü�o°×8Õ8¸LÜ37·9²9¸\Ó3J�Ô0÷ 9Ð8ð 04ˆDÔ,äŸZšZÐ(;Ó<ˆÔà ŒØŒ	Ø"4ÔØ×ÑÖ ÷ 9×8ús   Å
F5Æ5G	c                ó    <€ V ^8„  d   QhRS[ /# ©rë   Úreturn©rí   )rð   rñ   s   "€rò   ró   rô     s   ø€ ÷ .(ñ .(á	ñ.(rõ   c                ó  <€ V P                   R,          ^,           p. .pRpRpRp	\        V4       FÙ  w  r«Wµ8¼  d·   \        Wµ,
          V,          4      pWÇ8  df   V
^8¬  ;'       d2    W^,
          ,          V8¬  ;'       d    W^,
          ,          V8¬  '       * pV'       d   WƒV,          ,          pMT	pW‰,          pVRR	 pTp	TpVP                  RWÈ,           R R24       VP                  . 4       KÁ  VR,          P                  V4       KÛ  	  . pV Ff  p\	        V\
        4      '       d   VP                  V4       K,  V'       d"   VP                  \        SV `  WòR7      4       KU  VP                  R4       Kh  	  RP                  V4      # )
z¬
Timestamp tokens are above the special tokens' id range and are ignored by `decode()`. This method decodes
given tokens with timestamps tokens annotated, e.g. "<|1.08|>".
ç        Nz<|z.2fz|>©Úskip_special_tokensrû   éÿÿÿÿéþÿÿÿ)	Úall_special_idsÚ	enumerateÚfloatÚappendr  rí   r  ÚdecodeÚjoin)r  Ú	token_idsr)  Útime_precisionÚsegment_sizeÚtimestamp_beginÚoutputsÚcur_max_timestampÚprev_segments_lenÚpenultimate_timestampÚiÚtokenÚ	timestampÚlast_was_single_endingÚdecoded_outputsÚsr   s   &&&&&           €rò   Ú_decode_with_timestampsÚ(WhisperTokenizer._decode_with_timestamps  sx  ø€ ð ×.Ñ.¨rÕ2°QÕ6ˆØ�$ˆàÐØÐØ #Ðä! )Ö,‰HˆAØÔ'Ü! 5Õ#:¸nÕ"LÓM�	àÔ0à-.°!©V÷ .ð .Ø! a¥%Õ(¨OÑ;×cÐcÀ	ÈaÍ%Õ@PÐTcÑ@cô9Ð*÷ .Ø)¸lÕ-JÕJÑ)à,AÐ)Ø)ÕBÐ)Ø")¨#¨2 ,˜à(9Ð%Ø$-Ð!à—‘  YÕ%BÀCÐ#HÈÐKÔLØ—‘˜rÖ"à˜•×"Ñ" 5Ö)ñ- -ð0 ˆÛˆAÜ˜!œS×!Ò!Ø×&Ñ& qÖ)ßØ×&Ñ&¤u¡w¡~°a ~Ó'aÖbà×&Ñ& rÖ*ñ ð �w‰w�Ó'Ð'rõ   c           
     óê  € . pR\        \        V4      4      9   d>   \        VR4      '       d,   \        VP                  4      '       d   VP	                  4       p\
        P                  ! V4      pVP                  ^ ,          ^8”  d&   \        VP                  4      ^8”  d   \        R4      hV P                  R,          ^,           pW8¬  p\
        P                  ! VRR VR,          ,          4      ^ ,          ^,           pVP                  ^ ,          ^ 8X  d   VP                  4       ^8:  d   . # \
        P                  ! V4      ^ ,          R,          ^,           V9  dA   \
        P                  ! V\
        P                  ! V4      ^ ,          R,          ^,           4      p\
        P                  ! V4      ^ ,          ^ ,          p^ p	^ p
V EF&  pWV p\        V4      ^8”  Ed   V^ ,          P                  4       V,
          pVR,          P                  4       V,
          pWÙ8  dX   V^8¬  ;'       d2    W^,
          ,          V8¬  ;'       d    W^,
          ,          V8¬  '       * pV'       d
   W£,          p
MW©,          p
Tp	V P                  V4      pV P!                  V4      pV P#                  V4      pVP                  RVRWÒ,          W¢,          ,           Wâ,          W¢,          ,           3/4       TpEK)  	  V# )	a°  
Compute offsets for a given tokenized input

Args:
    token_ids (`Union[int, list[int], np.ndarray, torch.Tensor]`):
        List of tokenized input ids. Can be obtained using the `__call__` method.
    time_precision (`float`, *optional*, defaults to 0.02):
        The time ratio to convert from token to time.
    segment_size (`int`, *optional*, defaults to 1500):
        The number of features in the input mel spectrogram.
ÚtorchÚcpuz)Can only process a single input at a timeNºé   NNÚtextr<  r*  )rí   ÚtypeÚhasattrÚcallablerD  ÚnpÚarrayÚshapeÚlenÚ
ValueErrorr,  ÚwhereÚsumr/  ÚitemÚ_preprocess_token_idsÚ_decodeÚ_filter_timestamp_ids)r  r2  r3  r4  Úoffsetsr5  Útimestamp_tokensÚconsecutiveÚ
last_slicer7  r8  Úcurrent_sliceÚsliced_tokensÚstart_timestamp_positionÚend_timestamp_positionÚis_single_endingrG  s   &&&&             rò   Ú_compute_offsetsÚ!WhisperTokenizer._compute_offsetsH  s�  € ð ˆà”cœ$˜y›/Ó*Ô*´¸	À5×0IÒ0IÌhÐW`×WdÑWd×NeÒNeØ!Ÿ™›ˆIÜ—H’H˜YÓ'ˆ	Ø�?‰?˜1Õ Ô!¤c¨)¯/©/Ó&:¸QÔ&>ÜÐHÓIÐIØ×.Ñ.¨rÕ2°QÕ6ˆØ$Ñ7Ðä—h’hÐ/°°Ð4Ð7GÈÕ7KÕKÓLÈQÕOÐRSÕSˆØ×Ñ˜QÕ 1Ô$Ð)9×)=Ñ)=Ó)?À1Ô)DàˆIÜ�XŠXÐ&Ó'¨Õ*¨2Õ.°Õ2¸+ÔEäŸ)š) K´·²Ð:JÓ1KÈAÕ1NÈrÕ1RÐUVÕ1VÓWˆKä—X’XÐ.Ó/°Õ2°1Õ5ˆ
ØÐØÐÜ(ˆMØ%°Ð?ˆMÜ�=Ó! AÕ%Ø+8¸Õ+;×+@Ñ+@Ó+BÀ_Õ+TÐ(Ø)6°rÕ):×)?Ñ)?Ó)AÀOÕ)SÐ&à+Ô?à'1°Q¡÷ (ð (Ø!¨q¥.Õ1°_ÑD×uÐuÈÐ`aÕSaÕIbÐfuÑIuô<Ð$÷ (Ø)Õ9Ñ)à)Õ>Ð)à$:Ð!ð !%× :Ñ :¸=Ó I�Ø—|‘| MÓ2�Ø×1Ñ1°$Ó7�Ø—‘à Ø#Ø4ÕEÐHYÕHjÕjØ2ÕCÐFWÕFhÕhð&ðôð '‹Jñ? )ðB ˆrõ   c                óz   € T P                  \        R4       Uu. uF  pRW!,          ,          NK  	  up4      # u upi )zÝ
Compute the timestamp token ids for a given precision and save to least-recently used (LRU) cache.

Args:
    time_precision (`float`, *optional*, defaults to 0.02):
        The time ratio to convert from token to time.
z<|%.2f|>iÝ  )Úconvert_tokens_to_idsÚrange)r  r3  r:  s   && rò   Útimestamp_idsÚWhisperTokenizer.timestamp_idsŒ  s<   € ð ×)Ñ)ÔX]Ð^fÔXgÓ*hÑXgÐST¨J¸!Õ:L×,MÐ,MÑXgÑ*hÓiÐiùÒ*hs   ™8c                ó    <€ V ^8„  d   QhRS[ /# )rë   r)  )Úbool)rð   rñ   s   "€rò   ró   rô   ™  s   ø€ ÷ ñ ÁDñ rõ   c                ó~   € V'       d5   V P                  R4      pV P                  R4      pV P                  WV4      pV# )aÔ  
Pre-process the token ids for decoding by removing the prompt tokens ids and timestamp token ids.

Args:
    token_ids (`Union[int, list[int], np.ndarray, torch.Tensor]`):
        List of tokenized input ids. Typically, obtained using the `__call__` method of the tokenizer.
    skip_special_tokens (`bool`, *optional*, defaults to `False`):
        Whether or not to remove special tokens from the token ids. If `True`, the prompt token ids will be
        removed.
ú<|startofprev|>ú<|startoftranscript|>)rb  Ú_strip_prompt)r  r2  r)  Úprompt_token_idÚdecoder_start_token_ids   &&&  rò   rS  Ú&WhisperTokenizer._preprocess_token_ids™  sC   € ÷ Ø"×8Ñ8Ð9JÓKˆOØ%)×%?Ñ%?Ð@WÓ%XÐ"Ø×*Ñ*¨9ÐG]Ó^ˆIàÐrõ   c                óF   € \         P                  ! V P                  R V4      # )rû   )r  Úsubr  )r  rG  s   &&rò   rU  Ú&WhisperTokenizer._filter_timestamp_ids¬  s   € Ü�vŠv�d×(Ñ(¨"¨dÓ3Ð3rõ   c                ó^   <€ V ^8„  d   QhRS[ RS[ R,          RS[ RS[RS[ RS[ RS[ R	S[ R
S[/	# )rë   r)  Úclean_up_tokenization_spacesNÚoutput_offsetsr3  Údecode_with_timestampsÚ	normalizeÚbasic_normalizeÚremove_diacriticsr$  )rg  r.  rí   )rð   rñ   s   "€rò   ró   rô   °  sv   ø€ ÷ Yñ Yñ "ðYñ '+¨T¥kð	Yñ
 ðYñ ðYñ !%ðYñ ðYñ ðYñ  ðYñ 
ñYrõ   c
                ó:  <€ V P                  VVR7      p\        SV `  ! V3RVRVRVRVRV	/V
B pV'       ds   \        V\        4      '       dI   V'       dA   \        V^ ,          \        4      '       d$   V Uu. uF  pV P                  WÕVR7      NK  	  ppM[V P                  WµVR7      pMG\        V\        4      '       d!   V Uu. uF  qàP                  V4      NK  	  ppMV P                  V4      pV'       d   V P                  WR7      pR	VR
V/# V# u upi u upi )aâ  
Converts a sequence of ids in a string, using the tokenizer and vocabulary with options to remove special
tokens and clean up tokenization spaces.

Similar to doing `self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids))`.

Args:
    token_ids (`Union[int, list[int], np.ndarray, torch.Tensor]`):
        List of tokenized input ids. Can be obtained using the `__call__` method.
    skip_special_tokens (`bool`, *optional*, defaults to `False`):
        Whether or not to remove special tokens in the decoding. Will remove the previous tokens (pre-prompt)
        if present.
    clean_up_tokenization_spaces (`bool`, *optional*):
        Whether or not to clean up the tokenization spaces. If `None`, will default to
        `self.clean_up_tokenization_spaces` (available in the `tokenizer_config`).
    output_offsets (`bool`, *optional*, defaults to `False`):
        Whether or not to output the offsets of the tokens. This should only be set if the model predicted
        timestamps. If there are previous tokens (pre-prompt) to decode, they will only appear in the decoded
        text if they contain timestamp tokens.
    time_precision (`float`, *optional*, defaults to 0.02):
        The time ratio to convert from token to time.
    decode_with_timestamps (`bool`, *optional*, defaults to `False`):
        Whether or not to decode with timestamps included in the raw text.
    normalize (`bool`, *optional*, defaults to `False`):
        Whether or not to apply the English text normalizer to the decoded text. Only applicable when the
        target text is in English. Otherwise, the basic text normalizer should be applied.
    basic_normalize (`bool`, *optional*, defaults to `False`):
        Whether or not to apply the Basic text normalizer to the decoded text. Applicable to multilingual
        target text.
    remove_diacritics (`bool`, *optional*, defaults to `False`):
        Whether or not to remove diacritics when applying the Basic text normalizer. Removing diacritics may
        destroy information in the decoded text, hence it should be used with caution.
    kwargs (additional keyword arguments, *optional*):
        Will be passed to the underlying model specific decode method.
Returns:
    `str`: The decoded sentence.
r(  r)  rs  rv  rw  rx  )r3  r)  )r3  rG  rV  )rS  r  r0  r  Úlistr@  rU  r_  )r  r2  r)  rs  rt  r3  ru  rv  rw  rx  r  Úfiltered_idsrG  ÚseqÚtrV  r   s   &&&&&&&&&&,     €rò   r0  ÚWhisperTokenizer.decode°  se  ø€ ðd ×1Ñ1ØØ 3ð 2ó 
ˆô
 ‰wŠ~Øñ
à 3ð
ð *Fð
ð  ð	
ð
 ,ð
ð 0ð
ð ñ
ˆ÷ "ä˜,¬×-Ò-·,Ä:ÈlÐ[\ÍoÔ_c×CdÒCdñ  ,ó	ñ  ,˜ð ×0Ñ0ØÐPcð 1ö ñ  ,ð	 ð �ð ×3Ñ3Ø ÐUhð 4ó ‘ô
 ˜$¤×%Ò%Ù?CÓD¹t¸!×2Ñ2°1Ö5¹t�ÐD�à×1Ñ1°$Ó7�÷ Ø×+Ñ+¨IÐ+ÓUˆGØ˜D )¨WÐ5Ð5Øˆùò+ùò Es   Á7DÃDrv  rw  rx  c                ó2   <€ V ^8„  d   QhRS[ RS[ RS[ RS[/# )rë   rv  rw  rx  r$  )rg  rí   )rð   rñ   s   "€rò   ró   rô     s-   ø€ ÷ ñ Ù $ðÙ?CðÙ`dðá	ñrõ   c               ó–   <€ \         SV `  ! V/ VB pV'       d   V P                  V4      pV# V'       d   V P                  WcR 7      pV# V# )©rx  )r  rT  rv  rw  )	r  rv  rw  rx  Úargsr  rG  Ú
clean_textr   s	   &$$$*,  €rò   rT  ÚWhisperTokenizer._decode  sP   ø€ ô ‰wŠ Ð/¨Ñ/ˆçØŸ™¨Ó-ˆJØÐßØ×-Ñ-¨dÐ-ÓXˆJØÐàˆKrõ   c                ó<   € \        V P                  4      pV! V4      # )zz
Normalize a given string using the `EnglishTextNormalizer` class, which performs commons transformation on
english text.
)r   r  )r  rG  Ú
normalizers   && rò   rv  ÚWhisperTokenizer.normalize  s   € ô
 +¨4×+KÑ+KÓLˆ
Ù˜$ÓÐrõ   c                ó*   € \        VR7      pV! V 4      # )z}
Normalize a given string using the `BasicTextNormalizer` class, which performs commons transformation on
multilingual text.
r�  )r   )rG  rx  r†  s   && rò   rw  Ú WhisperTokenizer.basic_normalize!  s   € ô )Ð;LÔMˆ
Ù˜$ÓÐrõ   c                óJ   <€ V ^8„  d   QhRS[ RS[ R,          RS[S[ ,          /# )rë   Úsave_directoryÚfilename_prefixNr$  )rí   Útuple)rð   rñ   s   "€rò   ró   rô   *  s-   ø€ ÷ 9ñ 9©cð 9ÁCÈ$ÅJð 9ÑZ_Ñ`cÕZdñ 9rõ   c                ó¬  € \         P                  P                  V4      '       g   \        P	                  R V R24       R# \         P                  P                  Y'       d
   VR,           MR\        R,          ,           4      p\         P                  P                  Y'       d
   VR,           MR\        R,          ,           4      p\         P                  P                  Y'       d
   VR,           MR\        R,          ,           4      p\        VRR	R
7      ;_uu_ 4       pVP                  \        P                  ! V P                  ^RRR7      R,           4       RRR4       \        VRR	R
7      ;_uu_ 4       pVP                  R4       VP                  R V P                   4       4       RRR4       V P                  eZ   \        VRR	R
7      ;_uu_ 4       pVP                  \        P                  ! V P                  ^RRR7      R,           4       RRR4       W4V3#   + '       g   i     LÍ; i  + '       g   i     LŽ; i  + '       g   i     L:; i)zVocabulary path (z) should be a directoryNÚ-rû   r   r   r   Úwr  r	  TF)ÚindentÚ	sort_keysÚensure_asciiÚ
z#version: 0.2
c              3   óR   "  € T F  pR P                  V4      R,           x € K  	  R# 5i)Ú r”  N)r1  )Ú.0Ú
merge_pairs   & rò   Ú	<genexpr>Ú3WhisperTokenizer.save_vocabulary.<locals>.<genexpr>>  s!   é € ÐYÉL¸j˜cŸh™h zÓ2°T×9Ò9ËLùs   ‚%')ÚosÚpathÚisdirÚloggerÚerrorr1  ÚVOCAB_FILES_NAMESr  Úwriter  Údumpsr  Ú
writelinesr  r  )r  r‹  rŒ  r   Ú
merge_filer   ÚfÚwriters   &&&     rò   Úsave_vocabularyÚ WhisperTokenizer.save_vocabulary*  s«  € Ü�w‰w�}‰}˜^×,Ò,Ü�L‰LÐ,¨^Ð,<Ð<SÐTÔUÙä—W‘W—\‘\Ø¶o˜_¨sÖ2È2ÔQbÐcoÕQpÕpó
ˆ
ô —W‘W—\‘\Ø¶o˜_¨sÖ2È2ÔQbÐcpÕQqÕqó
ˆ
ô Ÿ'™'Ÿ,™,Ø¶o˜_¨sÖ2È2ÔQbÐctÕQuÕuó
ˆô �*˜c¨G×4Õ4¸Ø�G‰G”D—J’J˜tŸ{™{°1ÀÐSXÔYÐ\`Õ`Ôa÷ 5ô �*˜c¨G×4Õ4¸Ø�L‰LÐ*Ô+Ø×ÑÑYÈDÏLÊLÓYÔY÷ 5ð ×+Ñ+Ò7Ü�o s°W×=Õ=ÀØ—‘Ü—J’J˜t×?Ñ?ÈÐUYÐhmÔnÐquÕuô÷ >ð
 ¨Ð8Ð8÷ 5×4ú÷ 5×4ú÷
 >×=ús$   Ä;HÅ64H0Ç;IÈH-	È0I 	ÉI	c                óV   <€ V ^8„  d   QhRS[ R,          RS[ R,          RS[R,          /# )rë   r  Nr  r  )rí   rg  )rð   rñ   s   "€rò   ró   rô   H  s3   ø€ ÷ &
ñ &
Ù˜d�
ð&
Ù14°tµð&
ÙX\Ð_cÕXcñ&
rõ   c           	     óÌ  € Ve   TMV P                   V n         Ve   TMV P                  V n        Ve   TMV P                  V n        V P                  pV P	                  V4      pV P
                  pV P                  pRP                  V Uu. uF  qˆ R2NK	  	  up4      p	\        P                  ! V	 RV R2V	 RV R2Wg3.\        WT4      OR7      V P                  n        R# u upi )aF  
Override the prefix tokens appended to the start of the label sequence. This method can be used standalone to
update the prefix tokens as required when fine-tuning. Example:

```python
>>> # instantiate the tokenizer and set the prefix token to Spanish
>>> tokenizer = WhisperTokenizerFast.from_pretrained("openai/whisper-tiny", language="spanish")
>>> # now switch the prefix token from Spanish to French
>>> tokenizer.set_prefix_tokens(language="french")
```

Args:
    language (`str`, *optional*, defaults to `None`):
        The language of the transcription text.
    task (`str`, *optional*, defaults to `None`):
        Task identifier to append at the start of sequence (if any).
    predict_timestamps (`bool`, *optional*, defaults to `None`):
        Whether to omit the `<|notimestamps|>` token at the start of the sequence.
Nr–  z:0z $A:0 z $A:0 $B:1 z:1)ÚsingleÚpairÚspecial_tokens)r  r  r  Úprefix_tokensÚconvert_ids_to_tokensr  Úeos_token_idr1  r   ÚTemplateProcessingÚzipÚbackend_tokenizerÚpost_processor)
r  r  r  r  Úprefix_token_idsÚprefixesÚeosr°  r;  Úprefix_templates
   &&&&      rò   r  Ú"WhisperTokenizer.set_prefix_tokensH  sê   € ð, %-Ò$8™¸d¿m¹mˆŒØ Ò,‘D°$·)±)ˆŒ	Ø8JÒ8VÑ"4Ð\`×\sÑ\sˆÔà×-Ñ-ÐØ×-Ñ-Ð.>Ó?ˆØ�n‰nˆØ×(Ñ(ˆØŸ(™(¹hÓ#G¹h°U g¨R£L¹hÑ#GÓHˆÜ0:×0MÒ0MØ%Ð& f¨S¨E°Ð4Ø#Ð$ K°¨u°BÐ7àÐ#ðä�XÓ0ðô1
ˆ×ÑÖ-ùò $Hs   Â
C!c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r#  ©rz  rï   )rð   rñ   s   "€rò   ró   rô   r  s   ø€ ÷ ñ ™t¡C�yñ rõ   c           	     óp  € V P                  R 4      pV P                  R4      pV P                  R4      pV P                  R4      p\        \        P                  4       4      pV P                  eñ   V P                  P                  4       V n        V P                  \        9   d   \        V P                  ,          pM¤V P                  \        P                  4       9   d   V P                  pMt\        V P                  4      ^8H  p\        RV P                   RV'       d   \        \        P                  4       4      M\        \        P                  4       4       R24      hV P                  e5   V P                  \        9  d    \        RV P                   R\         24      hV.pV P                  e/   VP                  V^,           VP                  X4      ,           4       V P                  e%   TP                  V P                  R	8X  d   TMT4       V P                  '       g   VP                  V4       V# )
rj  z<|translate|>z<|transcribe|>ú<|notimestamps|>zUnsupported language: z. Language should be one of: Ú.zUnsupported task: z. Task should be in: rå   )rb  r�  Ú	LANGUAGESÚkeysr  ÚlowerÚTO_LANGUAGE_CODEÚvaluesrN  rO  rz  r  ÚTASK_IDSr/  Úindexr  )	r  Úbos_token_idÚtranslate_token_idÚtranscribe_token_idÚnotimestamps_token_idÚlangsÚlanguage_idÚis_language_codeÚbos_sequences	   &        rò   r®  ÚWhisperTokenizer.prefix_tokensp  sÈ  € ð ×1Ñ1Ð2IÓJˆØ!×7Ñ7¸ÓHÐØ"×8Ñ8Ð9IÓJÐØ $× :Ñ :Ð;MÓ NÐÜ”i—n‘nÓ&Ó'ˆà�=‰=Ò$Ø ŸM™M×/Ñ/Ó1ˆDŒMØ�}‰}Ô 0Ô0Ü.¨t¯}©}Õ=‘Ø—‘Ô"2×"9Ñ"9Ó";Ô;Ø"Ÿm™m‘ä#& t§}¡}Ó#5¸Ñ#:Ð Ü Ø,¨T¯]©]¨Oð <ß;KœÔ-×4Ñ4Ó6Ô7ÔQUÔVf×VkÑVkÓVmÓQnÐoÐopðróð ð
 �9‰9Ò Ø�y‰y¤Ô(Ü Ð#5°d·i±i°[Ð@UÔV^ÐU_Ð!`ÓaÐaà$�~ˆØ�=‰=Ò$Ø×Ñ ¨qÕ 0°5·;±;¸{Ó3KÕ KÔLØ�9‰9Ò Ø×Ñ°t·y±yÀLÔ7PÑ 3ÐVhÔiØ×&×&Ð&Ø×ÑÐ 5Ô6ØÐrõ   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r#  r»  )rð   rñ   s   "€rò   ró   rô   ”  s   ø€ ÷ Tñ TÑQUÑVYÕQZñ Trõ   c                ó¬   € Vf&   V P                   V,           V P                  .,           # V P                   V,           V,           V P                  .,           # )z=Build model inputs from a sequence by appending eos_token_id.)r®  r°  )r  Útoken_ids_0Útoken_ids_1s   &&&rò   Ú build_inputs_with_special_tokensÚ1WhisperTokenizer.build_inputs_with_special_tokens”  sK   € àÒØ×%Ñ%¨Õ3°t×7HÑ7HÐ6IÕIÐIà×!Ñ! KÕ/°+Õ=À×ARÑARÐ@SÕSÐSrõ   c          	      óp   <€ V ^8„  d   QhRS[ S[,          RS[ S[,          R,          RS[RS[ S[,          /# )rë   rÑ  rÒ  NÚalready_has_special_tokensr$  )rz  rï   rg  )rð   rñ   s   "€rò   ró   rô   œ  sD   ø€ ÷ _ñ _Ù¡�9ð_Ù37¹µ9¸tÕ3Cð_Ùhlð_á	‰c�ñ_rõ   c                ó2  <€ V'       d   \         SV `  WRR7      # ^.\        V P                  4      ,          p^.pVf"   V^ .\        V4      ,          ,           V,           # V^ .\        V4      ,          ,           ^ .\        V4      ,          ,           V,           # )ad  
Retrieve sequence ids from a token list that has no special tokens added. This method is called when adding
special tokens using the tokenizer `prepare_for_model` method.

Args:
    token_ids_0 (`list[int]`):
        List of IDs.
    token_ids_1 (`list[int]`, *optional*):
        Optional second list of IDs for sequence pairs.
    already_has_special_tokens (`bool`, *optional*, defaults to `False`):
        Whether or not the token list is already formatted with special tokens for the model.

Returns:
    `list[int]`: A list of integers in the range [0, 1]: 1 for a special token, 0 for a sequence token.
T)rÑ  rÒ  rÖ  )r  Úget_special_tokens_maskrN  r®  )r  rÑ  rÒ  rÖ  Úprefix_onesÚsuffix_onesr   s   &&&&  €rò   rØ  Ú(WhisperTokenizer.get_special_tokens_maskœ  s•   ø€ ÷& &Ü‘7Ñ2Ø'Ð]að 3ó ð ð �cœC × 2Ñ 2Ó3Õ3ˆØ�cˆØÒØ 1 #¬¨KÓ(8Õ"8Õ9¸KÕGÐGØ˜q˜c¤C¨Ó$4Õ4Õ5¸!¸¼sÀ;Ó?OÕ9OÕPÐS^Õ^Ð^rõ   c                ó¶   € V P                  WV'       * R 7       V P                  R,          p\        V4       UUu. uF  w  rVV^,           V3NK  	  pppV# u uppi ))r  r  r  rE  )r  r®  r-  )r  r  r  Úno_timestampsÚforced_tokensÚrankr;  Úforced_decoder_idss   &&&&    rò   Úget_decoder_prompt_idsÚ'WhisperTokenizer.get_decoder_prompt_ids»  s^   € Ø×Ñ DÐTaÔPaÐÔbð
 ×*Ñ*¨2Õ.ˆÜCLÈ]ÔC[Ô\ÑC[±K°D˜t a�x¨Ó/ÑC[ÐÑ\Ø!Ð!ùó ]s   ºAc               ó"   € \        V VVVVR 7      # ))Úreturn_timestampsÚreturn_languager3  )Ú_decode_asr)r  Úmodel_outputsrä  rå  r3  s   &&$$$rò   ræ  ÚWhisperTokenizer._decode_asrÅ  s   € ÜØØØ/Ø+Ø)ô
ð 	
rõ   c                ó    <€ V ^8„  d   QhRS[ /# )rë   rG  r%  )rð   rñ   s   "€rò   ró   rô   Ï  s   ø€ ÷ +ñ +¡3ñ +rõ   c                ó  a € S ! RRVP                  4       ,           RR7      pVR,          R,          p\        V 3R lV 4       R4      pVe!   S P                  V4      p\        R	V R
24      hVP	                  VR7       VR,          # )z`Converts prompt text to IDs that can be passed to [`~WhisperForConditionalGeneration.generate`].ri  r–  F)Úadd_special_tokensrè   rE  c              3   óZ   <"  € T F   qSP                   ^ ,          8¼  g   K  Vx € K"  	  R# 5i©é    N)r,  )r—  Úxr  s   & €rò   r™  Ú2WhisperTokenizer.get_prompt_ids.<locals>.<genexpr>Õ  s$   øé € Ð \©O qÀD×DXÑDXÐYZÕD[Ñ?[§¢«Oùs   ƒ+¡
+NzJEncountered text in the prompt corresponding to disallowed special token: r¾  )Útensor_type)ÚstripÚnextr¯  rO  Úconvert_to_tensors)r  rG  Úreturn_tensorsÚbatch_encodingÚprompt_text_idsÚspecial_token_idr;  s   f&&    rò   Úget_prompt_idsÚWhisperTokenizer.get_prompt_idsÏ  sŽ   ø€ áÐ/°°t·z±z³|Õ1CÐX]Ô^ˆð )¨Õ5°bÕ9ˆÜÔ \©OÓ \Ð^bÓcÐØÒ'Ø×.Ñ.Ð/?Ó@ˆEÜÐiÐjoÐipÐpqÐrÓsÐsà×)Ñ)°nÐ)ÔEØ˜kÕ*Ð*rõ   c                ó<   <€ V ^8„  d   QhRS[ S[,          RS[RS[/# )rë   r2  rl  rm  r»  )rð   rñ   s   "€rò   ró   rô   Þ  s'   ø€ ÷ ñ ¡t©C¥yð Á3ð Ñ`cñ rõ   c                óÆ   € \        V\        4      '       g   V P                  V4      pV'       g   V# V^ ,          V8H  pV'       d   W19   d   WP                  V4      R # . # V# rí  )r  rz  Ú_convert_to_listrÅ  )r  r2  rl  rm  Ú
has_prompts   &&&& rò   rk  ÚWhisperTokenizer._strip_promptÞ  sb   € Ü˜)¤T×*Ò*Ø×-Ñ-¨iÓ8ˆI÷ ØÐà˜q•\ _Ñ4ˆ
ßØ%Ô2Ø §¡Ð1GÓ!HÐ!JÐKÐKà�	àÐrõ   c                óÆ   € \        V R 4      '       d   V P                  4       P                  4       p \        V \        P
                  4      '       d   V P                  4       p V # )Únumpy)rI  rD  r  r  rK  ÚndarrayÚtolist)r2  s   &rò   rý  Ú!WhisperTokenizer._convert_to_listð  sJ   € ô �9˜g×&Ò&Ø!Ÿ™›×-Ñ-Ó/ˆIä�i¤§¡×,Ò,Ø!×(Ñ(Ó*ˆIØÐrõ   )r  r  r  r  r  r  r  r  )
NNNú<|endoftext|>r  r  FNNF)Fç{®Gáz”?éÜ  )r  r  )r  )F)FNFr  FFFF©N)NNN)NF)NNT)rK  )$Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úvocab_files_namesÚmodel_input_namesr   Úmodelr  r@  r_  r   rd  rS  rU  r0  rT  rv  Ústaticmethodrw  r§  r  Úpropertyr®  rÓ  rØ  rá  ræ  rù  rk  rý  Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   rñ   s   @@rò   rç   rç   £   s)  ù‡ € ñ$ðL *ÐØ$Ð&6Ð7ÐØ€E÷F!õ F!÷R.(õ .(ôbBðH ójó ðj÷ò ò&4÷Yõ YðvØ',ðØFKðØgl÷õ ò ð ó ó ð ÷9ò 9÷<&
ò &
ðP ÷ó ð÷DTò T÷_õ _ô>"ò
÷+ò +÷ð ð$ ñó ÷ð rõ   rç   c                ól   € V ^8„  d   QhR\         \        ,          R\        R,          R\        R\        /# ©rë   Útokensr  NÚprepend_punctuationsÚappend_punctuations©rz  rï   rí   )rð   s   "rò   ró   ró   ü  ó:   € ÷ -ñ -ä”�Ið-ô �D�jð-ô ð	-ô
 ñ-rõ   c                ó˜   € Vf   V P                   pVf   RpVR9   d   \        W4      w  rVpM\        W4      w  rVp\        WVWsV4       WVV3# ©z�
Groups tokens by word. Returns a tuple containing a list of strings with the words, and a list of `token_id`
sequences with the tokens making up each word.
r   >   r¬   rN   r   r¿   r    r×   ©r  Ú_split_tokens_on_unicodeÚ_split_tokens_on_spacesÚ_merge_punctuations©Ú	tokenizerr  r  r  r  ÚwordsÚword_tokensÚtoken_indicess   &&&&&   rò   Ú_combine_tokens_into_wordsr(  ü  ó_   € ð ÒØ×%Ñ%ˆØÒØˆàÐQÔQä,DÀYÓ,WÑ)ˆ™Mä,CÀIÓ,VÑ)ˆ˜Mä˜¨MÐQdÔeØ˜}Ð,Ð,rõ   c           
      óœ  aaaaaa€ V ^ ,          p\        V4      p. pS'       d   S^ ,          o. p\        V R,          4       EFÈ  w  opRpW3^ ^ 3p\        V4      p	\        ^W9,           4       EF  p
V
R,          p\        ^ W:,
          4      o\	        W3V	,           V
,
          4      p\
        P                  ! VSV 4      p\        ^ W£,
          4      o\	        Wš4      p\
        P                  ! VSV 4      o\        V4      \        S4      8w  d   \        R4      hS'       d%   \        VVVVVV3R l\        V4       4       4      pM\
        P                  ! VS8H  4      pWú,          V,           pV^8”  g   EK	  VV8”  g   EK  TpSVSV3pEK  	  Vw  opopVS,           ^,          pVS,           ^,          pVP                  VRV 4       VVR p\        V4      pS'       g   EK¡  XP                  SRV 4       SS^,           ,          VR oEKË  	  VP                  V4       Sf   V# \        S4      ^ 8”  d   XP                  S4       WE3# V. 3# )rî  rE  r'  ç     ˆÃ@úiThere is a bug within whisper `decode_asr` function, please report it. Dropping to prevent bad inference.c              3   ó²   <"  € T FL  w  rVSV,          8X  g   K  SSV,           ,          SS^,           ,          SV,           ,          8:  g   KH  ^x € KN  	  R# 5i©rF  Nr  ©	r—  ÚidxÚelemÚ
left_startÚleft_token_timestamp_sequenceÚrightÚright_startÚseq_idxÚtoken_timestamp_sequencess	   &  €€€€€€rò   r™  Ú0_find_longest_common_sequence.<locals>.<genexpr>_  óY   øé € ð á%4™	˜à  c¥
Ñ*ô ð :¸*ÀsÕ:JÕKØ4°W¸qµ[ÕAÀ+ÐPSÕBSÕTñU÷	 ’AÛ%4ùó   ƒAš.AÁ
AN©
rN  r-  rc  ÚmaxÚminrK  rL  ÚRuntimeErrorrQ  Úextend©Ú	sequencesr7  Úleft_sequenceÚleft_lengthÚtotal_sequenceÚtotal_token_timestamp_sequenceÚright_sequenceÚmax_Úmax_indicesÚright_lengthr:  ÚepsÚ	left_stopÚleftÚ
right_stopÚmatchesÚmatchingÚleft_midÚ	right_midr2  r3  r4  r5  r6  s   &f                 @@@@@rò   Ú_find_longest_common_sequencerR    óV  ý€ ð ˜a•L€MÜ�mÓ$€KØ€Nç Ø(AÀ!Õ(DÐ%Ø)+Ð&ä#,¨Y°r­]×#;Ñˆ�àˆØ"°°AÐ6ˆô< ˜>Ó*ˆÜ�q˜+Õ4×5ˆAà�g•+ˆCô
 ˜Q ¥Ó0ˆJÜ˜K°|Õ)CÀaÕ)GÓHˆIÜ—8’8˜M¨*°YÐ?Ó@ˆDä˜a ¥Ó1ˆKÜ˜\Ó-ˆJÜ—H’H˜^¨K¸
ÐCÓDˆEô �4‹yœC ›JÔ&Ü"Øóð ÷ )ô ÷ ñ ä%.¨t¤_óó ‘ô Ÿ&š& ¨¡Ó/�à•{ SÕ(ˆHØ˜�{˜x¨$ŸØ�Ø)¨9°kÀ:ÐN“ñQ 6ðT <GÑ8ˆ�Y ¨Zð  
Õ*¨qÕ0ˆØ +Õ-°!Õ3ˆ	Ø×Ñ˜m¨I¨XÐ6Ô7Ø& y zÐ2ˆÜ˜-Ó(ˆç$Ò$Ø*×1Ñ1Ð2OÐPYÐQYÐ2ZÔ[Ø,EÀgÐPQÅkÕ,RÐS\ÐS]Ð,^Ó)ñw $<ðz ×Ñ˜-Ô(à Ò(ØÐä
Ð$Ó%¨Ô)Ø&×-Ñ-Ð.KÔLØÐ=Ð=à˜rÐ!Ð!rõ   r4  r  c          	     óN  a/€ Ro/V/3R lp. pV! 4       pRp	V P                  R4      ^,           p
. p. pRpRp\        V P                  4      pV P                  R4      pV P                  R4      p\        V4       EF|  w  ppVR,          ^ ,          P	                  4       pV P                  VVV4      pVR	8X  d   VR
,          ^ ,          P	                  4       pRpT
pRpRpRpRV9   dx   VR,          w  pppV	V,          p	VV,
          pV'       d   VV,          V
,           pV'       d9   \        V4       F)  pVV
8¼  g   K  Ve   VV
,
          V,          V8  d    MTpK+  	  . p. p \        V4       EFé  w  p!pVV9   d¡   V P                  V.4      p"V"^R p"\        P                  V"4      p#V#eo   S/'       d^   V#S/8w  dW   V'       gO   VP                  V4       \        V4      p$V P                  V$4      p%V%VR&   VP                  V4       . p. pV! 4       pV#VR&   V#o/K¬  K®  VV
8¼  Ed°   \        VV
,
          V,          4      p&V&V8  dd   V!^8¬  ;'       d4    VV!^,
          ,          V
8¬  ;'       d    VV!^,
          ,          V
8¬  '       * p'V''       d   VWE,          ,          pMTpVV,          pTpT&pVV
,
          V,          V	,           V,           p(\        V(^4      p(V'       d   VV8¼  d   RpEK{  V'       g   V'       d   VV8  d   RpEK—  VR,          ^ ,          f   V(VR,          ^ &   EK¸  V(VR,          ^ ,          8X  d   EKÐ  V(VR,          ^&   VP                  V4       VR	8X  d   VP                  V 4       \        W¼4      w  p$p)V P                  V$4      p%V%VR&   VR	8X  d   \        V V$V)S/V4      VR&   VP                  V4       . p. p. p. p V! 4       pEKe  VP                  V4       VR	8X  g   EK€  V!^ 8X  d   \        RV	,           ^4      p*M!\        XV!^,
          ,          V	,           ^4      p*\        XV!,          V	,           ^4      p+V P                  V*V+34       EKì  	  RV9   d   V	XX,
          ,          p	V'       d0   VP                  V4       VR	8X  d   VP                  V 4       EK-  EK0  \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   EKm  V! 4       p. p. p. p. p EK  	  V'       dl   V'       d   \         P#                  R4       \        W¼4      w  p$p)V P                  V$4      p%V%VR&   VR	8X  d   \        V V$V)S/V4      VR&   VP                  V4       RP%                  R V 4       4      p,V'       g	   V'       d�   V FM  pV'       g   VP'                  R4       M\)        VR,          4      VR&   V'       d   K<  VP'                  R4       KO  	  VR	8X  d,   . p-V F  pV-P+                  VR,          4       K  	  RV-/p.V,V.3# RV/p. V,V.3# / p.V,V.3# )z¬
Internal method meant to only be used by asr pipeline. Handles all the little quirks specific to whisper to handle
the various options not allowed in other seq2seq models
Nc                  ó   <€ R S RRR.RR/# )r  r<  NrG  rû   r  )Úlast_languages   €rò   Ú	new_chunkÚ_decode_asr.<locals>.new_chunk¢  s   ø€ Ø˜M¨;¸¸t¸ÀfÈbÐQÐQrõ   r'  r½  Fri  rj  r  ÚwordÚtoken_timestampsÚstriderG  r  Tr<  r%  c              3   ó$   "  € T F  qx € K  	  R # 5ir  r  )r—  Úps   & rò   r™  Ú_decode_asr.<locals>.<genexpr>Z  s   é € Ð1¡˜A”a£ùs   ‚zµWhisper did not predict an ending timestamp, which can happen if audio is cut off in the middle of a word. Also make sure WhisperTimeStampLogitsProcessor was used during generation.rû   c              3   ó2   "  € T F  qR ,          x € K  	  R# 5i)rG  Nr  )r—  Úchunks   & rò   r™  r^  t  s   é € Ð:±6¨%˜fŸš³6ùs   ‚Úchunksr+  )rb  Úsetr,  r-  r  rk  Úreversedr0  r¿  Úgetr/  rR  r.  ÚroundÚ_collate_word_timestampsÚanyrž  Úwarningr1  Úpopr�  r?  )0r$  rç  rä  rå  r3  r4  rW  ra  r`  Útime_offsetr5  Úprevious_tokensÚprevious_token_timestampsÚskipÚright_stride_startr,  rl  rm  Úchunk_idÚoutputr2  rZ  Úlast_timestampÚfirst_timestampr7  r8  r9  Ú	chunk_lenÚstride_leftÚstride_rightr;  Úcurrent_tokensÚcurrent_token_timestampsr:  rG  r  Úresolved_tokensÚresolved_textr<  r=  ÚtimeÚresolved_token_timestampsÚ
start_timeÚend_timeÚ	full_textÚ
new_chunksÚoptionalrV  s0   &&$$$$                                         @rò   ræ  ræ  Ž  sd  ø€ ð$ €MõRð €FÙ‹K€EØ€KØ×5Ñ5Ð6HÓIÈAÕM€OØ€OØ "ÐØ€DØÐä˜)×3Ñ3Ó4€OØ×5Ñ5Ð6GÓH€OØ&×<Ñ<Ð=TÓUÐä% m×4Ñˆ�&ð ˜8Õ$ QÕ'×.Ñ.Ó0ˆ	à×+Ñ+¨I°ÐH^Ó_ˆ	Ø Ô&Ø%Ð&8Õ9¸!Õ<×CÑCÓEÐð
 ˆØ)ˆð  ÐØÐØ #Ðà�vÔØ39¸(Õ3CÑ0ˆI�{ Là˜;Õ&ˆKØ!*¨\Õ!9Ð÷ Ø"-°Õ">ÀÕ"P�ßÜ% iÖ0�EØ Ö/ð +Ò6Ø!&¨Õ!8¸NÕ JÐM_Ô _á!Ø).šñ 1ð ˆØ#%Ð ô " )×,‰HˆAˆuð ˜Ô'à ×'Ñ'¨¨Ó0�à˜A˜b�z�Ü$Ÿ=™=¨Ó.�ØÒ'÷ %¨°]Ô)B×K\Ø'×.Ñ.¨~Ô>Ü*GÈÓ*X˜Ø(1×(8Ñ(8¸Ó(I˜Ø(5˜˜f™ØŸ™ eÔ,ð +-˜Ø)+˜Ù )£˜Ø(0�E˜*Ñ%Ø$,’Mñ Ø˜/Õ)ô " 5¨?Õ#:¸nÕ"LÓM�	ØÐ0Ô0à-.°!©V÷ .ð .Ø! ! a¥%Õ(¨OÑ;×cÐcÀ	È!ÈaÍ%Õ@PÐTcÑ@cô9Ð*÷ .Ø)¨^Õ-JÕJÑ)à,AÐ)Ø)Ð-BÕBÐ)à(9Ð%Ø$-Ð!à Õ/°>ÕAÀKÕOÐRcÕc�ä˜T 1“~�ß! e¨~Ô&=ð  “DßŸo°%¸/Ô2IØ “DØ˜;Õ'¨Õ*Ò2Ø,0�E˜+Õ& qÔ)ð ˜u [Õ1°!Õ4Ô4ò à04˜˜kÕ*¨1Ñ-à'×.Ñ.¨~Ô>Ø,°Ô6Ø5×<Ñ<Ð=UÔVÜEbØ+óFÑB˜Ð)Bð )2×(8Ñ(8¸Ó(I˜Ø(5˜˜f™Ø,°Ô6Ü-EØ )¨?Ð<UÐWdÐfuó.˜E '™Nð Ÿ™ eÔ,ð +-˜Ø)+˜Ø46Ð1Ø35Ð0Ù )£›ð
 ×%Ñ% eÔ,Ø$¨×.Ø˜A”vÜ%*¨3°Õ+<¸aÓ%@™
ä%*Ð+;¸AÀ½EÕ+BÀ[Õ+PÐRSÓ%T˜
Ü$Ð%5°aÕ%8¸;Õ%FÈÓJ�HØ,×3Ñ3°ZÀÐ4J×KñY -ð\ �vÔØ˜9 |Õ3Õ3ˆK÷ Ø×"Ñ" >Ô2Ø  FÔ*Ø)×0Ñ0Ð1I×Jò +ç“#Ñ1¡Ó1—#—#’#Ñ1¡Ó1×1Õ1Ù“KˆEØ ˆOØˆNØ(*Ð%Ø')Ó$ñY 5÷\ ßÜ�N‰Nð]ôô
 6SØó6
Ñ2ˆÐ2ð "×(Ñ(¨Ó9ˆØ%ˆˆf‰Ø Ô&Ü5Ø˜?Ð,EÀ}ÐVeóˆE�'‰Nð 	�‰�eÔð —‘Ñ:±6Ó:Ó:€IßŸOÛˆEß$Ø—	‘	˜+Õ&ä%*¨5°Õ+=Ó%>��kÑ"ß"‘?Ø—	‘	˜*Ö%ñ ð  Ô&ØˆJÛ�Ø×!Ñ! %¨¥.Ö1ñ  à  *Ð-ˆHð
 �hÐÐð ! &Ð)‰Hð �hÐÐð ˆØ�hÐÐrõ   c           
      óœ  aaaaaa€ V ^ ,          p\        V4      p. pS'       d   S^ ,          o. p\        V R,          4       EFÈ  w  opRpW3^ ^ 3p\        V4      p	\        ^W9,           4       EF  p
V
R,          p\        ^ W:,
          4      o\	        W3V	,           V
,
          4      p\
        P                  ! VSV 4      p\        ^ W£,
          4      o\	        Wš4      p\
        P                  ! VSV 4      o\        V4      \        S4      8w  d   \        R4      hS'       d%   \        VVVVVV3R l\        V4       4       4      pM\
        P                  ! VS8H  4      pWú,          V,           pV^8”  g   EK	  VV8”  g   EK  TpSVSV3pEK  	  Vw  opopVS,           ^,          pVS,           ^,          pVP                  VRV 4       VVR p\        V4      pS'       g   EK¡  XP                  SRV 4       SS^,           ,          VR oEKË  	  VP                  V4       Sf   V# \        S4      ^ 8”  d   XP                  S4       WE3# V. 3# )rî  rE  r'  r+  r,  c              3   ó²   <"  € T FL  w  rVSV,          8X  g   K  SSV,           ,          SS^,           ,          SV,           ,          8:  g   KH  ^x € KN  	  R# 5ir.  r  r/  s	   &  €€€€€€rò   r™  r8  Ó  r9  r:  Nr;  r@  s   &f                 @@@@@rò   rR  rR  Š  rS  rõ   c                 óè   € \        WV4      w  rVpV'       d   R V/M/ p\        WW4       U	U
u. uF7  w  ršRV	RW*^ ,          ,          ^ ,          W*R,          ,          ^,          3/VCNK9  	  pp	p
V# u up
p	i )r  rG  r<  r*  )r(  r²  )r$  r  rZ  r  rå  r%  Ú_r'  Úoptional_language_fieldrY  ÚindicesÚtimingss   &&&&&       rò   rf  rf    s’   € Ü8¸ÈHÓUÑ€Eˆmç8G˜z¨8Ñ4ÈRÐô ! Ô6ôñ 7‰MˆDð	 �DØÐ*°1­:Õ6°qÕ9Ð;KÐTVÍKÕ;XÐYZÕ;[Ð\ð	
ð &ó	
ñ
 7ð ñ ð €Nùós   ¬=A.c                ól   € V ^8„  d   QhR\         \        ,          R\        R,          R\        R\        /# r  r  )rð   s   "rò   ró   ró     r  rõ   c                ó˜   € Vf   V P                   pVf   RpVR9   d   \        W4      w  rVpM\        W4      w  rVp\        WVWsV4       WVV3# r  r  r#  s   &&&&&   rò   r(  r(    r)  rõ   c                ó:   € V ^8„  d   QhR\         \        ,          /# ©rë   r  r»  )rð   s   "rò   ró   ró   ,  s   € ÷ -ñ -´´Sµ	ñ -rõ   c                ó  € V P                  VRR7      pRp. p. p. p. p. p^ p	\        V4       FÓ  w  r«VP                  V4       VP                  V
4       V P                  VRR7      pW<9  gK   WœP                  V4      ,           \	        V4      8¼  g&   W)VP                  V4      ,           ,          V8X  g   KŠ  VP                  V4       VP                  V4       VP                  V4       . p. pV	\	        V4      ,          p	KÕ  	  WEV3# )zlCombine tokens into words by splitting at any position where the tokens are decoded as valid unicode points.T)ru  u   ï¿½)r0  r-  r/  rÅ  rN  )r$  r  Údecoded_fullÚreplacement_charr%  r&  r'  rv  Úcurrent_indicesÚunicode_offsetÚ	token_idxr;  Údecodeds   &&           rò   r   r   ,  s  € à×#Ñ# FÀ4Ð#ÓH€LØÐà€EØ€KØ€MØ€NØ€OØ€Nä% fÖ-Ñˆ	Ø×Ñ˜eÔ$Ø×Ñ˜yÔ)Ø×"Ñ" >È$Ð"ÓOˆð Ô+Ø§¡Ð.>Ó ?Õ?Ä3À|ÓCTÔTØ¨W¯]©]Ð;KÓ-LÕLÕMÐQaÖaà�L‰L˜Ô!Ø×Ñ˜~Ô.Ø× Ñ  Ô1ØˆNØ ˆOØœc '›lÕ*ŠNñ .ð" ˜}Ð,Ð,rõ   c                ó:   € V ^8„  d   QhR\         \        ,          /# r‹  r»  )rð   s   "rò   ró   ró   L  s   € ÷ -ñ -¬t´C­yñ -rõ   c                ó  € \        W4      w  r#p. p. p. p\        W#V4       Fà  w  r‰p
V	^ ,          V P                  8¬  pVP                  R4      pVP	                  4       R9   pV'       g!   V'       g   V'       g   \        V4      ^ 8X  d6   VP                  V4       VP                  V	4       VP                  V
4       K�  VR,          V,           VR&   VR,          P                  V	4       VR,          P                  V
4       Kâ  	  WVV3# )zLCombine tokens into words by splitting at whitespace and punctuation tokens.r–  z !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~r*  )r   r²  r°  Ú
startswithrò  rN  r/  r?  )r$  r  ÚsubwordsÚsubword_tokens_listÚsubword_indices_listr%  r&  r'  ÚsubwordÚsubword_tokensÚsubword_indicesrú   Ú
with_spaceÚpunctuations   &&            rò   r!  r!  L  sí   € ä:RÐS\Ó:eÑ7€HÐ#7Ø€EØ€KØ€Mä47¸ÐWkÖ4lÑ0ˆ Ø  Õ# y×'=Ñ'=Ñ=ˆØ×'Ñ'¨Ó,ˆ
Ø—m‘m“oÐ)MÑMˆç—j§K´3°u³:À´?Ø�L‰L˜Ô!Ø×Ñ˜~Ô.Ø× Ñ  Ö1à˜b�	 GÕ+ˆE�"‰IØ˜�O×"Ñ" >Ô2Ø˜"Õ×$Ñ$ _Ö5ñ 5mð ˜}Ð,Ð,rõ   c                ó¨  € \        V 4      ^,
          p\        V 4      ^,
          pV^ 8¼  d˜   W,          P                  R4      '       dn   W,          P                  4       V9   dS   W,          W,          ,           W&   W,          W,          ,           W&   W%,          W&,          ,           W&&   RW&   . W&   . W%&   MTpV^,          pKž  ^ p^pV\        V 4      8  d“   W,          P                  R4      '       gi   W,          V9   d\   W;;,          W,          ,          uu&   W;;,          W,          ,          uu&   W%;;,          W&,          ,          uu&   RW&   . W&   . W&&   MTpV^,          pK¢  V  Uu. uF  qw'       g   K  VNK  	  upV R&   V Uu. uF  qˆ'       g   K  VNK  	  upVR&   V U	u. uF  q™'       g   K  V	NK  	  up	VR&   R# u upi u upi u up	i )z1Merges punctuation tokens with neighboring words.r–  rû   :NNNN)rN  r•  rò  Úendswith)
r%  r  r†  Ú	prependedÚappendedr:  ÚjrY  r;  r0  s
   &&&&&     rò   r"  r"  d  s|  € ô 	ˆE‹
�Q�€AÜˆE‹
�Q�€AØ
ˆqŒ&Ø�8×Ñ˜s×#Ò#¨­¯©Ó(8¸IÔ(EØ•x %¥(Õ*ˆE‰HØ�	 F¥IÕ-ˆF‰IØ � g¥jÕ0ˆG‰JØˆE‰HØˆF‰IØˆGŠJàˆAØ	ˆQ�Šð 	
€AØ	€AØ
Œc�%‹jŒ.Ø�x× Ñ  ×%Ò%¨%­(°hÔ*>Ø�H˜�Õ ‹HØ�I˜�Õ"‹IØ�J˜'�*Õ$‹JØˆE‰HØˆF‰IØˆGŠJàˆAØ	ˆQ�Šñ "'Ó/¡˜«$—�¡Ñ/€Eˆ!�HÙ$*Ó4¡F˜5«e—�¡FÑ4€Fˆ1�IÙ!(Ó0¡˜#«C—#�#¡Ñ0€GˆAƒJùò 0ùÚ4ùÚ0s$   Å-	GÅ;GÆ	G
ÆG
Æ)	GÆ7G)Nu   "'â€œÂ¡Â¿([{-u   "'.ã€‚,ï¼Œ!ï¼�?ï¼Ÿ:ï¼šâ€�)]}ã€�r  )(r  r  r›  r  Ú	functoolsr   r  rK  Ú
tokenizersr   r   r   r   r   Útokenizers.modelsr   Útokenization_utils_tokenizersr	   Úutilsr
   Úenglish_normalizerr   r   Ú
get_loggerr	  rž  r   r¿  ÚitemsrÂ  rÄ  rç   r(  rR  ræ  rf  r   r!  r"  Ú__all__)Úcoder  s   00rò   Ú<module>r­     sL  ðñ (ã Û 	Û 	Ý ã ß RÕ RÝ !å >Ý ß Jð 
×	Ò	˜HÓ	%€ð �,ØÐ&Ø�<ØÐ(ð	Ð ðeØˆ)ðeàˆ)ðeð 	ˆ(ðeð 	ˆ)ð	eð
 	ˆ)ðeð 	ˆ(ðeð 	ˆ(ðeð 	ˆ*ðeð 	ˆ,ðeð 	ˆ)ðeð 	ˆ(ðeð 	ˆ)ðeð 	ˆ'ðeð 	ˆ(ðeð 	ˆ)ðeð  	ˆ)ð!eð" 	ˆ,ñ#eð$ 	ˆ'ð%eð& 	ˆ)ð'eð( 	ˆ,ð)eð* 	ˆ(ð+eð, 	ˆ+ð-eð. 	ˆ'ð/eð0 	ˆ'ð1eð2 	ˆ'ð3eð4 	ˆ*ð5eð6 	ˆ(ð7eð8 	ˆ+ð9eð: 	ˆ'ð;eð< 	ˆ+ð=eð> 	ˆ&ð?eð@ 	ˆ&ðAeðB 	ˆ*ðCeðD 	ˆ+òEeðF 	ˆ,ðGeðH 	ˆ'ðIeðJ 	ˆ'ðKeðL 	ˆ+ðMeðN 	ˆ'ðOeðP 	ˆ(ðQeðR 	ˆ(ðSeðT 	ˆ)ðUeðV 	ˆ)ðWeðX 	ˆ)ðYeðZ 	ˆ)ð[eð\ 	ˆ-ð]eð^ 	ˆ+ð_eð` 	ˆ)ðaeðb 	ˆ*ðceðd 	ˆ,ðeeðf 	ˆ(ògeðh 	ˆ(ðieðj 	ˆ+ðkeðl 	ˆ*ðmeðn 	ˆ(ðoeðp 	ˆ+ðqeðr 	ˆ)ðseðt 	ˆ(ðueðv 	ˆ*ðweðx 	ˆ)ðyeðz 	ˆ*ð{eð| 	ˆ)ð}eð~ 	ˆ)ðeð@ 	ˆ)ðAeðB 	ˆ'ðCeðD 	ˆ'ðEeðF 	ˆ(ðGeðH 	ˆ(òIeðJ 	ˆ+ðKeðL 	ˆ)ðMeðN 	ˆ*ðOeðP 	ˆ,ðQeðR 	ˆ'ðSeðT 	ˆ(ðUeðV 	ˆ*ðWeðX 	ˆ)ðYeðZ 	ˆ)ð[eð\ 	ˆ%ð]eð^ 	ˆ'ð_eð` 	ˆ)ðaeðb 	Ð
ðceðd 	ˆ(ðeeðf 	ˆ)ðgeðh 	ˆ)ðieðj 	ˆ)ñkeðl 	ˆ*Øˆ/Øˆ)Øˆ)Øˆ)Øˆ*Øˆ*Øˆ'Ø	ˆ:Øˆ)Øˆ'Øˆ)Øˆ*Øˆ+Ø	ˆ;ñIe€	ðPØ,5¯O©OÔ,=Ô>Ñ,=™.˜$€x‚~Ñ,=Ò>ðàˆtØ�ØˆtØˆtØ�TØˆdØˆtØ�Ø�Ø�Ø�Ø�ñÐ ð  ˜Ð&€ôV	Ð(ô V	÷r-ô4u"ðpyÐnrô yôxu"òp÷ -õ4-õ@-ò0#1ðL Ð
‚ùós' ?s   ÆH