Ë
    ÿÍ:jÀT  ã                   óà  — d Z ddlmZ ddlmZmZmZm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mZ ddlmZmZ ddlmZmZmZmZmZmZ ddlZdd	lm Z! dd
l"m#Z#  e#e$«      Z%ddgZ&ddddddœZ'i dd“dd“dd“dd“dd“dd“dd“dd “d!d"“d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“i d3d4“d5d6“d7d8“d9d:“d;d<“d=d>“d?d@“dAdB“dCdD“dEdF“dGdH“dIdJ“dKdL“dMdN“dOdP“dQdR“dSdT“¥dUdVdWœ¥Z(dpdXe)dYe)dZee)   d[e*fd\„Z+	 	 	 	 	 dqd]ee   d^ejX                  jZ                  d_e.d`ee)e	j^                  ej`                  f   dYe)dae)dbe*dce*dde*deedfefdg„Z1	 drdh„Z2e G di„ dj«      «       Z3drdk„Z4e G dl„ dm«      «       Z5dn„ Z6dsdo„Z7y)tz+
Forced Alignment with Whisper
C. Max Bain
é    )Ú	dataclass)ÚIterableÚOptionalÚUnionÚListN)ÚWav2Vec2ForCTCÚWav2Vec2Processor)ÚSAMPLE_RATEÚ
load_audio)Úinterpolate_nansÚPUNKT_LANGUAGES)ÚAlignedTranscriptionResultÚSingleSegmentÚSingleAlignedSegmentÚSingleWordSegmentÚSegmentDataÚProgressCallback)Úload)Ú
get_loggerÚjaÚzhÚWAV2VEC2_ASR_BASE_960HÚVOXPOPULI_ASR_BASE_10K_FRÚVOXPOPULI_ASR_BASE_10K_DEÚVOXPOPULI_ASR_BASE_10K_ESÚVOXPOPULI_ASR_BASE_10K_IT)ÚenÚfrÚdeÚesÚitz.jonatasgrosman/wav2vec2-large-xlsr-53-japanesez3jonatasgrosman/wav2vec2-large-xlsr-53-chinese-zh-cnÚnlz+jonatasgrosman/wav2vec2-large-xlsr-53-dutchÚukz*Yehor/wav2vec2-xls-r-300m-uk-with-small-lmÚptz0jonatasgrosman/wav2vec2-large-xlsr-53-portugueseÚarz,jonatasgrosman/wav2vec2-large-xlsr-53-arabicÚcsz#comodoro/wav2vec2-xls-r-300m-cs-250Úruz-jonatasgrosman/wav2vec2-large-xlsr-53-russianÚplz,jonatasgrosman/wav2vec2-large-xlsr-53-polishÚhuz/jonatasgrosman/wav2vec2-large-xlsr-53-hungarianÚfiz-jonatasgrosman/wav2vec2-large-xlsr-53-finnishÚfaz-jonatasgrosman/wav2vec2-large-xlsr-53-persianÚelz+jonatasgrosman/wav2vec2-large-xlsr-53-greekÚtrz'mpoyraz/wav2vec2-xls-r-300m-cv7-turkishÚdaz(saattrupdan/wav2vec2-xls-r-300m-ftspeechÚhez%imvladikon/wav2vec2-xls-r-300m-hebrewÚviz(nguyenvulebinh/wav2vec2-base-vi-vlsp2020Úkoz"kresnik/wav2vec2-large-xlsr-koreanÚurz)kingabzpro/wav2vec2-large-xls-r-300m-UrduÚtez(anuragshas/wav2vec2-large-xlsr-53-teluguÚhiz#theainerd/Wav2Vec2-large-xlsr-hindiÚcaz%softcatala/wav2vec2-large-xlsr-catalaÚmlz!gvs/wav2vec2-large-xlsr-malayalamÚnoz!NbAiLab/nb-wav2vec2-1b-bokmaal-v2ÚnnzNbAiLab/nb-wav2vec2-1b-nynorskÚskz#comodoro/wav2vec2-xls-r-300m-sk-cv8Úslz(anton-l/wav2vec2-large-xlsr-53-slovenianÚhrz%classla/wav2vec2-xls-r-parlaspeech-hrÚrozgigant/romanian-wav2vec2Úeuz'stefan-it/wav2vec2-large-xlsr-53-basqueÚglz!ifrz/wav2vec2-large-xlsr-galicianÚkaz"xsway/wav2vec2-large-xlsr-georgianÚlvz'jimregan/wav2vec2-large-xlsr-latvian-cvÚtlz/Khalsuu/filipino-wav2vec2-l-xls-r-300m-officialz#KBLab/wav2vec2-large-voxrex-swedishz$cahya/wav2vec2-large-xlsr-indonesian)ÚsvÚidÚlanguage_codeÚdeviceÚ
model_nameÚmodel_cache_onlyc                 ó¸  — |€K| t         v r
t         |    }n9| t        v r
t        |    }n't        j                  d| › d�«       t	        d| › �«      ‚|t
        j                  j                  v rd}t
        j                  j                  |   }|j                  d|i¬«      j                  |«      }|j                  «       }t        |«      D �	�
