Sv chunk. Args: vad_segments: TODO. fs: TODO.
(vad_segments: list, fs=16000)
| 68 | |
| 69 | |
| 70 | def sv_chunk(vad_segments: list, fs=16000) -> list: |
| 71 | """Sv chunk. |
| 72 | |
| 73 | Args: |
| 74 | vad_segments: TODO. |
| 75 | fs: TODO. |
| 76 | """ |
| 77 | config = { |
| 78 | "seg_dur": 1.5, |
| 79 | "seg_shift": 0.75, |
| 80 | } |
| 81 | |
| 82 | def seg_chunk(seg_data): |
| 83 | """Seg chunk. |
| 84 | |
| 85 | Args: |
| 86 | seg_data: TODO. |
| 87 | """ |
| 88 | seg_st = seg_data[0] |
| 89 | data = seg_data[2] |
| 90 | chunk_len = int(config["seg_dur"] * fs) |
| 91 | chunk_shift = int(config["seg_shift"] * fs) |
| 92 | last_chunk_ed = 0 |
| 93 | seg_res = [] |
| 94 | for chunk_st in range(0, data.shape[0], chunk_shift): |
| 95 | chunk_ed = min(chunk_st + chunk_len, data.shape[0]) |
| 96 | if chunk_ed <= last_chunk_ed: |
| 97 | break |
| 98 | last_chunk_ed = chunk_ed |
| 99 | chunk_st = max(0, chunk_ed - chunk_len) |
| 100 | chunk_data = data[chunk_st:chunk_ed] |
| 101 | if chunk_data.shape[0] < chunk_len: |
| 102 | chunk_data = np.pad(chunk_data, (0, chunk_len - chunk_data.shape[0]), "constant") |
| 103 | seg_res.append([chunk_st / fs + seg_st, chunk_ed / fs + seg_st, chunk_data]) |
| 104 | return seg_res |
| 105 | |
| 106 | segs = [] |
| 107 | for i, s in enumerate(vad_segments): |
| 108 | segs.extend(seg_chunk(s)) |
| 109 | |
| 110 | return segs |
| 111 | |
| 112 | |
| 113 | def extract_feature(audio): |
no test coverage detected
searching dependent graphs…