o
    4ѹgN                     @   s2   d dl Z d dlmZ dd Zdd Zd
dd	ZdS )    N)pad_sequencec                 C   s   g }g }t |D ]3\}}t|d d d }tt|d d d |d }| d||f }	|| }
||	 ||
 qt|ddd}t| }||fS )Nr         Tg        )Zbatch_firstZpadding_value)	enumerateintminappendr   torchZTensor)speechspeech_lengthsvad_segmentsspeech_listspeech_lengths_listisegmentbed_idxend_idxspeech_ispeech_lengths_iZ	feats_padZspeech_lengths_pad r   Z/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/site-packages/funasr/utils/vad_utils.pyslice_padding_fbank   s   
r   c                 C   sx   g }g }t |D ]/\}}t|d d d }tt|d d d |}| || }	|| }
||	 ||
 q||fS )Nr   r   r   )r   r   r   r   )r
   r   r   r   r   r   r   r   r   r   r   r   r   r   slice_padding_audio_samples   s   
r   :  c                 C   s   g }t | dkr
| S dd | D dd | D  }ttt|}t |dkr(g S d}tt |d D ] }|| }||d  | |k rCq2|| |krP|||g |}q2|||d g |S )Nr   c                 S      g | ]}|d  qS )r   r   .0tr   r   r   
<listcomp>'       zmerge_vad.<locals>.<listcomp>c                 S   r   )r   r   r   r   r   r   r   '   r   r   )lensortedlistsetranger   )Z
vad_result
max_lengthZ
min_lengthZ
new_resultZ	time_stepbgr   timer   r   r   	merge_vad#   s"   r)   )r   r   )r	   Ztorch.nn.utils.rnnr   r   r   r)   r   r   r   r   <module>   s
    