【问题标题】:Using sox for voice detection and streaming使用 sox 进行语音检测和流式传输
【发布时间】:2015-07-12 10:48:34
【问题描述】:

目前,我是这样使用 sox 的:

sox -d -e u-law --endian little -b 8 -c 1 -r 8000 -t ul - silence 1 0.3 1% 1 0.3 1%

作为参考,这是从默认麦克风录制音频并以 8 位和 8k 速率输出 little endian、ulaw 格式的音频。效果过滤器会修剪音频,直到噪音达到阈值 0.3 秒,然后继续录制,直到有 0.3 秒的静音。所有这些流到标准输出,我用它流到远程服务器。

我正在使用所有这些来录制一些声音,并在我说完后结束。为了触发 sox,我使用专门的硬件来触发录制的开始。只要支持即时格式化/编码,我就可以切换到使用几乎任何音频格式或编解码器。我的目标平台是 raspberry pi 2 B 上的 raspbian。

我理想的解决方案是在用户说完后使用 vad 停止录音。我希望这即使在背景聊天的情况下也能奏效。但是,关于 vad 效果的 sox 文档指出:

推荐使用规范效果,但请记住,两者都不是 reverse nor norm 适合与流式音频一起使用。

我无法将参数拼凑在一起以使 vad 和流式传输正常工作。是否可以使用 vad 效果来停止音频的录制,同时仍然保持 stdin->sox->stdout 管道?有更好的选择吗?

【问题讨论】:

    标签: audio raspberry-pi audio-recording sox voice-recording


    【解决方案1】:

    是否可以使用 vad 效果来停止音频的录制,同时仍然保持 stdin->sox->stdout 管道?

    没有。 vad 效果只能从音频的前面修剪静音。所以你只能用它来检测录制开始,而不是结束和暂停。

    reverse 和 norm 过滤器需要所有输入数据才能在输出上生成任何数据,这就是为什么它们不能用于流式传输。

    关键是为silence过滤器选择一个好的阈值,以便将“背景喋喋不休”视为静音。

    您也可以在silence 之前使用noisered(使用基于先前录音的配置文件)来减少触发录音的噪音,但这也会影响输出,并且可能不会将“背景喋喋不休”视为噪音。

    【讨论】:

      猜你喜欢
      • 2013-02-04
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多