我们想知道什么时候在音频文件中开始说话。话语可以是整个句子或非常短,例如一个字。可能存在一些背景噪音(呼吸,吱吱作响,风扇等)。目前我们正在使用一种简单的阈值方法(如果有相当高音量的声音,用户开始讲话),但有时候如果声音足够大则会失败。
我们一直在尝试使用webrtc-vad(hs,js),但它似乎给出了1 / True(“就是声音”)的答案,就像声音一样经常发出噪音。
在使用webrtc-vad的示例代码中,我看到他们经常在一行/一段时间内查找1个答案的序列,如mozilla's webrtcvad_js example code,但这样做似乎对我们没什么帮助。在测试时连续写出答案是有启发性的,例如:这里的第一个系列是来自我说“我”和第二个我小心翼翼地把咖啡杯放在桌子上:
00000000000000000001111111000000000000000000001111111100000000000000
序列的长度大致相同:(玩具侵略性似乎只会使它稍微恶化。
webrtc-vad
根本不适合这项任务吗?或者它仍然可以用作第一个过滤器?也许第二个过滤器应检查大部分声音是否在50–300 Hz
范围内? (我知道我可以通过一个完整的文本到语音管道发送它,看看是否设法把它变成清晰可读的东西,但是当有人开始说话时,这似乎有点过分了......)
有更先进的VAD使用机器学习,它们会表现得更好:
https://github.com/jtkim-kaist/VAD
我知道我可以通过一个完整的文本到语音管道发送它,看看是否设法把它变成清晰可读的东西,但这似乎有点过分,只是找出有人开始说话的时候
不,它不是矫枉过正,它实际上是正确的做法,它还有助于识别器正确估计噪声,从而提供更高的准确性。