MCPcopy Create free account
hub / github.com/modelscope/FunASR / merge_vad

Function merge_vad

funasr/utils/vad_utils.py:54–89  ·  view source on GitHub ↗

Merge short VAD segments to reduce fragmentation. Args: vad_result (list): VAD segments [[start_ms, end_ms], ...]. max_length (int): Maximum merged segment length in ms (default 15000). min_length (int): Minimum segment length; shorter ones get merged (default 0). R

(vad_result, max_length=15000, min_length=0)

Source from the content-addressed store, hash-verified

52
53
54def merge_vad(vad_result, max_length=15000, min_length=0):
55
56 """Merge short VAD segments to reduce fragmentation.
57
58 Args:
59 vad_result (list): VAD segments [[start_ms, end_ms], ...].
60 max_length (int): Maximum merged segment length in ms (default 15000).
61 min_length (int): Minimum segment length; shorter ones get merged (default 0).
62
63 Returns:
64 list: Merged VAD segments [[start_ms, end_ms], ...].
65 """
66 new_result = []
67 if len(vad_result) <= 1:
68 return vad_result
69 time_step = [t[0] for t in vad_result] + [t[1] for t in vad_result]
70 time_step = sorted(list(set(time_step)))
71 if len(time_step) == 0:
72 return []
73 bg = 0
74 for i in range(len(time_step) - 1):
75 time = time_step[i]
76 if time_step[i + 1] - bg < max_length:
77 continue
78 if time - bg > min_length:
79 new_result.append([bg, time])
80 # if time - bg < max_length * 1.5:
81 # new_result.append([bg, time])
82 # else:
83 # split_num = int(time - bg) // max_length + 1
84 # spl_l = int(time - bg) // split_num
85 # for j in range(split_num):
86 # new_result.append([bg + j * spl_l, bg + (j + 1) * spl_l])
87 bg = time
88 new_result.append([bg, time_step[-1]])
89 return new_result

Callers 1

inference_with_vadMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…