ci c]  \  }	}
|
j                  «       |	“Œ }}	}
n§	 t        j                  |||¬«      }t!        j                  |||¬«      }d}|j                  |«      }|j&                  j)                  «       }|j&                  j)                  «       j+                  «       D ��ci c]  \  }}|j                  «       |“Œ }}}| ||dœ}||fS c c}
}	w # t"        $ r*}t%        |«       t%        d«       t	        d	|› d
�«      ‚d }~ww xY wc c}}w )Nz)No default alignment model for language: z•. Please find a wav2vec2.0 model finetuned on this language at https://huggingface.co/models, then pass the model name via --align_model [MODEL_NAME]z%No default align-model for language: Ú
torchaudioÚ	model_dir)Ú	dl_kwargs)Ú	cache_dirÚlocal_files_onlyziError loading model from huggingface, check https://huggingface.co/models for finetuned wav2vec2.0 modelszThe chosen align_model "zˆ" could not be found in huggingface (https://huggingface.co/models) or torchaudio (https://pytorch.org/audio/stable/pipelines.html#id14)Úhuggingface)ÚlanguageÚ
dictionaryÚtype)ÚDEFAULT_ALIGN_MODELS_TORCHÚDEFAULT_ALIGN_MODELS_HFÚloggerÚerrorÚ
ValueErrorrI   Ú	pipelinesÚ__all__Ú__dict__Ú	get_modelÚtoÚ
get_labelsÚ	enumerateÚlowerr	   Úfrom_pretrainedr   Ú	ExceptionÚprintÚ	tokenizerÚ	get_vocabÚitems)rD   rE   rF   rJ   rG   Úpipeline_typeÚbundleÚalign_modelÚlabelsÚiÚcÚalign_dictionaryÚ	processorÚeÚcharÚcodeÚalign_metadatas                    úg/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/whisperx/alignment.pyÚload_align_modelrr   P   së  € ØÐàÔ6Ñ6Ü3°MÑB‰JØÔ5Ñ5Ü0°Ñ?‰Jä�L‰LÐDÀ]ÀOð TSð Tô Uô ÐDÀ]ÀOÐTÓUÐUà”Z×)Ñ)×1Ñ1Ñ1Ø$ˆÜ×%Ñ%×.Ñ.¨zÑ:ˆØ×&Ñ&°+¸yÐ1IÐ&ÓJ×MÑMÈfÓUˆØ×"Ñ"Ó$ˆÜ5>¸vÓ5F×G©T¨Q°˜AŸG™G›I q™LÐGÐÒGð	NÜ)×9Ñ9¸*ÐPYÐl|Ô}ˆIÜ(×8Ñ8¸ÈyÐk{Ô|ˆKð
 &ˆØ!—n‘n VÓ,ˆØ×$Ñ$×.Ñ.Ó0ˆØ@I×@SÑ@S×@]Ñ@]Ó@_×@eÑ@eÓ@g×h±9°4¸˜DŸJ™J›L¨$Ñ.ÐhÐÑhà"/Ð?OÐYfÑg€Nà˜Ð&Ð&ùó! Høô
 ò 	NÜ�!ŒHÜÐ}ÔÜÐ7¸
°|ð  DLð  Mó  Nð  Nûð	Nüó is$   Ã
FÃ*0F  Å2GÆ 	GÆ)%GÇGÚ
transcriptÚmodelÚalign_model_metadataÚaudioÚinterpolate_methodÚreturn_char_alignmentsÚprint_progressÚcombined_progressÚprogress_callbackÚreturnc
                 óF  ‡Y— t        j                  |«      s0t        |t        «      rt	        |«      }t        j
                  |«      }t        |j                  «      dk(  r|j                  d«      }|j                  d   t        z  }
|d   ŠY|d   }|d   }t        | «      }i }t        | «      D �]Å  \  }}|r'|dz   |z  dz  }|rd|dz  z   n|}t        d	|d
›d�«       t        |d   «      t        |d   j                  «       «      z
  }t        |d   «      t        |d   j                  «       «      z
  }|d   }|t        vr|j                  d«      }n|}g g }}t        |«      D ]¦  \  }}|j!                  «       }|t        vr|j#                  dd«      }||k  rŒ6|t        |«      |z
  dz
  kD  rŒK|‰Yj%                  «       v r#|j'                  |«       |j'                  |«       Œ€|dvsŒ…|j'                  |«       |j'                  |«       Œ¨ t)        t+        t        |«      «      «      }t-        j.                  |d«      }	 t1        d|› d�«      }t)        |j9                  |«      «      }||||dœ||<   �ŒÈ g } t        | «      D �	]"  \  }}|d   }!|d   }"|d   }|j/                  d«      }#|!|"|g ddœ}$|#�|#|$d<   |rg |$d<   t        ||   d   «      dk(  r.t:        j=                  d|d   › d�«       | j'                  |$«       Œ|!|
