o
    i)                     @   sd   d dl Z d dlZd dlZd dlZd dlZd dlmZ dd Z	dd	d
Z		dddZ
	dddZdS )    N)zip_longestc           
   	   C   s   |   \}}tj|g| jd}g }t|D ])}| d d |f }||7 }|| ||k}t||tj|g| jd|  |}qt|d}	|	S )N)device   )	sizetorchzerosr   rangeappendwhereonesstack)
alphas	threshold
batch_sizelen_time	integrate
list_firestalpha
fire_placefires r   P/home/ubuntu/.local/lib/python3.10/site-packages/funasr/utils/timestamp_tools.pycif_wo_hidden   s   
r                 T   c              	   C   sX  t |sdg fS d}d}d| }	t | jdkr!| d |d }
}n| |}
}|d dkr2|d d }t|d	kd   | }t |t |d
 krs|
|
 t |d
   }
|
d}
t|
d	dd }t|d	kd   | }|jd }g }g }|d |kr|	d|d |	 g |	d t
t |d
 D ]R}|	||  |dk s||d
  ||  |kr|	|| |	 ||d
  |	 g q|| | }|	|| |	 ||	 g |	||	 ||d
  |	 g |	d q||d  |kr||d  d }||	 |d d
< |	||	 ||	 g |	d nt |dkr&||	 |d d
< |rOt
t |D ]}|| d |d  || d< || d
 |d  || d
< q/d}t||D ],\}}|sd|dkrdqV|d|t|d d d d t|d
 d d d 7 }qVg }t||D ]\}}|dkr|	t|d d t|d
 d g q||fS )N       gQ?   r   z</s>gH.?r   )r   r   z<sil>g      ?g     @@z	{} {} {};gMb@?i  )lenshaper   r
   cpunumpysum	unsqueezer   r	   r   zipformatstrint)	us_alphasus_peaks	char_list
vad_offsetforce_time_shift
sil_in_strupsample_rateSTART_END_THRESHOLDMAX_TOKEN_DURATION	TIME_RATEr   peaksr   
num_framestimestamp_listnew_char_listi_split_endres_txtchar	timestampresr   r   r   ts_prediction_lfr6_standard   sp   



 $ .

&rA   Fc              	   C   sl  g d}g }|d u r|S |d u r|S t |dkr|S t |dkr"|S | d u s,t | dkrB|| |d d |d d |d |S t | t |krOtd d}d}g }|d d }	|d d }
| }tt| ||d d}|D ]}|\}}}|	d u r|d ur|d }	|d urd	|d   krd
ksn d|d   krdkrn n|d| 7 }n*t |rd	|d   krd
ksn d|d   krdkrn n|d| 7 }n||7 }||d 7 }|| |d urt|nd}|d ur|d n|
}
|r|d dkr|d d n|}|dkr3|||d  7 }|r!|||	|
||d n
|||	|
|d d}d}g }d }	qq|S )N)u   ，u   。u   ？u   、r   r!   r   textstartendr?   *length mismatch between punc and timestampr   	fillvalueazAZ r    rC   rD   rE   r?   raw_textr"   r	   splitloggingwarninglistr   r+   )punc_id_listtimestamp_postprocessedtext_postprocessedreturn_raw_text	punc_listr@   sentence_textsentence_text_segts_listsentence_startsentence_endtextspunc_stamp_text_listpunc_stamp_textpunc_idr?   rC   r   r   r   timestamp_sentencel   s   



66
"

rc   c              	   C   s  g d}g }|d u r|S |d u r|S t |dkr|S t |dkr"|S | d u s,t | dkrB|| |d d |d d |d |S t | t |krOtd d}d}g }|d d }	|d d }
| }tt| ||d d}d	}|D ]}|\}}}|d urd
|d   krdksn d|d   krdkrn n|d| 7 }n*t |rd
|d   krdksn d|d   krdkrn n|d| 7 }n||7 }||d 7 }|| |d urt|nd}|d ur|d n|
}
|d dkr|dd  n|}|r|d ur|d n|	}	d}|dkrDd	}|||d  7 }|d dkr#|d d n|}|r4|||	|
||d n
|||	|
|d d}d}g }qs|S )N),.?rd   r   r!   r   rB   rF   r   rG   TrI   rJ   rK   rL   rM   Fr    rN   rP   )rU   rV   rW   rX   rY   r@   rZ   r[   r\   r]   r^   r_   r`   is_sentence_startra   rb   r?   rC   r   r   r   timestamp_sentence_en   s   



66


rh   )r   r   Tr   )F)r   codecsrR   argparser%   np	itertoolsr   r   rA   rc   rh   r   r   r   r   <module>   s    
N
V