
    sh1                     t   S SK r S SKrS SKrS SKJr  S SKJrJr  S SKrS SK	r
S SKrS SKJs  Jr  SSKJrJrJr  SSKJr  \(       a  SSKJr  S\R0                  S	\4S
 jr\R6                  " SS9S\
R8                  4S j5       r\R6                  " SSS9S\
R8                  4S j5       rS.S jrS\R0                  S\
R8                  4S jr \ " S S5      5       r!SSS.SSS\S\\   S\R0                  S\S\S \"S\\!   4S! jjr#S"\\!   S#\$S$\$4S% jr%S&S'S(.S)\\&   SSS\S\R0                  S\S*\$S+\$S,\"4S- jjr'g)/    N)	dataclass)TYPE_CHECKINGList   )
HOP_LENGTHSAMPLE_RATETOKENS_PER_SECOND)	Tokenizer)Whisperxfilter_widthc                     US-  nU R                   S   U::  a  U $ U R                  =nS::  a
  U SSSS24   n US:  a	  US-  S:X  d   S5       eSn[        R                  " XS-  US-  SS4SS9n U R                  (       a   SS	KJn  U" X5      nUc,  U R                  SUS5      R                  5       S   SUS-  4   nUS::  a  US   nU$ ! [        [        R                  4 a    [        R                  " S
5         Nnf = f)zMApply a median filter of width `filter_width` along the last dimension of `x`   Nr   r   z&`filter_width` should be an odd numberreflect)mode)median_filter_cudaz}Failed to launch Triton kernels, likely due to missing CUDA toolkit; falling back to a slower median kernel implementation....r   r   )shapendimFpadis_cuda
triton_opsr   RuntimeError
subprocessCalledProcessErrorwarningswarnunfoldsort)r   r   	pad_widthr   resultr   s         b/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/whisper/timing.pymedian_filterr%      s#   !Iwwr{i1dD!m 	q\A-20/02 F	a!#\Q%61=INAyy	6'8F ~"lA.335a8la>O9OPqyM j;;< 	MMK	s    C
 
0C=<C=T)nopythontracec                    U R                   S   S-
  nU R                   S   S-
  nSU SS S 24'   SU S S 2S4'   / nUS:  d  US:  ai  UR                  US-
  US-
  45        XU4   S:X  a  US-  nUS-  nO+XU4   S:X  a  US-  nOXU4   S:X  a  US-  nO[        S5      eUS:  a  Ma  US:  a  Mi  [        R                  " U5      nUS S S2S S 24   R
                  $ )Nr   r   r   zUnexpected trace[i, j]r   )r   append