k\  r.t:        j=                  d|d   › d �«       | j'                  |$«       Œ²d!j?                  ||   d   «      }%tA        |!t        z  «      }&tA        |"t        z  «      }'|dd…|&|'…f   }(|(j                  d"   d#k  rot        jB                  |(j                  d"   g«      jE                  |«      })t         jF                  jH                  jK                  |(dd#|(j                  d"   z
  f«      }(nd})t        jL                  «       5  |d$k(  r ||(jE                  |«      |)¬%«      \  }*}+n6|d&k(  r" ||(jE                  |«      «      jN                  }*ntQ        d'|› d(�«      ‚t        jR                  |*d"¬)«      }*ddd«       *d   jU                  «       jW                  «       },d}-‰YjY                  «       D ]  \  }}.|d*k(  s|d+k(  sŒ|.}-Œ t[        ˆYfd,„|%D «       «      }/|/r¸t        j\                  |,j_                  d«      t         j`                  ¬-«      }0d.|0|-<   |,dd…|0f   jc                  d¬)«      jd                  }1t        jf                  |,|1j                  d«      gd¬)«      },|,j_                  d«      dz
  }2|%D �3cg c]  }3‰Yj/                  |3|2«      ‘Œ }4}3n|%D �3cg c]  }3‰Y|3   ‘Œ	 }4}3ti        |,|4|-«      }5tk        |5|,|4|-«      }6|6€/t:        j=                  d|d   › d/�«       | j'                  |$«       �Œ{tm        |6|%«      }7|"|!z
  }8|8|(j_                  d«      z  |5j_                  d«      dz
  z  }9g }:d};t        |«      D ]Ä  \  }}d0\  }<}=}>|||   d1   v rh|7||   d1   jo                  |«         }?tq        |?jr                  |9z  |!z   d2«      }<tq        |?jt                  |9z  |!z   d2«      }=tq        |?jv                  d2«      }>|:j'                  ||<|=|>|;d3œ«       |t        v r|;dz  };Œ£|t        |«      dz
  k(  s||dz      dk(  sŒÀ|;dz  };ŒÆ ty        jz                  |:«      }:g }@d|:d4<   t        ||   d5   «      D �]«  \  }A\  }B}C|:j|                  |:jn                  |Bk\  |:jn                  |Ck  z     }D|A|:j|                  |:jn                  |Bk\  |:jn                  |Ck  z  d4f<   ||B|C }E|Dd   j                  «       }F|D|Dd6   dk7     }G|Gd   jc                  «       }Hg }I|Dd7   j�                  «       D �]  };Dj|                  |Dd7   |;k(     }Jd!j?                  |Jd6   jƒ                  «       «      j…                  «       }Kt        |K«      dk(  rŒXJ|Jd6   dk7     }J|Jd   j                  «       }L|Jd   jc                  «       }Mtq        |Jd8   j‡                  «       d2«      }Nd9Ki}Ot‰        jŠ                  |L«      sLOd<   t‰        jŠ                  M«      sMOd<   t‰        jŠ                  N«      sNOd8<   Ij'                  O«       �Œ I�r]ty        jŒ                  ID �Pcg c]"  }P|Pj/                  dtˆ        jŽ                  «      ‘Œ$ c}P«      }Qty        jŒ                  ID �Pcg c]"  }P|Pj/                  dtˆ        jŽ                  «      ‘Œ$ c}P«      }RQj‘                  «       j[                  «       r½Qj“                  «       j[                  «       rŸt•        Q|¬:«      }Qt•        R|¬:«      }Rt        I«      D ]w  \  }S}Pd|Pvr4ty        j’                  Qj–                  S   «      rQj–                  S   Pd<   dPvsŒCty        j’                  Rj–                  S   «      sŒfRj–                  S   Pd<   Œy EFHId;œ}T|#�|#Td<   @j'                  T«       |s�Œ>Dg d<¢   }D|Dj™                  d"d¬=«       |Dj›                  d>«      }D|DD ��U�Vcg c],  }|jY                  «       D �U�Vci c]  \  }U}V|Vd"k7  sŒUV“Œ c}V}U‘Œ. }D}U}}V|D@d"   d<   �Œ® ty        jz                  @«      }@t•        |@d   |¬:«      |@d<   t•        |@d   |¬:«      |@d<   dj>                  d?d@œ}W|t        v rd!j>                  Wd<   |rd?Wd<   |#�dAWd<   @j�                  ddgd.¬B«      jŸ                  W«      }@|@j›                  d>«      }@|	� |	|dz   |z  dz  «       | @z  } �	Œ% g }X| D ]
  }X|dC   z  }XŒ | XdDœS # t2        $ r* t5        j6                  dd¬«       t1        d|› d�«      }Y �	Œ¢w xY w# 1 sw Y   �ŒuxY wc c}3w c c}3w c c}Pw c c}Pw c c}V}Uw c c}V}U}w )EzG
    Align phoneme recognition predictions to known transcription.
    é   r   rP   rO   rQ   éd   é2   é   z
Progress: z.2fz%...Útextú ú|)rƒ   r„   Úenglishztokenizers/punkt_tab/z.pickleÚ	punkt_tabT)Úquiet)Ú
clean_charÚ	clean_cdxÚ	clean_wdxÚsentence_spansÚstartÚendÚavg_logprobN)rŒ   r�   r‚   ÚwordsÚcharsr�   rˆ   zFailed to align segment ("zR"): no characters in this segment found in model dictionary, resorting to originalz<"): original start time longer than audio duration, skippingÚ éÿÿÿÿi�  rI   )ÚlengthsrN   zAlign model of type z not supported.)Údimz[pad]z<pad>c              3   ó&   •K  — | ]  }|‰v–— Œ
 y ­w©N© )Ú.0rj   Úmodel_dictionarys     €rq   ú	<genexpr>zalign.<locals>.<genexpr>  s   øè ø€ ÒI¸˜1Ð$4Ô4ÑIùs   ƒ)ÚdtypeFz+"): backtrack failed, resorting to original)NNNr‰   é   )rn   rŒ   r�   Úscoreúword-idxzsentence-idxr‹   rn   rž   r�   Úword)Úmethod)r‚   rŒ   r�   r�   )rn   rŒ   r�   r�   )ÚinplaceÚrecordsÚsum)r‚   r�   Úfirst)Úas_indexr�   )ÚsegmentsÚword_segments)PÚtorchÚ	is_tensorÚ
isinstanceÚstrr   Ú
from_numpyÚlenÚshapeÚ	unsqueezer
   r]   ra   ÚlstripÚrstripÚLANGUAGES_WITHOUT_SPACESÚsplitr^   ÚreplaceÚkeysÚappendÚlistÚranger   ÚgetÚ	nltk_loadÚLookupErrorÚnltkÚdownloadÚspan_tokenizerT   ÚwarningÚjoinÚintÚ	as_tensorr[   r8   Ú
functionalÚpadÚinference_modeÚlogitsÚNotImplementedErrorÚlog_softmaxÚcpuÚdetachrd   ÚanyÚonesÚsizeÚboolÚmaxÚvaluesÚcatÚget_trellisÚ	backtrackÚmerge_repeatsÚindexÚroundrŒ   r�   r�   ÚpdÚ	DataFrameÚlocÚminÚuniqueÚtolistÚstripÚmeanÚnpÚisnanÚSeriesÚnanÚisnaÚnotnar   ÚilocÚfillnaÚto_dictÚgroupbyÚagg)Zrs   rt   ru   rv   rE   rw   rx   ry   rz   r{   ÚMAX_DURATIONÚ
model_langÚ
model_typeÚtotal_segmentsÚsegment_dataÚsdxÚsegmentÚbase_progressÚpercent_completeÚnum_leadingÚnum_trailingr‚   Úper_wordrˆ   r‰   Úcdxrn   Úchar_rŠ   Ú
punkt_langÚsentence_splitterr‹   Úaligned_segmentsÚt1Út2rŽ   Úaligned_segÚ
text_cleanÚf1Úf2Úwaveform_segmentr“   Ú	emissionsÚ_ÚemissionÚblank_idro   Úhas_wildcardÚnon_blank_maskÚwildcard_colÚwildcard_idrj   ÚtokensÚtrellisÚpathÚchar_segmentsÚdurationÚratioÚchar_segments_arrÚword_idxrŒ   r�   r�   Úchar_segÚaligned_subsegmentsÚsdx2ÚsstartÚsendÚ
curr_charsÚsentence_textÚsentence_startÚ	end_charsÚsentence_endÚsentence_wordsÚ
word_charsÚ	word_textÚ
word_startÚword_endÚ
word_scoreÚword_segmentÚwÚ_startsÚ_endsri   Ú
subsegmentÚkeyÚvalÚagg_dictr§   r™   sZ                                                                                            @rq   Úalignr*  u   sØ  ø€ ô  �?‰?˜5Ô!Ü�eœSÔ!Ü˜uÓ%ˆEÜ× Ñ  Ó'ˆÜ
ˆ5�;‰;Ó˜1ÒØ—‘ Ó"ˆà—;‘;˜q‘>¤KÑ/€Là+¨LÑ9ÐØ% jÑ1€JØ% fÑ-€Jô ˜“_€Nà+-€LÜ! *Ó-ó 5
‰ˆˆWáØ! A™g¨Ñ7¸3Ñ>ˆMÙ;L  ]°QÑ%6Ò 6ÐR_ÐÜ�JÐ/°Ð4°DÐ9Ô:ä˜' &™/Ó*¬S°¸±×1GÑ1GÓ1IÓ-JÑJˆÜ˜7 6™?Ó+¬c°'¸&±/×2HÑ2HÓ2JÓ.KÑKˆØ�v‰ˆð Ô5Ñ5Ø—z‘z #“‰HàˆHà " B�Iˆ
Ü" 4›ò 	&‰IˆC�Ø—J‘J“LˆEàÔ!9Ñ9ØŸ™ c¨3Ó/�ð �[Ò ØØ”s˜4“y <Ñ/°!Ñ3Ò3ØØÐ*×/Ñ/Ó1Ñ1Ø×!Ñ! %Ô(Ø× Ñ  Õ%Ø˜jÒ(à×!Ñ! %Ô(Ø× Ñ  Õ%ð#	&ô& œœs 8›}Ó-Ó.ˆ	ô %×(Ñ(¨°YÓ?ˆ
ð	WÜ )Ð,AÀ*ÀÈWÐ*UÓ VÐô Ð/×=Ñ=¸dÓCÓDˆð %Ø"Ø"Ø,ñ	
ˆ�SÓða5
ðn 46Ðô " *Ó-ó K0‰ˆˆWà�WÑˆØ�U‰^ˆØ�v‰ˆØ—k‘k -Ó0ˆð ØØØØñ-
ˆð Ð"Ø)4ˆK˜Ñ&á!Ø#%ˆK˜Ñ ô ˆ|˜CÑ  Ñ.Ó/°1Ò4Ü�N‰NÐ7¸À¹Ð7Hð  I[ð  \ô  ]Ø×#Ñ# KÔ0Øà�ÒÜ�N‰NÐ7¸À¹Ð7Hð  IEð  Fô  GØ×#Ñ# KÔ0Øà—W‘W˜\¨#Ñ.¨|Ñ<Ó=ˆ
ä�”kÑ!Ó"ˆÜ�”kÑ!Ó"ˆð !¢ B r E ™?Ðà×!Ñ! "Ñ%¨Ò+Ü—o‘oÐ'7×'=Ñ'=¸bÑ'AÐ&BÓC×FÑFÀvÓNˆGÜ$Ÿx™x×2Ñ2×6Ñ6Ø  1 cÐ,<×,BÑ,BÀ2Ñ,FÑ&FÐ"Gó Ñð ˆGä×!Ñ!Ó#ñ 	=Ø˜\Ò)Ù$Ð%5×%8Ñ%8¸Ó%@È'ÔR‘�	™1Ø˜}Ò,Ù!Ð"2×"5Ñ"5°fÓ"=Ó>×EÑE‘	ä)Ð,@ÀÀÈOÐ*\Ó]Ð]Ü×)Ñ)¨)¸Ô<ˆI÷	=ð ˜Q‘<×#Ñ#Ó%×,Ñ,Ó.ˆàˆØ*×0Ñ0Ó2ò 	 ‰JˆD�$Ø�wŠ $¨'£/Ø‘ð	 ô
 ÓI¸jÔIÓIˆÙä"ŸZ™Z¨¯©°aÓ(8ÄÇ
Á
ÔKˆNØ',ˆN˜8Ñ$Ø#¢A ~Ð$5Ñ6×:Ñ:¸qÐ:ÓA×HÑHˆLÜ—y‘y (¨L×,BÑ,BÀ1Ó,EÐ!FÈAÔNˆHØ"Ÿ-™-¨Ó*¨QÑ.ˆKØDNÖO¸qÐ&×*Ñ*¨1¨kÕ:ÐOˆFÑOà3=Ö>¨aÐ& qÓ)Ð>ˆFÐ>ä˜h¨°Ó9ˆÜ˜ (¨F°HÓ=ˆàˆ<Ü�N‰NÐ7¸À¹Ð7HÐHsÐtÔuØ×#Ñ# KÔ0Ùä% d¨JÓ7ˆà˜‘7ˆØÐ+×0Ñ0°Ó3Ñ3°w·|±|ÀA³ÈÑ7JÑKˆð ÐØˆÜ" 4›ò 	‰IˆC�Ø 0ÑˆE�3˜Ø�l 3Ñ'¨Ñ4Ñ4Ø(¨°cÑ):¸;Ñ)G×)MÑ)MÈcÓ)RÑS�Ü˜hŸn™n¨uÑ4°rÑ9¸1Ó=�Ü˜HŸL™L¨5Ñ0°2Ñ5°qÓ9�Ü˜hŸn™n¨aÓ0�à×$Ñ$à Ø"ØØ"Ø (ñôð Ô5Ñ5Ø˜A‘‘Øœ˜D›	 A™Ò%¨¨c°!©e©¸Ó);Ø˜A‘‘ð-	ô0 ŸL™LÐ):Ó;Ðà Ðà,0Ð˜.Ñ)Ü$-¨l¸3Ñ.?Ð@PÑ.QÓ$Ró ?	>Ñ ˆD‘.�6˜4Ø*×.Ñ.Ð0A×0GÑ0GÈ6Ñ0QÐVg×VmÑVmÐquÑVuÑ/vÑwˆJð ~BÐ×!Ñ!Ð#4×#:Ñ#:¸fÑ#DÐIZ×I`ÑI`ÐdhÑIhÑ"iÐkyÐ"yÑzà  ¨Ð-ˆMØ'¨Ñ0×4Ñ4Ó6ˆNØ" :¨fÑ#5¸Ñ#<Ñ=ˆIØ$ UÑ+×/Ñ/Ó1ˆLØˆNà& zÑ2×9Ñ9Ó;ó 4�Ø'Ÿ^™^¨J°zÑ,BÀhÑ,NÑO�
ØŸG™G J¨vÑ$6×$=Ñ$=Ó$?Ó@×FÑFÓH�	Ü�y“> QÒ&Øð (¨
°6Ñ(:¸cÑ(AÑB�
à'¨Ñ0×4Ñ4Ó6�
Ø% eÑ,×0Ñ0Ó2�Ü" :¨gÑ#6×#;Ñ#;Ó#=¸qÓA�
ð !'¨	Ð2�ä—x‘x 
Ô+Ø,6�L Ñ)Ü—x‘x Ô)Ø*2�L Ñ'Ü—x‘x 
Ô+Ø,6�L Ñ)à×%Ñ% lÖ3ð/4ò4 ÜŸ)™)À^Ö$TÀ Q§U¡U¨7´B·F±FÕ%;Ò$TÓU�ÜŸ	™	ÀÖ"P¸A 1§5¡5¨´·±Õ#7Ò"PÓQ�Ø—<‘<“>×%Ñ%Ô'¨G¯M©M«O×,?Ñ,?Ô,AÜ.¨wÐ?QÔR�GÜ,¨UÐ;MÔN�EÜ )¨.Ó 9ò 5™˜˜1Ø"¨!Ñ+´·±¸¿¹Àa¹Ô0IØ)0¯©°a©˜A˜g™JØ ¨š>¬b¯h©h°u·z±zÀ!±}Õ.EØ',§z¡z°!¡}˜A˜ešHð	5ð &Ø'Ø#Ø'ñ	ˆJð Ð&Ø,7�
˜=Ñ)Ø×&Ñ& zÔ2ã%Ø'Ò(IÑJ�
Ø×!Ñ! "¨dÐ!Ô3Ø'×/Ñ/°	Ó:�
Ø_i×jÐjÐW[¸¿
¹
»×R©H¨C°ÈÈrË	˜s C™xÕRÐj�
ÒjØ3=Ð# BÑ'¨Ó0ð?	>ôB !Ÿl™lÐ+>Ó?ÐÜ'7Ð8KÈGÑ8TÐ]oÔ'pÐ˜GÑ$Ü%5Ð6IÈ%Ñ6PÐYkÔ%lÐ˜EÑ"àŸH™H¨uÑ5ˆØÔ1Ñ1Ø!Ÿw™wˆH�VÑÙ!Ø %ˆH�WÑØÐ"Ø&-ˆH�]Ñ#Ø0×8Ñ8¸'À5Ð9IÐTYÐ8ÓZ×^Ñ^Ð_gÓhÐØ1×9Ñ9¸)ÓDÐØÐ(Ù  a¡¨>Ñ9¸SÑ@ÔAàÐ/Ñ/ÒðWK0ð\ .0€MØ#ò *ˆØ˜ Ñ)Ñ)‰ð*ð )¸=ÑIÐIøôC ò 	WÜ�M‰M˜+¨TÕ2Ü )Ð,AÀ*ÀÈWÐ*UÓ VÓð	Wú÷~	=ñ 	=üò2 Pùâ>ùòh %UùÚ"Pùó0 SùÔjsU   É n?ÐA0o5ÖpÖ$pä'på'pê*pëpëpëpî?/o2ï1o2ï5o?	ðpc                 ó´  — | j                  d«      }t        |«      }t        j                  |dz   |dz   f«      }d|d<   t        j                  | d d …|f   d«      |dd …df<   t        d«       |d| d …f<   t        d«      || d …df<   t        |«      D ]@  }t        j                  ||dd …f   | ||f   z   ||d d…f   | ||f   z   «      ||dz   dd …f<   ŒB |S )Nr   r~   ©r   r   Úinfr’   )rÍ   r­   r¨   ÚemptyÚcumsumÚfloatr¸   Úmaximum)r  r
  r  Ú	num_frameÚ
num_tokensr  Úts          rq   rÒ   rÒ   ©  s   € Ø—‘˜aÓ €IÜ�V“€Jô
 �k‰k˜9 q™=¨*°q©.Ð9Ó:€GØ€GˆD�MÜ—\‘\ (ª1¨h¨;Ñ"7¸Ó;€GˆA‰B�ˆE�NÜ % e£˜}€GˆA�
ˆ{‰|ˆOÑÜ$ U›|€GˆZˆK‰L˜!ˆOÑä�9Óò 
ˆÜ"Ÿ]™]à�A�q‘r�E‰N˜X a¨ kÑ2Ñ2à�A�s˜�s�F‰O˜h q¨& yÑ1Ñ1ó	
ˆ��A‘�q‘r�	Òð
ð €Nó    c                   ó,   — e Zd ZU eed<   eed<   eed<   y)ÚPointÚtoken_indexÚ
time_indexr�   N)Ú__name__Ú
__module__Ú__qualname__rÁ   Ú__annotations__r0  r—   r5  rq   r7  r7  À  s   … àÓØƒOØ„Lr5  r7  c                 óì  — | j                  d«      dz
  }t        j                  | d d …|f   «      j                  «       }g }t	        |dd«      D ]œ  }| |dz
  |f   ||dz
  |f   z   }| |dz
  |dz
  f   ||dz
  ||dz
     f   z   }	||dz
  |	|kD  r||dz
     n|f   j                  «       j                  «       }
|j                  t        |dz
  |dz
  |
«      «       |	|kD  sŒ‘|dz  }|dk(  sŒœ n y |d d d…   S )Nr~   r   r’   )rÍ   r¨   ÚargmaxÚitemr¸   Úexpr¶   r7  )r  r  r
  r  ÚjÚt_startr  r4  ÚstayedÚchangedÚprobs              rq   rÓ   rÓ   Ç  s.  € ð 	�‰�Q‹˜!Ñ€AÜ�l‰l˜7¢1 a 4™=Ó)×.Ñ.Ó0€Gà€DÜ�7˜A˜rÓ"ò ˆð
 ˜˜Q™ ˜Ñ" X¨a°!©e°X¨oÑ%>Ñ>ˆà˜!˜a™%  Q¡˜,Ñ'¨(°1°q±5¸&ÀÀQÁ¹-Ð3GÑ*HÑHˆð ˜˜A™°¸&Ò0@˜v a¨!¡eš}ÀhÐNÑO×SÑSÓU×ZÑZÓ\ˆà�‰”E˜!˜a™%  Q¡¨Ó-Ô.ð �VÓØ�‰FˆAØ�A‹vÙð%ð* à‘�"�‰:Ðr5  c                   óL   — e Zd ZU eed<   eed<   eed<   eed<   d„ Zed„ «       Z	y)ÚSegmentÚlabelrŒ   r�   r�   c                 ót   — | j                   › d| j                  d›d| j                  d›d| j                  d›d�S )Nz	(z4.2fz): [Ú5dz, ú))rI  r�   rŒ   r�   ©Úselfs    rq   Ú__repr__zSegment.__repr__õ  s:   € Ø—*‘*�˜S §¡¨DÐ 1°°d·j±jÀ°_ÀBÀtÇxÁxÐPRÀmÐSTÐUÐUr5  c                 ó4   — | j                   | j                  z
  S r–   )r�   rŒ   rM  s    rq   ÚlengthzSegment.lengthø  s   € à�x‰x˜$Ÿ*™*Ñ$Ð$r5  N)
r:  r;  r<  r«   r=  rÁ   r0  rO  ÚpropertyrQ  r—   r5  rq   rH  rH  î  s0   … àƒJØƒJØ	ƒHØƒLòVð ñ%ó ñ%r5  rH  c           	      óö  ‡ — d\  }}g }|t        ‰ «      k  râ|t        ‰ «      k  rR‰ |   j                  ‰ |   j                  k(  r3|dz  }|t        ‰ «      k  r ‰ |   j                  ‰ |   j                  k(  rŒ3t        ˆ fd„t        ||«      D «       «      ||z
  z  }|j	                  t        |‰ |   j                     ‰ |   j                  ‰ |dz
     j                  dz   |«      «       |}|t        ‰ «      k  rŒâ|S )Nr,  r~   c              3   ó<   •K  — | ]  }‰|   j                   –— Œ y ­wr–   )r�   )r˜   Úkr  s     €rq   rš   z merge_repeats.<locals>.<genexpr>  s   øè ø€ Ò9 a�D˜‘G—M•MÑ9ùs   ƒ)r­   r8  r£   r¸   r¶   rH  r9  )r  rs   Úi1Úi2r¦   r�   s   `     rq   rÔ   rÔ   ü  sù   ø€ Ø�F€BˆØ€HØ
Œs�4‹yŠ.Ø”3�t“9Šn  b¡×!5Ñ!5¸¸b¹×9MÑ9MÒ!MØ�!‰GˆBð ”3�t“9Šn  b¡×!5Ñ!5¸¸b¹×9MÑ9MÓ!MäÓ9¬5°°R«=Ô9Ó9¸RÀ"¹WÑEˆØ�‰ÜØ˜4 ™8×/Ñ/Ñ0Ø�R‘×#Ñ#Ø�R˜!‘V‘×'Ñ'¨!Ñ+Øó	ô	
ð ˆð Œs�4‹y‹.ð €Or5  c           	      óÖ  — g }d\  }}|t        | «      k  rÎ|t        | «      k\  s| |   j                  |k(  rš||k7  r�| || }dj                  |D �cg c]  }|j                  ‘Œ c}«      }t        d„ |D «       «      t        d„ |D «       «      z  }|j	                  t        || |   j                  | |dz
     j                  |«      «       |dz   }|}n|dz  }|t        | «      k  rŒÎ|S c c}w )Nr,  r‘   c              3   óN   K  — | ]  }|j                   |j                  z  –— Œ y ­wr–   )r�   rQ  ©r˜   Úsegs     rq   rš   zmerge_words.<locals>.<genexpr>  s   è ø€ ÒC°s˜CŸI™I¨¯
