§
    øóÉ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(dsdYe)dZe)d[ee)         d\e*fd]„Z+	 	 	 	 	 dtd_ee         d`ej,        j-        dae.dbee)e	j/        ej0        f         dZe)dce)dde*dee*dfe*dgedhefdi„Z1	 dudj„Z2e G dk„ dl¦  «        ¦   «         Z3dudm„Z4e G dn„ do¦  «        ¦   «         Z5dp„ Z6dvdr„Z7dS )wz+
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ÚidFÚlanguage_codeÚdeviceÚ
model_nameÚmodel_cache_onlyc                 ó�  — |€^| t           v rt           |          }nG| t          v rt          |          }n0t                               d| › d�¦  «         t	          d| › �¦  «        ‚|t
          j        j        v rrd}t
          j        j        |         }| 	                    d|i¬¦  «         
                    |¦  «        }|                     ¦   «         }d„ t          |¦  «        D ¦   «         }	nØ	 t          j        |||¬¦  «        }
t          j        |||¬¦  «        }nC# t           $ r6}t#          |¦  «         t#          d	¦  «         t	          d
|› d�¦  «        ‚d }~ww xY wd}| 
                    |¦  «        }|
j                             ¦   «         }d„ |
j                             ¦   «                              ¦   «         D ¦   «         }	| |	|dœ}||fS )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_kwargsc                 ó>   — i | ]\  }}|                      ¦   «         |“ŒS © ©Úlower)Ú.0ÚiÚcs      úu/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib/python3.11/site-packages/whisperx/alignment.pyú
<dictcomp>z$load_align_model.<locals>.<dictcomp>b   s&   € ÐGÐGÐG©T¨Q°˜AŸGšG™IœI qÐGÐGÐGó    )Ú	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)Úhuggingfacec                 ó>   — i | ]\  }}|                      ¦   «         |“ŒS rM   rN   )rP   ÚcharÚcodes      rS   rT   z$load_align_model.<locals>.<dictcomp>n   s&   € ÐhÐhÐh±9°4¸˜DŸJšJ™LœL¨$ÐhÐhÐhrU   )ÚlanguageÚ
dictionaryÚtype)ÚDEFAULT_ALIGN_MODELS_TORCHÚDEFAULT_ALIGN_MODELS_HFÚloggerÚerrorÚ
ValueErrorrI   Ú	pipelinesÚ__all__Ú__dict__Ú	get_modelÚtoÚ
get_labelsÚ	enumerater	   Úfrom_pretrainedr   Ú	ExceptionÚprintÚ	tokenizerÚ	get_vocabÚitems)rD   rE   rF   rJ   rG   Úpipeline_typeÚbundleÚalign_modelÚlabelsÚalign_dictionaryÚ	processorÚeÚalign_metadatas                rS   Úload_align_modelry   P   s  € ØÐàÕ6Ð6Ð6Ý3°MÔBˆJˆJØÕ5Ð5Ð5Ý0°Ô?ˆJˆJå�LŠLð TÀ]ð Tð Tð Tñ Uô Uð Uõ ÐTÀ]ÐTÐTÑUÔUÐUà•ZÔ)Ô1Ð1Ð1Ø$ˆÝÔ%Ô.¨zÔ:ˆØ×&Ò&°+¸yÐ1IÐ&ÑJÔJ×MÒMÈfÑUÔUˆØ×"Ò"Ñ$Ô$ˆØGÐGµY¸vÑ5FÔ5FÐGÑGÔGÐÐð	NÝ)Ô9¸*ÐPYÐl|Ð}Ñ}Ô}ˆIÝ(Ô8¸ÈyÐk{Ð|Ñ|Ô|ˆKˆKøÝð 	Nð 	Nð 	NÝ�!‰HŒHˆHÝÐ~ÑÔÐÝð  M¸
ð  Mð  Mð  Mñ  Nô  Nð  Nøøøøð	Nøøøð &ˆØ!—n’n VÑ,Ô,ˆØÔ$×.Ò.Ñ0Ô0ˆØhÐhÀ	Ô@S×@]Ò@]Ñ@_Ô@_×@eÒ@eÑ@gÔ@gÐhÑhÔhÐà"/Ð?OÐYfÐgÐg€Nà˜Ð&Ð&s   Ã'.D Ä
EÄ 1EÅEÚnearestÚ
transcriptÚmodelÚalign_model_metadataÚaudioÚinterpolate_methodÚreturn_char_alignmentsÚprint_progressÚcombined_progressÚprogress_callbackÚreturnc
           
      óP  ‡U‡V— t          j        |¦  «        s8t          |t          ¦  «        rt	          |¦  «        }t          j        |¦  «        }t          |j        ¦  «        dk    r|                     d¦  «        }|j        d         t          z  }
|d         ŠU|d         }|d         }t          | ¦  «        }i }t          | ¦  «        D �]j\  }}|r+|dz   |z  dz  }|rd|dz  z   n|}t          d	|d
›d�¦  «         t          |d         ¦  «        t          |d                              ¦   «         ¦  «        z
  }t          |d         ¦  «        t          |d                              ¦   «         ¦  «        z
  }|d         }|t          vr|                     d¦  «        }n|}g g }}t          |¦  «        D ]È\  }}|                     ¦   «         }|t          vr|                     dd¦  «        }||k     rŒ?|t          |¦  «        |z
  dz
  k    rŒY|‰U                     ¦   «         v r+|                     |¦  «         |                     |¦  «         Œš|dvr*|                     |¦  «         |                     |¦  «         ŒÉt)          t+          t          |¦  «        ¦  «        ¦  «        }t-          j        |d¦  «        }	 t1          d|› d�¦  «        }n9# t2          $ r, t5          j        dd¬¦  «         t1          d|› d�¦  «        }Y nw xY wt)          |                     |¦  «        ¦  «        }||||dœ||<   �Œlg } t          | ¦  «        D �	]É\  }}|d         }!|d         }"|d         }|                     d¦  «        }#|!|"|g ddœ}$|#�|#|$d<   |rg |$d<   t          ||         d         ¦  «        dk    r:t:                               d|d         › d�¦  «         |                      |$¦  «         Œ¢|!|
k    r:t:                               d|d         › d �¦  «         |                      |$¦  «         Œâd!                     ||         d         ¦  «        }%tA          |!t          z  ¦  «        }&tA          |"t          z  ¦  «        }'|dd…|&|'…f         }(|(j        d"         d#k     rit          j!        |(j        d"         g¦  «         "                    |¦  «        })t           j#        j$         %                    |(dd#|(j        d"         z
  f¦  «        }(nd})t          j&        ¦   «         5  |d$k    r$ ||( "                    |¦  «        |)¬%¦  «        \  }*}+n=|d&k    r$ ||( "                    |¦  «        ¦  «        j'        }*ntQ          d'|› d(�¦  «        ‚t          j)        |*d"¬)¦  «        }*ddd¦  «         n# 1 swxY w Y   |*d          *                    ¦   «          +                    ¦   «         },d}-‰U ,                    ¦   «         D ]\  }}.|d*k    s|d+k    r|.}-Œt[          ˆUfd,„|%D ¦   «         ¦  «        }/|/r°t          j.        |, /                    d¦  «        t           j0        ¬-¦  «        }0d.|0|-<   |,dd…|0f          1                    d¬)¦  «        j2        }1t          j3        |,|1                     d¦  «        gd¬)¦  «        },|, /                    d¦  «        dz
  ŠVˆUˆVfd/„|%D ¦   «         }2nˆUfd0„|%D ¦   «         }2ti          |,|2|-¦  «        }3tk          |3|,|2|-¦  «        }4|4€;t:                               d|d         › d1�¦  «         |                      |$¦  «         �Œôtm          |4|%¦  «        }5|"|!z
  }6|6|( /                    d¦  «        z  |3 /                    d¦  «        dz
  z  }7g }8d}9t          |¦  «        D ]á\  }}d2\  }:};}<|||         d3         v rr|5||         d3          7                    |¦  «                 }=tq          |=j9        |7z  |!z   d4¦  «        }:tq          |=j:        |7z  |!z   d4¦  «        };tq          |=j;        d4¦  «        }<|8                     ||:|;|<|9d5œ¦  «         |t          v r|9dz  }9Œ·|t          |¦  «        dz
  k    s||dz            dk    r|9dz  }9Œâty          j=        |8¦  «        }8g }>d|8d6<   t          ||         d7         ¦  «        D �]“\  }?\  }@}A|8j>        |8j7        |@k    |8j7        |Ak    z           }B|?|8j>        |8j7        |@k    |8j7        |Ak    z  d6f<   ||@|A…         }C|Bd          ?                    ¦   «         }D|B|Bd8         dk             }E|Ed          1                    ¦   «         }Fg }G|Bd9          @                    ¦   «         D �]?}9|Bj>        |Bd9         |9k             }Hd!                     |Hd8          A                    ¦   «         ¦  «         B                    ¦   «         }It          |I¦  «        dk    rŒm|H|Hd8         dk             }H|Hd          ?                    ¦   «         }J|Hd          1                    ¦   «         }Ktq          |Hd:          C                    ¦   «         d4¦  «        }Ld;|Ii}Mt‰          jE        |J¦  «        s|J|Md<   t‰          jE        |K¦  «        s|K|Md<   t‰          jE        |L¦  «        s|L|Md:<   |G                     |M¦  «         �ŒA|G�r%ty          jF        d<„ |GD ¦   «         ¦  «        }Nty          jF        d=„ |GD ¦   «         ¦  «        }O|N G                    ¦   «          -                    ¦   «         rÃ|N H                    ¦   «          -                    ¦   «         r�t“          |N|¬>¦  «        }Nt“          |O|¬>¦  «        }Ot          |G¦  «        D ]k\  }P}Qd|Qvr/ty          jH        |NjJ        |P         ¦  «        r|NjJ        |P         |Qd<   d|Qvr/ty          jH        |OjJ        |P         ¦  «        r|OjJ        |P         |Qd<   Œl|C|D|F|Gd?œ}R|#�|#|Rd<   |>                     |R¦  «         |rM|Bg d@¢         }B|B K                    d"d¬A¦  «         |B L                    dB¦  «        }BdC„ |BD ¦   «         }B|B|>d"         d<   �Œ•ty          j=        |>¦  «        }>t“          |>d         |¬>¦  «        |>d<   t“          |>d         |¬>¦  «        |>d<   dj        dDdEœ}S|t          v r
d!j        |Sd<   |rdD|Sd<   |#�dF|Sd<   |> M                    ddgd.¬G¦  «         N                    |S¦  «        }>|> L                    dB¦  «        }>|	� |	|dz   |z  dz  ¦  «         | |>z  } �	ŒËg }T| D ]}|T|dH         z  }TŒ| |TdIœS )JzG
    Align phoneme recognition predictions to known transcription.
    é   r   r]   r\   r^   é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   )ÚlengthsrX   zAlign model of type z not supported.)Údimz[pad]z<pad>c              3   ó    •K  — | ]}|‰vV — Œ	d S ©NrM   ©rP   rR   Úmodel_dictionarys     €rS   ú	<genexpr>zalign.<locals>.<genexpr>  s)   øè è € ÐIÐI¸˜1Ð$4Ð4ÐIÐIÐIÐIÐIÐIrU   )ÚdtypeFc                 ó<   •— g | ]}‰                      |‰¦  «        ‘ŒS rM   )Úget)rP   rR   r    Úwildcard_ids     €€rS   ú
<listcomp>zalign.<locals>.<listcomp>  s*   ø€ ÐOÐOÐO¸qÐ&×*Ò*¨1¨kÑ:Ô:ÐOÐOÐOrU   c                 ó    •— g | ]
}‰|         ‘ŒS rM   rM   rŸ   s     €rS   r¦   zalign.<locals>.<listcomp>  s   ø€ Ð>Ð>Ð>¨aÐ& qÔ)Ð>Ð>Ð>rU   z+"): backtrack failed, resorting to original)NNNr‘   é   )rZ   r”   r•   Úscoreúword-idxzsentence-idxr“   rZ   rª   r©   Úwordc                 óN   — g | ]"}|                      d t          j        ¦  «        ‘Œ#S )r”   ©r¤   ÚnpÚnan©rP   Úws     rS   r¦   zalign.<locals>.<listcomp>o  s(   € Ð$TÐ$TÐ$TÀ Q§U¢U¨7µB´FÑ%;Ô%;Ð$TÐ$TÐ$TrU   c                 óN   — g | ]"}|                      d t          j        ¦  «        ‘Œ#S )r•   r­   r°   s     rS   r¦   zalign.<locals>.<listcomp>p  s(   € Ð"PÐ"PÐ"P¸A 1§5¢5¨µ´Ñ#7Ô#7Ð"PÐ"PÐ"PrU   )Úmethod)rŠ   r”   r•   r—   )rZ   r”   r•   r©   )ÚinplaceÚrecordsc                 óJ   — g | ] }d „ |                      ¦   «         D ¦   «         ‘Œ!S )c                 ó&   — i | ]\  }}|d k    ¯||“ŒS )rš   rM   )rP   ÚkeyÚvals      rS   rT   z$align.<locals>.<listcomp>.<dictcomp>ˆ  s#   € ÐRÐRÐR©H¨C°ÈÈrÊ	È	˜s CÈ	È	È	rU   )rp   )rP   rZ   s     rS   r¦   zalign.<locals>.<listcomp>ˆ  s0   € ÐjÐjÐjÐW[ÐRÐR¸¿
º
¹¼ÐRÑRÔRÐjÐjÐjrU   Úsum)rŠ   r—   Úfirst)Úas_indexr—   )ÚsegmentsÚword_segments)OÚtorchÚ	is_tensorÚ
isinstanceÚstrr   Ú
from_numpyÚlenÚshapeÚ	unsqueezer
   rj   rm   ÚlstripÚrstripÚLANGUAGES_WITHOUT_SPACESÚsplitrO   ÚreplaceÚkeysÚappendÚlistÚranger   r¤   Ú	nltk_loadÚLookupErrorÚnltkÚdownloadÚspan_tokenizera   ÚwarningÚjoinÚintÚ	as_tensorrh   r8   Ú
functionalÚpadÚinference_modeÚlogitsÚNotImplementedErrorÚlog_softmaxÚcpuÚdetachrp   ÚanyÚonesÚsizeÚboolÚmaxÚvaluesÚcatÚget_trellisÚ	backtrackÚmerge_repeatsÚindexÚroundr”   r•   r©   ÚpdÚ	DataFrameÚlocÚminÚuniqueÚtolistÚstripÚmeanr®   ÚisnanÚSeriesÚisnaÚnotnar   ÚilocÚfillnaÚto_dictÚgroupbyÚagg)Wr{   r|   r}   r~   rE   r   r€   r�   r‚   rƒ   ÚMAX_DURATIONÚ
model_langÚ
model_typeÚtotal_segmentsÚsegment_dataÚsdxÚsegmentÚbase_progressÚpercent_completeÚnum_leadingÚnum_trailingrŠ   Úper_wordr�   r‘   ÚcdxrZ   Úchar_r’   Ú
punkt_langÚsentence_splitterr“   Úaligned_segmentsÚt1Út2r–   Úaligned_segÚ
text_cleanÚf1Úf2Úwaveform_segmentr›   Ú	emissionsÚ_ÚemissionÚblank_idr[   Úhas_wildcardÚnon_blank_maskÚwildcard_colÚ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Ú_startsÚ_endsrQ   r±   Ú
subsegmentÚagg_dictr¾   r    r¥   sW                                                                                        @@rS   Úalignr:  u   s  øø€ õ  Œ?˜5Ñ!Ô!ð (Ý�e�SÑ!Ô!ð 	&Ý˜uÑ%Ô%ˆEÝÔ  Ñ'Ô'ˆÝ
ˆ5Œ;ÑÔ˜1ÒÐØ—’ Ñ"Ô"ˆà”;˜q”>¥KÑ/€Là+¨LÔ9ÐØ% jÔ1€JØ% fÔ-€Jõ ˜‘_”_€Nà+-€LÝ! *Ñ-Ô-ð 5
ñ 5
‰ˆˆWàð 	;Ø! A™g¨Ñ7¸3Ñ>ˆMØ;LÐ_  ]°QÑ%6Ñ 6Ð 6ÐR_ÐÝÐ9Ð/Ð9Ð9Ð9Ð9Ñ:Ô:Ð:å˜' &œ/Ñ*Ô*­S°¸´×1GÒ1GÑ1IÔ1IÑ-JÔ-JÑJˆÝ˜7 6œ?Ñ+Ô+­c°'¸&´/×2HÒ2HÑ2JÔ2JÑ.KÔ.KÑKˆØ�vŒˆð Õ5Ð5Ð5Ø—z’z #‘”ˆHˆHàˆHà " B�Iˆ
Ý" 4™œð 	&ð 	&‰IˆC�Ø—J’J‘L”LˆEàÕ!9Ð9Ð9ØŸš c¨3Ñ/Ô/�ð �[Ò Ð ØØ•s˜4‘y”y <Ñ/°!Ñ3Ò3Ð3ØØÐ*×/Ò/Ñ1Ô1Ð1Ð1Ø×!Ò! %Ñ(Ô(Ð(Ø× Ò  Ñ%Ô%Ð%Ð%Ø˜jÐ(Ð(à×!Ò! %Ñ(Ô(Ð(Ø× Ò  Ñ%Ô%Ð%øå��s 8™}œ}Ñ-Ô-Ñ.Ô.ˆ	õ %Ô(¨°YÑ?Ô?ˆ
ð	WÝ )Ð*UÀ*Ð*UÐ*UÐ*UÑ VÔ VÐÐøÝð 	Wð 	Wð 	WÝŒM˜+¨TÐ2Ñ2Ô2Ð2Ý )Ð*UÀ*Ð*UÐ*UÐ*UÑ VÔ VÐÐÐð	Wøøøõ Ð/×=Ò=¸dÑCÔCÑDÔDˆð %Ø"Ø"Ø,ð	
ð 
ˆ�SÑÑð 46Ðõ " *Ñ-Ô-ð K0ñ K0‰ˆˆWà�WÔˆØ�UŒ^ˆØ�vŒˆØ—k’k -Ñ0Ô0ˆð ØØØØð-
ð -
ˆð Ð"Ø)4ˆK˜Ñ&à!ð 	&Ø#%ˆK˜Ñ õ ˆ|˜CÔ  Ô.Ñ/Ô/°1Ò4Ð4Ý�NŠNð  \¸À¼ð  \ð  \ð  \ñ  ]ô  ]ð  ]Ø×#Ò# KÑ0Ô0Ð0Øà�ÒÐÝ�NŠNð  F¸À¼ð  Fð  Fð  Fñ  Gô  Gð  GØ×#Ò# KÑ0Ô0Ð0Øà—W’W˜\¨#Ô.¨|Ô<Ñ=Ô=ˆ
å�•kÑ!Ñ"Ô"ˆÝ�•kÑ!Ñ"Ô"ˆð !    B r E œ?ÐàÔ! "Ô%¨Ò+Ð+Ý”oÐ'7Ô'=¸bÔ'AÐ&BÑCÔC×FÒFÀvÑNÔNˆGÝ$œxÔ2×6Ò6Ø  1 cÐ,<Ô,BÀ2Ô,FÑ&FÐ"Gñ ô  ÐÐð ˆGåÔ!Ñ#Ô#ð 	=ð 	=Ø˜\Ò)Ð)Ø$˜uÐ%5×%8Ò%8¸Ñ%@Ô%@È'ÐRÑRÔR‘�	˜1˜1Ø˜}Ò,Ð,Ø!˜EÐ"2×"5Ò"5°fÑ"=Ô"=Ñ>Ô>ÔE�	�	å)Ð*\ÀÐ*\Ð*\Ð*\Ñ]Ô]Ð]ÝÔ)¨)¸Ð<Ñ<Ô<ˆIð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð ˜Q”<×#Ò#Ñ%Ô%×,Ò,Ñ.Ô.ˆàˆØ*×0Ò0Ñ2Ô2ð 	 ð 	 ‰JˆD�$Ø�wŠˆ $¨'¢/ /Ø�øõ ÐIÐIÐIÐI¸jÐIÑIÔIÑIÔIˆØð 		?å"œZ¨¯ª°aÑ(8Ô(8ÅÄ
ÐKÑKÔKˆNØ',ˆN˜8Ñ$Ø# A A A ~Ð$5Ô6×:Ò:¸qÐ:ÑAÔAÔHˆLÝ”y (¨L×,BÒ,BÀ1Ñ,EÔ,EÐ!FÈAÐNÑNÔNˆHØ"Ÿ-š-¨Ñ*Ô*¨QÑ.ˆKØOÐOÐOÐOÐOÀJÐOÑOÔOˆFˆFà>Ð>Ð>Ð>°:Ð>Ñ>Ô>ˆFå˜h¨°Ñ9Ô9ˆÝ˜ (¨F°HÑ=Ô=ˆàˆ<Ý�NŠNÐt¸À¼ÐtÐtÐtÑuÔuÐuØ×#Ò# KÑ0Ô0Ð0Ùå% d¨JÑ7Ô7ˆà˜‘7ˆØÐ+×0Ò0°Ñ3Ô3Ñ3°w·|²|ÀA±´ÈÑ7JÑKˆð ÐØˆÝ" 4™œð 	ð 	‰IˆC�Ø 0ÑˆE�3˜Ø�l 3Ô'¨Ô4Ð4Ð4Ø(¨°cÔ):¸;Ô)G×)MÒ)MÈcÑ)RÔ)RÔS�Ý˜hœn¨uÑ4°rÑ9¸1Ñ=Ô=�Ý˜HœL¨5Ñ0°2Ñ5°qÑ9Ô9�Ý˜hœn¨aÑ0Ô0�à×$Ò$à Ø"ØØ"Ø (ðð ñô ð ð Õ5Ð5Ð5Ø˜A‘��Ø�˜D™	œ	 A™Ò%Ð%¨¨c°!©e¬¸Ò);Ð);Ø˜A‘�øåœLÐ):Ñ;Ô;Ðà Ðà,0Ð˜.Ñ)Ý$-¨l¸3Ô.?Ð@PÔ.QÑ$RÔ$Rð ?	>ñ ?	>Ñ ˆD‘.�6˜4Ø*Ô.Ð0AÔ0GÈ6Ò0QÐVgÔVmÐquÒVuÑ/vÔwˆJð ~BÐÔ!Ð#4Ô#:¸fÒ#DÐIZÔI`ÐdhÒIhÑ"iÐkyÐ"yÑzà  ¨ Ô-ˆMØ'¨Ô0×4Ò4Ñ6Ô6ˆNØ" :¨fÔ#5¸Ò#<Ô=ˆIØ$ UÔ+×/Ò/Ñ1Ô1ˆLØˆNà& zÔ2×9Ò9Ñ;Ô;ð 4ñ 4�Ø'œ^¨J°zÔ,BÀhÒ,NÔO�
ØŸGšG J¨vÔ$6×$=Ò$=Ñ$?Ô$?Ñ@Ô@×FÒFÑHÔH�	Ý�y‘>”> QÒ&Ð&Øð (¨
°6Ô(:¸cÒ(AÔB�
à'¨Ô0×4Ò4Ñ6Ô6�
Ø% eÔ,×0Ò0Ñ2Ô2�Ý" :¨gÔ#6×#;Ò#;Ñ#=Ô#=¸qÑAÔA�
ð !'¨	Ð2�å”x 
Ñ+Ô+ð 7Ø,6�L Ñ)Ý”x Ñ)Ô)ð 3Ø*2�L Ñ'Ý”x 
Ñ+Ô+ð 7Ø,6�L Ñ)à×%Ò% lÑ3Ô3Ð3Ñ3ð ñ 
5Ýœ)Ð$TÐ$TÀ^Ð$TÑ$TÔ$TÑUÔU�Ýœ	Ð"PÐ"PÀÐ"PÑ"PÔ"PÑQÔQ�Ø—<’<‘>”>×%Ò%Ñ'Ô'ð 5¨G¯MªM©O¬O×,?Ò,?Ñ,AÔ,Að 5Ý.¨wÐ?QÐRÑRÔR�GÝ,¨UÐ;MÐNÑNÔN�EÝ )¨.Ñ 9Ô 9ð 5ð 5™˜˜1Ø"¨!Ð+Ð+µ´¸¼Àa¼Ñ0IÔ0IÐ+Ø)0¬°a¬˜A˜g™JØ ¨˜>˜>­b¬h°u´zÀ!´}Ñ.EÔ.E˜>Ø',¤z°!¤}˜A˜e™Høð &Ø'Ø#Ø'ð	ð ˆJð Ð&Ø,7�
˜=Ñ)Ø×&Ò& zÑ2Ô2Ð2à%ð >Ø'Ð(IÐ(IÐ(IÔJ�
Ø×!Ò! "¨dÐ!Ñ3Ô3Ð3Ø'×/Ò/°	Ñ:Ô:�
ØjÐjÐ_iÐjÑjÔj�
Ø3=Ð# BÔ'¨Ñ0ùå œlÐ+>Ñ?Ô?ÐÝ'7Ð8KÈGÔ8TÐ]oÐ'pÑ'pÔ'pÐ˜GÑ$Ý%5Ð6IÈ%Ô6PÐYkÐ%lÑ%lÔ%lÐ˜EÑ"àœH¨uÐ5Ð5ˆØÕ1Ð1Ð1Ø!œwˆH�VÑØ!ð 	&Ø %ˆH�WÑØÐ"Ø&-ˆH�]Ñ#Ø0×8Ò8¸'À5Ð9IÐTYÐ8ÑZÔZ×^Ò^Ð_gÑhÔhÐØ1×9Ò9¸)ÑDÔDÐØÐ(ØÐ  a¡¨>Ñ9¸SÑ@ÑAÔAÐAàÐ/Ñ/ÐÑð .0€MØ#ð *ð *ˆØ˜ Ô)Ñ)ˆˆà(¸=ÐIÐIÐIs%   Ê:KË3LÌLÔA>VÖV"	Ö%V"	c                 óð  — |                       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 ]K}t          j        ||dd …f         | ||f         z   ||d d…f         | ||f         z   ¦  «        ||dz   dd …f<   ŒL|S )Nr   r†   ©r   r   Úinfrš   )rã   rÄ   r¿   ÚemptyÚcumsumÚfloatrÏ   Úmaximum)r  r  r  Ú	num_frameÚ
num_tokensr  Úts          rS   rè   rè   ©  s"  € Ø—’˜aÑ Ô €IÝ�V‘”€Jõ
 Œk˜9 q™=¨*°q©.Ð9Ñ:Ô:€GØ€GˆD�MÝ”\ (¨1¨1¨1¨h¨;Ô"7¸Ñ;Ô;€GˆAˆBˆB�ˆE�NÝ % e¡¤˜}€GˆA�
ˆ{ˆ|ˆ|ˆOÑÝ$ U™|œ|€GˆZˆKˆLˆL˜!ˆOÑå�9ÑÔð 
ð 
ˆÝ"œ]à�A�q�r�r�EŒN˜X a¨ kÔ2Ñ2à�A�s˜�s�FŒO˜h q¨& yÔ1Ñ1ñ	
ô 
ˆ��A‘�q�r�r�	ÑÐð €NrU   c                   ó.   — e Zd ZU eed<   eed<   eed<   dS )ÚPointÚtoken_indexÚ
time_indexr©   N)Ú__name__Ú
__module__Ú__qualname__r×   Ú__annotations__r@  rM   rU   rS   rF  rF  À  s.   € € € € € € àÐÐÑØ€O€O�OØ€L€L�L€L€LrU   rF  c                 óZ  — |                       d¦  «        dz
  }t          j        | d d …|f         ¦  «                             ¦   «         }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
  |	|k    r||dz
           n|f                              ¦   «                              ¦   «         }
