Slice audio into VAD segments with proper padding. Args: speech (Tensor): Full audio tensor. speech_lengths (int): Total audio length. vad_segments (list): List of (segment_info, original_index) tuples, where segment_info is [start_ms, end_ms]. Returns:
(speech, speech_lengths, vad_segments)
| 26 | |
| 27 | |
| 28 | def slice_padding_audio_samples(speech, speech_lengths, vad_segments): |
| 29 | |
| 30 | """Slice audio into VAD segments with proper padding. |
| 31 | |
| 32 | Args: |
| 33 | speech (Tensor): Full audio tensor. |
| 34 | speech_lengths (int): Total audio length. |
| 35 | vad_segments (list): List of (segment_info, original_index) tuples, |
| 36 | where segment_info is [start_ms, end_ms]. |
| 37 | |
| 38 | Returns: |
| 39 | tuple: (speech_list, speech_lengths_list) - lists of numpy arrays and their lengths. |
| 40 | """ |
| 41 | speech_list = [] |
| 42 | speech_lengths_list = [] |
| 43 | for i, segment in enumerate(vad_segments): |
| 44 | bed_idx = int(segment[0][0] * 16) |
| 45 | end_idx = min(int(segment[0][1] * 16), speech_lengths) |
| 46 | speech_i = speech[bed_idx:end_idx] |
| 47 | speech_lengths_i = end_idx - bed_idx |
| 48 | speech_list.append(speech_i) |
| 49 | speech_lengths_list.append(speech_lengths_i) |
| 50 | |
| 51 | return speech_list, speech_lengths_list |
| 52 | |
| 53 | |
| 54 | def merge_vad(vad_result, max_length=15000, min_length=0): |
no outgoing calls
no test coverage detected
searching dependent graphs…