©
Õ2ÑCùs   ‚#%c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr–   )rQ  rZ  s     rq   rš   zmerge_words.<locals>.<genexpr>  s   è ø€ ÒIeÐY\È#Ï*Í*ÑIeùs   ‚r~   )r­   rI  rÀ   r£   r¶   rH  rŒ   r�   )	r¦   Ú	separatorr�   rV  rW  Úsegsr[  rŸ   r�   s	            rq   Úmerge_wordsr_    së   € Ø€EØ�F€BˆØ
Œs�8‹}Ò
Ø”�X“Ò (¨2¡,×"4Ñ"4¸	Ò"AØ�RŠxØ  2��Ø—w‘w°TÖ:¨c §	£	Ò:Ó;�ÜÑC¸dÔCÓCÄcÑIeÐ`dÔIeÓFeÑe�Ø—‘œW T¨8°B©<×+=Ñ+=¸xÈÈQÉÑ?O×?SÑ?SÐUZÓ[Ô\Ø�a‘ˆBØ‰Bà�!‰GˆBð Œs�8‹}Ó
ð €Lùò  ;s   ÁC&)NNF)ÚnearestFFFN)r   )r„   )8Ú__doc__Údataclassesr   Útypingr   r   r   r   Únumpyrß   Úpandasr×   r¨   rI   Útransformersr   r	   Úwhisperx.audior
   r   Úwhisperx.utilsr   r   Úwhisperx.schemar   r   r   r   r   r   r¼   Ú	nltk.datar   rº   Úwhisperx.log_utilsr   r:  rT   r²   rR   rS   r«   rÎ   rr   r8   ÚModuleÚdictÚndarrayÚTensorr*  rÒ   r7  rÓ   rH  rÔ   r_  r—   r5  rq   ú<module>rp     sm  ðñõ "ß 2Ó 2ã Û Û Û ß :ç 2ß <÷÷ ó Ý 'Ý )á	�HÓ	€à  $˜<Ð ð #Ø