|                     t          |dz
  |dz
  |
¦  «        ¦  «         |	|k    r|dz  }|dk    r nŒÄd S |d d d…         S )Nr†   r   rš   )rã   r¿   ÚargmaxÚitemrÏ   ÚexprÍ   rF  )r  r  r  r  ÚjÚt_startr  rD  ÚstayedÚchangedÚprobs              rS   ré   ré   Ç  s[  € ð 	�Š�Q‰Œ˜!Ñ€AÝŒl˜7 1 1 1 a 4œ=Ñ)Ô)×.Ò.Ñ0Ô0€Gà€DÝ�7˜A˜rÑ"Ô"ð ð ˆð
 ˜˜Q™ ˜Ô" X¨a°!©e°X¨oÔ%>Ñ>ˆà˜!˜a™%  Q¡˜,Ô'¨(°1°q±5¸&ÀÀQÁ¼-Ð3GÔ*HÑHˆð ˜˜A™°¸&Ò0@Ð0@˜v a¨!¡eœ}˜}ÀhÐNÔO×SÒSÑUÔU×ZÒZÑ\Ô\ˆà�Š•E˜!˜a™%  Q¡¨Ñ-Ô-Ñ.Ô.Ð.ð �VÒÐØ�‰FˆAØ�AŠvˆvØ�øð ˆtà���"�Œ:ÐrU   c                   óT   — e Zd ZU eed<   eed<   eed<   eed<   d„ Zed„ ¦   «         Z	dS )ÚSegmentÚlabelr”   r•   r©   c                 óL   — | j         › d| j        d›d| j        d›d| j        d›d�S )Nz	(z4.2fz): [Ú5dz, ú))rX  r©   r”   r•   ©Úselfs    rS   Ú__repr__zSegment.__repr__õ  s:   € Ø”*ÐUÐU ¤ÐUÐUÐU°d´jÐUÐUÐUÀtÄxÐUÐUÐUÐUÐUrU   c                 ó    — | j         | j        z
  S rž   )r•   r”   r\  s    rS   ÚlengthzSegment.lengthø  s   € àŒx˜$œ*Ñ$Ð$rU   N)
