mirror of
https://github.com/snakers4/silero-vad.git
synced 2026-02-05 18:09:22 +08:00
Fx
This commit is contained in:
@@ -301,7 +301,7 @@
|
|||||||
"name": "python",
|
"name": "python",
|
||||||
"nbconvert_exporter": "python",
|
"nbconvert_exporter": "python",
|
||||||
"pygments_lexer": "ipython3",
|
"pygments_lexer": "ipython3",
|
||||||
"version": "3.8.3"
|
"version": "3.7.7"
|
||||||
},
|
},
|
||||||
"toc": {
|
"toc": {
|
||||||
"base_numbering": 1,
|
"base_numbering": 1,
|
||||||
|
|||||||
19
utils.py
19
utils.py
@@ -73,11 +73,15 @@ def init_jit_model(model_path,
|
|||||||
return model
|
return model
|
||||||
|
|
||||||
|
|
||||||
def get_speech_ts(wav, model, extractor, trig_sum=0.25, neg_trig_sum=0.01, num_steps=8, batch_size=200):
|
def get_speech_ts(wav, model, extractor,
|
||||||
|
trig_sum=0.25, neg_trig_sum=0.01,
|
||||||
|
num_steps=8, batch_size=200):
|
||||||
|
|
||||||
assert 4000 % num_steps == 0
|
assert 4000 % num_steps == 0
|
||||||
step = int(4000 / num_steps)
|
step = int(4000 / num_steps) # stride / hop
|
||||||
outs = []
|
outs = []
|
||||||
to_concat = []
|
to_concat = []
|
||||||
|
|
||||||
for i in range(0, len(wav), step):
|
for i in range(0, len(wav), step):
|
||||||
chunk = wav[i: i+4000]
|
chunk = wav[i: i+4000]
|
||||||
if len(chunk) < 4000:
|
if len(chunk) < 4000:
|
||||||
@@ -98,11 +102,12 @@ def get_speech_ts(wav, model, extractor, trig_sum=0.25, neg_trig_sum=0.01, num_s
|
|||||||
|
|
||||||
outs = torch.cat(outs, dim=0)
|
outs = torch.cat(outs, dim=0)
|
||||||
|
|
||||||
buffer = deque(maxlen=num_steps)
|
buffer = deque(maxlen=num_steps) # when max queue len is reach, first element is dropped
|
||||||
triggered = False
|
triggered = False
|
||||||
speeches = []
|
speeches = []
|
||||||
current_speech = {}
|
current_speech = {}
|
||||||
for i, predict in enumerate(outs[:, 1]):
|
|
||||||
|
for i, predict in enumerate(outs[:, 1]): # add name
|
||||||
buffer.append(predict)
|
buffer.append(predict)
|
||||||
if (np.mean(buffer) >= trig_sum) and not triggered:
|
if (np.mean(buffer) >= trig_sum) and not triggered:
|
||||||
triggered = True
|
triggered = True
|
||||||
@@ -150,7 +155,9 @@ class STFTExtractor(nn.Module):
|
|||||||
|
|
||||||
|
|
||||||
class VADiterator:
|
class VADiterator:
|
||||||
def __init__(self, trig_sum=0.26, neg_trig_sum=0.01, num_steps=8):
|
def __init__(self,
|
||||||
|
trig_sum=0.26, neg_trig_sum=0.01,
|
||||||
|
num_steps=8):
|
||||||
self.num_steps = num_steps
|
self.num_steps = num_steps
|
||||||
assert 4000 % num_steps == 0
|
assert 4000 % num_steps == 0
|
||||||
self.step = int(4000 / num_steps)
|
self.step = int(4000 / num_steps)
|
||||||
@@ -203,7 +210,6 @@ class VADiterator:
|
|||||||
return current_speech, self.current_name
|
return current_speech, self.current_name
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def state_generator(model, audios, extractor, onnx=False, trig_sum=0.26, neg_trig_sum=0.01, num_steps=8, audios_in_stream=5):
|
def state_generator(model, audios, extractor, onnx=False, trig_sum=0.26, neg_trig_sum=0.01, num_steps=8, audios_in_stream=5):
|
||||||
VADiters = [VADiterator(trig_sum, neg_trig_sum, num_steps) for i in range(audios_in_stream)]
|
VADiters = [VADiterator(trig_sum, neg_trig_sum, num_steps) for i in range(audios_in_stream)]
|
||||||
for i, current_pieces in enumerate(stream_imitator(audios, audios_in_stream)):
|
for i, current_pieces in enumerate(stream_imitator(audios, audios_in_stream)):
|
||||||
@@ -259,4 +265,3 @@ def stream_imitator(stereo, audios_in_stream):
|
|||||||
values.append((out, wav_name))
|
values.append((out, wav_name))
|
||||||
yield values
|
yield values
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user