%Ø
%Ø
%Ø
%ñÐ ð%ØÐ
:ð%àÐ
?ð%ð 	Ð
7ð%ð 	Ð
6ð	%ð
 	Ð
<ð%ð 	Ð
8ð%ð 	Ð
/ð%ð 	Ð
9ð%ð 	Ð
8ð%ð 	Ð
;ð%ð 	Ð
9ð%ð 	Ð
9ð%ð 	Ð
7ð%ð 	Ð
3ð%ð 	Ð
4ð%ð  	Ð
1ð!%ð" 	Ð
4ñ#%ð$ 	Ð
.ð%%ð& 	Ð
5ð'%ð( 	Ð
4ð)%ð* 	Ð
/ð+%ð, 	Ð
1ð-%ð. 	Ð
-ð/%ð0 	Ð
-ð1%ð2 	Ð
*ð3%ð4 	Ð
/ð5%ð6 	Ð
4ð7%ð8 	Ð
1ð9%ð: 	Ð
$ð;%ð< 	Ð
3ð=%ð> 	Ð
-ð?%ð@ 	Ð
.ðA%ðB 	Ð
3ðC%ðD 	Ð
;ñE%ðF 0Ø
0òI%Ð ñP"' Cð "'°ð "'À(È3Á-ð "'Ðz~ó "'ðV (Ø#(Ø Ø#Ø*.ñmJØ˜Ñ'ðmJà�8‰8�?‰?ðmJð ðmJð ��b—j‘j %§,¡,Ð.Ñ/ð	mJð
 ðmJð ðmJð !ðmJð ðmJð ðmJð (ðmJð  ómJð^	ó
ð. ÷ð ó ðó#ðN ÷%ð %ó ð%òô$r5  