如何检测麦克风流中何时出现人声/语音?

人工智能 智能代理 语音识别
2021-11-10 17:11:39

我想建立一个持续倾听我的个人助理。

流程如下所示:

  1. 连续录音
  2. 将其流式传输到谷歌语音 api。
  3. 实时取回文本->解析意图等。

问题是,如果你录制几个小时,谷歌语音 api 会变得很昂贵。一个更好的方法是只提交我实际与之交谈的部分。然后运行这个全职(每天 17 小时,每天)的成本变得非常容易获得。现在我的问题是:

如何检测麦克风流中是否存在语音?

我在后台有很多噪音,哑巴increase in volume detection不是一个很好的解决方案。我需要更智能的东西。它不需要非常准确——只要足够好,不会破坏我的云计算预算。我认为人类的声音听起来足够清晰,以至于检测何时存在并不是什么大问题。

鉴于这是一个实时流 - 不是音频文件,你建议我做什么。

音频将在铬浏览器(电子)中生成 - 使用getUserMediaAPI,并使用node.js我计划处理流逻辑。

注意:有一个内置的speechRecognition api-electron但根据我的经验,它目前不起作用(即使在我给它我的 API 密钥之后也不行),即使可以工作,我认为它也有同样的成本问题。所以这就是为什么我试图提供我自己的实现。

我不知道我在做什么,欢迎任何见解:) 谢谢。

1个回答

你的问题是老问题了。有许多方法,称为语音活动检测 (VAD) 方法,可从音频信号中检测语音。

VAD 算法的典型设计遵循以下三种方法中的一种:

  1. 降噪阶段,例如通过频谱减法。

  2. 一些特征或数量是从输入信号的一部分计算出来的。

  3. 应用分类规则将部分分类为语音或非语音——该分类规则通常在值超过阈值时发现。

在这个序列中可能有一些反馈,其中参数(如噪声阈值或分类阈值)被调整以改进估计或自适应地改变阈值。这些反馈操作提高了非平稳噪声中的 VAD 性能(即当噪声变化很大时)。

查看此关于语音活动检测的 wiki 页面以获取更多信息。