
    GJj/"                        d dl mZ d dlZe G d d             Ze G d d             Ze G d d             Ze G d	 d
             Z e       fdee   dedee   fdZ	dee   defdZ
dee   dee   defdZdee   dee   defdZy)    )	dataclassNc                   Z    e Zd ZU eed<   eed<   eed<   eed<   dZeed<   dZeed<   dd
Z	y	)AlignedTokenidtextstartduration      ?
confidence        endNc                 @    | j                   | j                  z   | _        y N)r   r	   r   selfs    `/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/parakeet_mlx/alignment.py__post_init__zAlignedToken.__post_init__   s    ::-    returnN)
__name__
__module____qualname__int__annotations__strfloatr   r   r    r   r   r   r      s/    G
ILOJC.r   r   c                   h    e Zd ZU eed<   ee   ed<   dZeed<   dZ	eed<   dZ
eed<   dZeed<   dd
Zy	)AlignedSentencer   tokensr   r   r   r	   r
   r   Nc           
         t        t        | j                  d             | _        | j                  d   j                  | _        | j                  d   j                  | _        | j                  | j                  z
  | _        t        j                  | j                  D cg c]  }|j                   c}      }t        t        j                  t        j                  t        j                  |dz                           | _        y c c}w )Nc                     | j                   S r   )r   )xs    r   <lambda>z/AlignedSentence.__post_init__.<locals>.<lambda>   s    QWWr   )keyr   g|=)listsortedr!   r   r   r	   nparrayr   r   expmeanlog)r   tconfidencess      r   r   zAlignedSentence.__post_init__   s    6$++3DEF[[^))
;;r?&&4::-hhdkkBkkBCrwwrvvkE6I/J'K LM  Cs   Dr   )r   r   r   r   r   r(   r   r   r   r   r	   r   r   r   r   r   r    r       s@    
IE5CHeJNr   r    c                   L    e Zd ZU eed<   ee   ed<   ddZedee	   fd       Z
y)AlignedResultr   	sentencesr   Nc                 B    | j                   j                         | _         y r   )r   stripr   s    r   r   zAlignedResult.__post_init__+   s    IIOO%	r   c                 h    | j                   D cg c]  }|j                  D ]  }|  c}}S c c}}w r   )r3   r!   )r   sentencetokens      r   r!   zAlignedResult.tokens.   s*    &*nnRn((///nRRRs   .r   )r   r   r   r   r   r(   r    r   propertyr   r!   r   r   r   r2   r2   &   s:    
IO$$& S\* S Sr   r2   c                   J    e Zd ZU dZedz  ed<   dZedz  ed<   dZedz  ed<   y)SentenceConfigN	max_wordssilence_gapmax_duration)	r   r   r   r<   r   r   r=   r   r>   r   r   r   r;   r;   3   s,     IsTz  $K$!%L%$,%r   r;   r!   configr   c                 X   g }g }t        |       D ]  \  }}|j                  |       d|j                  v xsw d|j                  v xsg d|j                  v xsW d|j                  v xsG d|j                  v xs7 d|j                  v xr' |t        |       dz
  k(  xs d| |dz      j                  v }|j                  d uxra |t        |       dz
  k7  xrN t        |D cg c]  }d|j                  v s| c}      d| |dz      j                  v rdnd	z   |j                  kD  }|j
                  d uxr? |t        |       dz
  k7  xr, | |dz      j                  |j                  z
  |j
                  k\  }	|j                  d uxr) |j                  |d	   j                  z
  |j                  k\  }
|s|s|	s|
sd
j                  d |D              }t        ||      }|j                  |       g } |r6d
j                  d |D              }t        ||      }|j                  |       |S c c}w )N!?u   。u   ？u   ！.    r    c              3   4   K   | ]  }|j                     y wr   r   .0r/   s     r   	<genexpr>z&tokens_to_sentences.<locals>.<genexpr>b   s     #CNqAFFN   )r   r!   c              3   4   K   | ]  }|j                     y wr   rH   rI   s     r   rK   z&tokens_to_sentences.<locals>.<genexpr>i   s     ?1rL   )	enumerateappendr   lenr<   r=   r   r   r>   joinr    )r!   r?   r3   current_tokensidxr8   is_punctuationr$   is_word_limitis_long_silenceis_over_durationsentence_textr7   s                r   tokens_to_sentencesrY   :   s\    I)+N'
Ue$ 5:: ejj 

" 

" 

"	 uzz! LCK!O+JsfS1Wo6J6J/J 	 T) Fa' @1#-Q@AvcAg3331<""#	 	 t+ JFa'Ja&&2f6H6HH 	
 #//t; 
IIq)///63F3FF 	 ]oAQGG#CN#CCM&M.QHX&NM (P ???"nM"5 As   H'
/H'
r3   c                 F    t        dj                  d | D              |       S )NrF   c              3   4   K   | ]  }|j                     y wr   rH   )rJ   r7   s     r   rK   z&sentences_to_result.<locals>.<genexpr>q   s      Iy8yrL   )r2   rQ   )r3   s    r   sentences_to_resultr\   p   s     Iy II9UUr   aboverlap_durationc                   | r|s| s|S | S | d   j                   }|d   j                  }||k  r| |z   S | D cg c]  }|j                   ||z
  kD  s| }}|D cg c]  }|j                  ||z   k  s| }}t        |      dz  }t        |      dk  st        |      dk  rI||z   dz  }	| D 
cg c]  }
|
j                   |	k  s|
 c}
|D 
cg c]  }
|
j                  |	k\  s|
 c}
z   S g }t        t        |            D ]~  }t        t        |            D ]c  }||   j                  ||   j                  k(  s$t        ||   j                  ||   j                  z
        |dz  k  sSg }||}}|t        |      k  r|t        |      k  r||   j                  ||   j                  k(  rt        ||   j                  ||   j                  z
        |dz  k  r|j                  ||f       |dz  }|dz  }|t        |      k  r\|t        |      k  rN||   j                  ||   j                  k(  r/t        ||   j                  ||   j                  z
        |dz  k  rt        |      t        |      kD  sb|}f  t        |      |k\  rt        |       t        |      z
  }|D cg c]
  }||d   z    }}|D cg c]  }|d   	 }}g }|j                  | d |d           t        t        |            D ]  }||   }||   }|j                  | |          |t        |      dz
  k  s3||dz      }||dz      }| |dz   | }||dz   | }t        |      t        |      kD  r|j                  |       ||j                  |        |j                  ||d   dz   d         |S t        d|       c c}w c c}w c c}
w c c}
w c c}w c c}w )Nr'   r      rD   zNo pairs exceeding )	r   r   rP   ranger   absrO   extendRuntimeError)r]   r^   r_   
a_end_timeb_start_timer8   	overlap_a	overlap_benough_pairscutoff_timer/   best_contiguousijcurrentkla_start_idxpairlcs_indices_alcs_indices_bresultidx_aidx_b
next_idx_a
next_idx_bgap_tokens_agap_tokens_bs                               r   merge_longest_contiguousr}   t   s    Aq q 2JQ4::L\!1u$%UA5\DT5T)TAIU$%UA5zDT7T)TAIUy>Q&L
9~S^a/!L0A551a 4159
!AGG{2Aq9
 
 	
 O3y>"s9~&A!9Q<??2	!**Yq\-?-??@CSVWCWW!1I&C	N*!!9Q<??:IaL..11C1CCD&*+ NNAq6*FAFA I&C	N*!!9Q<??:IaL..11C1CCD&*+ w<#o"66&-O' ' #, ?|+!fs9~-;JK?4tAw.?K-<=_Ta_=a*-*+,s?+,A!!$E!!$EMM!E(#3'!++*1q51
*1q51
 Z8 Z8|$s<'88MM,/MM,/! -$ 	ab)A-/010?@@ VU 6 9
: L=s;   N5N5N:1N:-N?N?O!O,O	Oc                   | r|s| s|S | S | d   j                   }|d   j                  }||k  r| |z   S | D cg c]  }|j                   ||z
  kD  s| }}|D cg c]  }|j                  ||z   k  s| }}t        |      dk  st        |      dk  rI||z   dz  }| D 	cg c]  }	|	j                   |k  s|	 c}	|D 	cg c]  }	|	j                  |k\  s|	 c}	z   S t        t        |      dz         D 
cg c]'  }
t        t        |      dz         D 
cg c]  }
d c}
) }}
t        dt        |      dz         D ]  }t        dt        |      dz         D ]  }||dz
     j                  ||dz
     j                  k(  rLt        ||dz
     j                  ||dz
     j                  z
        |dz  k  r||dz
     |dz
     dz   ||   |<   tt        ||dz
     |   ||   |dz
           ||   |<     g }t        |      t        |      }}|dkD  r|dkD  r||dz
     j                  ||dz
     j                  k(  rXt        ||dz
     j                  ||dz
     j                  z
        |dz  k  r$|j                  |dz
  |dz
  f       |dz  }|dz  }n"||dz
     |   ||   |dz
     kD  r|dz  }n|dz  }|dkD  r|dkD  r|j                          |sI||z   dz  }| D 	cg c]  }	|	j                   |k  s|	 c}	|D 	cg c]  }	|	j                  |k\  s|	 c}	z   S t        |       t        |      z
  }|D cg c]
  }||d   z    }}|D cg c]  }|d   	 }}g }|j                  | d |d           t        t        |            D ]  }||   }||   }|j                  | |          |t        |      dz
  k  s3||dz      }||dz      }| |dz   | }||dz   | }t        |      t        |      kD  r|j                  |       ||j                  |        |j                  ||d   dz   d         |S c c}w c c}w c c}	w c c}	w c c}
w c c}
w c c}	w c c}	w c c}w c c}w )Nr'   r   ra   rD   )
r   r   rP   rb   r   rc   maxrO   reverserd   )r]   r^   r_   rf   rg   r8   rh   ri   rk   r/   _dprm   rn   	lcs_pairsrr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   s                             r    merge_longest_common_subsequencer      s    Aq q 2JQ4::L\!1u$%UA5\DT5T)TAIU$%UA5zDT7T)TAIU
9~S^a/!L0A551a 4159
!AGG{2Aq9
 
 	
 ;@IQR@R:S	T:SQeC	NQ./
0/1/
0:SB	T1c)nq()q#i.1,-A!a% ##yQ'7':'::	!a%(..1q51A1G1GGH"Q&' a!e9QU+a/1ar!a%y|RU1q5\:1a . * Iy>3y>qA
a%AEa!e9QU#3#6#66Ia!e$**Yq1u-=-C-CCD"# a!eQU^,FAFAAYq\BqE!a%L(FAFA a%AE !L0A551a 4159
!AGG{2Aq9
 
 	
 a&3y>)K7@Ayt[47*yMA)23T!WM3F
MM!&mA&'(3y>"a a ahs9~!!&q1u-J&q1u-JUQY4LUQY4L< 3|#44l+l+! #$ MM!M"%)+,-MW VU 6 9
 1	TD 6 9

 B3sk   P/P/P41P4P94P9>P>P>5Q	Q
QQ1Q;QQ4Q	QQ)dataclassesr   numpyr*   r   r    r2   r;   r(   rY   r\   r   r}   r   r   r   r   <module>r      s    !  	. 	. 	. N N N$ 	S 	S 	S & & & :H9I33(63	/3lV4#8 V] VNALNALNA 	NAbZLZLZ 	Zr   