o
    4ѹg)                     @   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whereZonesstack)
alphas	thresholdZ
batch_sizeZlen_timeZ	integrateZ
list_firestalpha
fire_placeZfires r   `/Users/admin/.pyenv/versions/3.10.0/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sumZ	unsqueezer   r	   r   zipformatstrint)Z	us_alphasZus_peaksZ	char_listZ
vad_offsetZforce_time_shiftZ
sil_in_strZupsample_rateZSTART_END_THRESHOLDZMAX_TOKEN_DURATIONZ	TIME_RATEr   Zpeaksr   Z
num_framesZtimestamp_listZnew_char_listi_splitZ_endZres_txtchar	timestampresr   r   r   ts_prediction_lfr6_standard   sp   



 $ .

&r*   Fc              	   C   sd  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|
}
|d dkr|d d n|}|dkr/|||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   r,   r-   r.   r(   Z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(   r,   r   r   r   timestamp_sentencel   s   



6



rK   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),.?rL   r   r   r   r+   r/   r   r0   Tr2   r3   r4   r5   r6   Fr   r7   r8   )r=   r>   r?   r@   rA   r)   rB   rC   rD   rE   rF   rG   rH   Zis_sentence_startrI   rJ   r(   r,   r   r   r   timestamp_sentence_en   s   



6



rO   )r   r   Tr   )F)r   codecsr:   argparser   np	itertoolsr   r   r*   rK   rO   r   r   r   r   <module>   s    
N
V