rI  rJ  rK  rÂ   rL  r×   r@  r^  Úpropertyr`  rM   rU   rS   rW  rW  î  sg   € € € € € € à€J€J�JØ€J€J�JØ	€H€H�HØ€L€L�LðVð Vð Vð ð%ð %ñ „Xð%ð %ð %rU   rW  c           	      ó.  ‡ — d\  }}g }|t          ‰ ¦  «        k     rù|t          ‰ ¦  «        k     rP‰ |         j        ‰ |         j        k    r4|dz  }|t          ‰ ¦  «        k     r‰ |         j        ‰ |         j        k    °4t          ˆ fd„t          ||¦  «        D ¦   «         ¦  «        ||z
  z  }|                     t          |‰ |         j                 ‰ |         j        ‰ |dz
           j        dz   |¦  «        ¦  «         |}|t          ‰ ¦  «        k     °ù|S )Nr<  r†   c              3   ó2   •K  — | ]}‰|         j         V — Œd S rž   )r©   )rP   Úkr  s     €rS   r¡   z merge_repeats.<locals>.<genexpr>  s)   øè è € Ð9Ð9 a�D˜”G”MÐ9Ð9Ð9Ð9Ð9Ð9rU   )rÄ   rG  rº   rÏ   rÍ   rW  rH  )r  r{   Úi1Úi2r½   r©   s   `     rS   rê   rê   ü  s  ø€ Ø�F€BˆØ€HØ
