o
    iN                     @   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        )batch_firstpadding_value)	enumerateintminappendr   torchTensor)speechspeech_lengthsvad_segmentsspeech_listspeech_lengths_listisegmentbed_idxend_idxspeech_ispeech_lengths_i	feats_padspeech_lengths_pad r   J/home/ubuntu/.local/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
   )
vad_result
max_length
min_length
new_result	time_stepbgr   timer   r   r   	merge_vad#   s"   r2   )r   r   )r   torch.nn.utils.rnnr   r   r   r2   r   r   r   r   <module>   s
    