ValueErrornparrayT)r'   ijr#   s       r$   	backtracer0   9   s    AAAAE!Q$KE!Q$KF
a%1q5q1ua!en%A;!FAFAa4[AFAa4[AFA566 a%1q5 XXfF$B$'?    )r&   parallelc                    U R                   u  p[        R                  " US-   US-   4[        R                  S9[        R                  -  n[        R                  " US-   US-   4[        R                  S9* nSUS'   [        SUS-   5       Hn  n[        SUS-   5       HX  nX6S-
  US-
  4   nX6S-
  U4   nX6US-
  4   n	Xx:  a	  Xy:  a  USpOX:  a	  X:  a  USpOU	SpXS-
  US-
  4   U
-   X6U4'   XXe4'   MZ     Mp     [        U5      $ )Nr   dtyper   r   r   )r   r+   onesfloat32infranger0   )r   NMcostr'   r/   r.   c0c1c2cts               r$   dtw_cpurB   R   s   77DA77AE1q5>4rvv=DWWa!eQU^2::66EDJ1a!e_q!a%A!eQUl#B!eQhBQhBw2711RW1111q5!a%<1,DAJ!$K !   Ur1   c                 h   SSK Jn  U R                  u  p4X1:  d   SU< 35       e[        R                  " U SUS-   4[
        R                  S9R                  5       S X4U-   -   R                  X4U-   5      nUR                  R                  5       n[        R                  " XC-   S-   US-   5      [
        R                  -  nSUS'   UR                  U R                  5      n[        R                  " U[        R                   S9nUS	   " UUUUR#                  S5      UR#                  S5      UR#                  S5      UUUS
9	  UR                  R                  5       S US-   X4-   S-   -   R                  US-   X4-   S-   5      S S 2S US-   24   n[%        UR'                  5       R)                  5       5      $ )Nr   )
dtw_kernelz$M should be smaller than BLOCK_SIZE=r   )valuer   r   r4   )r   )
BLOCK_SIZE   )r   rD   r   r   r   r+   r8   flattenreshaper-   
contiguoustorchr6   todevice
zeros_likeint32strider0   cpunumpy)r   rF   rD   r;   r:   x_skewr<   r'   s           r$   dtw_cudarT   l   s   &77DA>DBzmDD> 	
a!QU266*224]qE{CKKASTuU  XX  "F::aeaiQ'"&&0DDJ77188DT5EtaAQ		
 GGOO5Q1519 56>>q1uaeaiP	7QU7
E UYY[&&())r1   returnc                    U R                   (       a   [        U 5      $ [        U R                  5       R                  5       R                  5       5      $ ! [        [        R                  4 a    [
        R                  " S5         Ngf = f)NzsFailed to launch Triton kernels, likely due to missing CUDA toolkit; falling back to a slower DTW implementation...)r   rT   r   r   r   r   r   rB   doublerQ   rR   )r   s    r$   dtwrX      si    yy	A; 188:>>#))+,, j;;< 	MMA	s   
A 0BBc                   N    \ rS rSr% \\S'   \\   \S'   \\S'   \\S'   \\S'   Sr	g)	
WordTiming   wordtokensstartendprobability N)
__name__
__module____qualname____firstlineno__str__annotations__r   intfloat__static_attributes__ra   r1   r$   rZ   rZ      s!    
IIL	Jr1   rZ      g      ?)medfilt_widthqk_scalemodelr   	tokenizertext_tokensmel
num_framesrl   rm   c                D  ^' [        U5      S:X  a  / $ [        R                  " / UR                  QUR                  PUQUR
                  P5      R                  U R                  5      nS /U R                  R                  -  m'[        U R                  R                  5       VV	s/ s H'  u  pU	R                  R                  U4U'4S jj5      PM)     n
nn	SSKJn  [        R"                  " 5          U" 5          U " UR%                  S5      UR%                  S5      5      S   nU[        UR                  5      S 2S UR
                  24   nUR'                  SS9nU[(        R*                  " [        U5      5      U4   nUR-                  5       nS S S 5        S S S 5        U
 H  nUR/                  5         M     [        R0                  " U R2                  R5                  5       R6                   VVs/ s H  u  nnT'U   U   PM     snn5      nUS S 2S S 2S US-  24   nUU-  R'                  SS9n[        R8                  " USS	S
S9u  nnUU-
  U-  n[;        UU5      nUR=                  SS9nU[        UR                  5      S n[?        U* 5      u  nnURA                  X!R
                  /-   5      u  nn[        U5      S::  a  / $ [(        RB                  " [(        RD                  " US S  Vs/ s H  n[        U5      PM     sn5      S5      n[(        RB                  " [(        RF                  " U5      SSS9RI                  [J        5      nUU   [L        -  nUUS S    nUUSS     n [O        US S USS  5       VV!s/ s H  u  nn![(        R<                  " WUU! 5      PM!     n"nn![O        UUUU U"5       V#VV$V%V&s/ s H  u  n#nn$n%n&[Q        U#UU$U%U&5      PM     sn&n%n$nn#$ s  sn	nf ! , (       d  f       GN]= f! , (       d  f       GNg= fs  snnf s  snf s  sn!nf s  sn&n%n$nn#f )Nr   c                 2   > TR                  X2S   S   5      $ )Nr   r   )__setitem__)_insoutsindexQKss       r$   <lambda> find_alignment.<locals>.<lambda>   s    #//%b!*Mr1   r   )disable_sdpar   )dimr   TF)r~   keepdimunbiased)axis)r   r   )constant_values))lenrK   tensorsot_sequenceno_timestampseotrL   rM   dimsn_text_layer	enumeratedecoderblocks
cross_attnregister_forward_hookrn   r}   no_grad	unsqueezesoftmaxr+   arangetolistremovestackalignment_headsindicesr-   std_meanr%   meanrX   split_to_word_tokensr   cumsumdiffastypeboolr	   ziprZ   )(rn   ro   rp   rq   rr   rl   rm   r]   r.   blockhooksr}   logitssampled_logitstoken_probstext_token_probshook_l_hweightsstdr   matrixtext_indicestime_indiceswordsword_tokensrA   word_boundariesjumps
jump_timesstart_times	end_timesr/   word_probabilitiesr\   r^   r_   r`   rz   s(                                          @r$   find_alignmentr      s    ;1	\\	
##	
##	
 	
 MM		
 	b  &5::**
*C
 "%--"6"67	 8HA 	..'(M	
 8	 
  $	,.s}}Q')9)9!)<=a@I$:$: ; = NO$,,,4&ryy[1A'BK'OP+224 )   kkU5J5J5R5R5T5V5VW5V62r3r72;5VWXGa-jAo--.G!**r*2GwBuMIC~$GG]3G\\q\!FC	../"5F!$fWL,"77}}o8UVE;
;1 	ffRYYCR8H'I8H1A8H'IJFSOFF277<(&!DKKDQEe$'88J_Sb12K?12./I ,oab.ABBDAq 	 1%&B   69;Y8J6
6
1D&%k 	4[96
 e ). X& (J
sC   $.O0O68BO$O6.P
+P:&P8P$
O3	.O66
P	alignment	prependedappendedc                    [        U 5      S-
  n[        U 5      S-
  nUS:  a  X   nX   nUR                  R                  S5      (       ai  UR                  R                  5       U;   aK  UR                  UR                  -   Ul        UR                  UR                  -   Ul        SUl        / Ul        OUnUS-  nUS:  a  M  SnSnU[        U 5      :  a  X   nX   nUR                  R                  S5      (       d[  UR                  U;   aK  UR                  UR                  -   Ul        UR                  UR                  -   Ul        SUl        / Ul        OUnUS-  nU[        U 5      :  a  M  g g )Nr   r   r     )r   r\   
startswithstripr]   endswith)r   r   r   r.   r/   previous	followings          r$   merge_punctuationsr      sG   IAIA
q&<L	==##C((X]]-@-@-Bi-O%]]Y^^;IN'1A1AAIHM HOA	Q q& 	
A	A
c)n
<L	}}%%c**y~~/I$MMINN:HM&oo	0@0@@HOIN!IA	Q c)n
r1   u   "'“¿([{-u   "'.。,，!！?？:：”)]}、)prepend_punctuationsappend_punctuationssegmentsr   r   last_speech_timestampc                    [        U 5      S:X  a  g U  V	V
s/ s H*  n	U	S    V
s/ s H  oUR                  :  d  M  U
PM     sn
PM,     nn	n
[        [        R                  R                  U5      5      n[        XXU40 UD6n[        R                  " U Vs/ s H  oR                  UR                  -
  PM     sn5      nXR                  5          n[        U5      S:  a  [        R                  " U5      OSn[        S[        U5      5      nUS-  n[        U5      S:  a  Sn[        S[        U5      5       H  nUU   R                  UU   R                  -
  U:  d  M(  UU   R                   U;   a  UU   R                  U-   UU   l	        MW  UUS-
     R                   U;   d  Mo  UU   R                  U-
  UU   l
        M     [#        XU5        U S   S   [$        -  [&        -  nSn[)        X5       GHM  u  pSn/ nU[        U5      :  a  U[        U5      :  a  UU   nUR                   (       a]  UR+                  [-        UR                   [/        UUR                  -   S5      [/        UUR                  -   S5      UR0                  S	95        U[        UR2                  5      -  nUS-  nU[        U5      :  a  U[        U5      :  a  M  [        U5      S:  Ga`  US   S
   U-
  US-  :  a  US   S
   US   S   -
  U:  d'  [        U5      S:  a  US   S
   US   S   -
  US-  :  am  [        U5      S:  aC  US   S
   US   S   -
  U:  a.  [5        US   S
   S-  US   S
   U-
  5      nU=US   S
'   US   S'   [5        SUS   S
   U-
  5      US   S'   U	S   US   S
   :  a;  U	S   S-
  US   S   :  a)  [5        S[        US   S
   U-
  U	S   5      5      US   S'   OUS   S   U	S'   U	S
   US   S   :  a1  U	S
   S-   US   S
   :  a  [5        US   S   U-   U	S
   5      US   S
'   OUS   S
   U	S
'   U	S
   nUU	S'   GMP     g s  sn
f s  sn
n	f s  snf )Nr   r]   g        gffffff?r   u   .。!！?？r   seek)r\   r^   r_   r`   r_      r^   g      ?r   r   )r   r   list	itertoolschainfrom_iterabler   r+   r,   r_   r^   nonzeromedianminri   r9   r\   r   r   r   r   r)   dictroundr`   r]   max)r   rn   ro   rq   rr   r   r   r   kwargssegmenttokentext_tokens_per_segmentrp   r   rA   word_durationsmedian_durationmax_durationsentence_end_marksr.   time_offset
word_indexsaved_tokensr   timingboundarys                             r$   add_word_timestampsr     s    8}  G $H-G-51F-G  
 y445LMNKu:XQWXIXX	B	1uuqww	BCN#$:$:$<=N36~3F3Jbii/PSO#u_56O"Q&L >Q+q#i.)A|)A,"4"44|CQ<$$(::'0|'9'9L'HIaL$q1u%**.@@)21)9)9L)HIaL& * y8KL1+f%
2[@KJ #H F3y>)lS=M.Mz*F{{#[[#K&,,$>B!+

":A>$*$6$6	 C..L!OJ 3y>)lS=M.M$ u:> Qx!6619LLa%(7"33lBJNa%(7*;;lQ>NN JNa%(7*;;lJ"58E?Q#6a,8VWH:BBE!HUOeAhw&7$'58E?\+I$Ja!  58E?2G$s*U1Xg->>$'s58E?_<gg>NO%a! $)8G#4  r7!33ENS(59U+;;#&"Ig&8'%.$b	%  "'r5!1$+EN! A !G; 	H Cs!   Q
QQ Q
"QQ
)i   )(r   r   r   dataclassesr   typingr   r   numbarR   r+   rK   torch.nn.functionalnn
functionalr   audior   r   r	   ro   r
   rn   r   Tensorrh   r%   jitndarrayr0   rB   rT   rX   rZ   ri   r   rf   r   r   r   ra   r1   r$   <module>r      s      ! &      = =  #U\\ # #L DRZZ  0 D4(rzz  )2*B
-5<< 
-BJJ 
-    OOO cO 
	O
 O O O 
*Od$z"2 s c R !/Am!4jm! m! 	m!
 
m! m! m! m! !m!r1   