�s�4‰yŒyŠ.ˆ.Ø•3�t‘9”9Šnˆn  b¤Ô!5¸¸b¼Ô9MÒ!MÐ!MØ�!‰GˆBð •3�t‘9”9Šnˆn  b¤Ô!5¸¸b¼Ô9MÒ!MÐ!MåÐ9Ð9Ð9Ð9­5°°R©=¬=Ð9Ñ9Ô9Ñ9Ô9¸RÀ"¹WÑEˆØ�ŠÝØ˜4 œ8Ô/Ô0Ø�R”Ô#Ø�R˜!‘V”Ô'¨!Ñ+Øñ	ô ñ	
ô 	
ð 	
ð ˆð �s�4‰yŒyŠ.ˆ.ð €OrU   rŒ   c           	      ó  — g }d\  }}|t          | ¦  «        k     rä|t          | ¦  «        k    s| |         j        |k    r¨||k    rš| ||…         }d                     d„ |D ¦   «         ¦  «        }t          d„ |D ¦   «         ¦  «        t          d„ |D ¦   «         ¦  «        z  }|                     t          || |         j        | |dz
           j        |¦  «        ¦  «         |dz   }|}n|dz  }|t          | ¦  «        k     °ä|S )Nr<  r™   c                 ó   — g | ]	}|j         ‘Œ
S rM   )rX  ©rP   Úsegs     rS   r¦   zmerge_words.<locals>.<listcomp>  s   € Ð:Ð:Ð:¨c ¤	Ð:Ð:Ð:rU   c              3   ó4   K  — | ]}|j         |j        z  V — Œd S rž   )r©   r`  ri  s     rS   r¡   zmerge_words.<locals>.<genexpr>  s+   è è € ÐCÐC°s˜CœI¨¬
Ñ2ÐCÐCÐCÐCÐCÐCrU   c              3   ó$   K  — | ]}|j         V — Œd S rž   )r`  ri  s     rS   r¡   zmerge_words.<locals>.<genexpr>  s%   è è € ÐIeÐIeÐY\È#Ì*ÐIeÐIeÐIeÐIeÐIeÐIerU   r†   )rÄ   rX  rÖ   rº   rÍ   rW  r”   r•   )r½   Ú	separatorr—   re  rf  Úsegsr«   r©   s           rS   Úmerge_wordsro    s  € Ø€EØ�F€BˆØ
�s�8‰}Œ}Ò
Ð
Ø•�X‘”ÒÐ (¨2¤,Ô"4¸	Ò"AÐ"AØ�RŠxˆxØ  2 ”�Ø—w’wÐ:Ð:°TÐ:Ñ:Ô:Ñ;Ô;�ÝÐCÐC¸dÐCÑCÔCÑCÔCÅcÐIeÐIeÐ`dÐIeÑIeÔIeÑFeÔFeÑe�Ø—’�W T¨8°B¬<Ô+=¸xÈÈQÉÔ?OÔ?SÐUZÑ[Ô[Ñ\Ô\Ð\Ø�a‘ˆBØˆBˆBà�!‰GˆBð �s�8‰}Œ}Ò
Ð
ð €LrU   )NNF)rz   FFFN)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   rI  ra   rÉ   r_   r`   rÂ   rä   ry   r8   ÚModuleÚdictÚndarrayÚTensorr:  rè   rF  ré   rW  rê   ro  rM   rU   rS   ú<module>r     s&  ððð ð "Ð !Ð !Ð !Ð !Ð !Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :à 2Ð 2Ð 2Ð 2Ð 2Ð 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Ø˜Ô'ðmJàŒ8Œ?ðmJð ðmJð ��b”j %¤,Ð.Ô/ð	mJð
 ðmJð ðmJð !ðmJð ðmJð ðmJð (ðmJð  ðmJð mJð mJð mJð^	ð
ð ð ð ð. ðð ð ð ð ñ ô ñ „ðð#ð #ð #ð #ðN ð%ð %ð %ð %ð %ñ %ô %ñ „ð%ðð ð ð$ð ð ð ð ð rU   