使用 sox 进行语音检测和流式传输
Using sox for voice detection and streaming
目前,我是这样使用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 速率输出小端、ulaw 格式的音频。效果过滤器会修剪音频,直到噪音达到阈值 0.3 秒,然后继续录制直到有 0.3 秒的静音。所有这些流式传输到我用来流式传输到远程服务器的标准输出。
我正在使用所有这些来录制一些声音,并在我说完后结束。为了触发 sox,我使用专门的硬件来触发记录的开始。我可以切换到使用几乎任何音频格式或编解码器,只要它支持即时 formatting/encoding。我的目标平台是 raspberry pi 2 B 上的 raspbian。
我理想的解决方案是在用户说完后使用 vad 停止录音。我希望这即使在有背景聊天的情况下也能奏效。但是,关于 vad 效果的 sox 文档指出:
The use of the norm effect is recommended, but remember that neither
reverse nor norm is suitable for use with streamed audio.
我无法将参数拼凑在一起以使 vad 和流式传输正常工作。是否可以使用 vad 效果停止音频录制,同时仍保持 stdin->sox->stdout 管道?有更好的选择吗?
Is it possible to use the vad effect to stop the recording of audio while still maintaining the stdin->sox->stdout piping?
没有。 vad
效果可以 trim 仅从音频的前面静音。所以你只能用它来检测录制开始,而不是结束和暂停。
reverse
和 norm
过滤器在输出任何数据之前需要所有输入数据,这就是它们不能与流式处理一起使用的原因。
关键是 select 是 silence
过滤器的良好阈值,因此它采用 "background chatter" 作为静音。
您也可以在 silence
之前使用 noisered
(使用基于以前录音的配置文件)来减少触发录音的噪音,但这也会影响输出并且可能不会占用 "background chatter" 作为噪声。
目前,我是这样使用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 速率输出小端、ulaw 格式的音频。效果过滤器会修剪音频,直到噪音达到阈值 0.3 秒,然后继续录制直到有 0.3 秒的静音。所有这些流式传输到我用来流式传输到远程服务器的标准输出。
我正在使用所有这些来录制一些声音,并在我说完后结束。为了触发 sox,我使用专门的硬件来触发记录的开始。我可以切换到使用几乎任何音频格式或编解码器,只要它支持即时 formatting/encoding。我的目标平台是 raspberry pi 2 B 上的 raspbian。
我理想的解决方案是在用户说完后使用 vad 停止录音。我希望这即使在有背景聊天的情况下也能奏效。但是,关于 vad 效果的 sox 文档指出:
The use of the norm effect is recommended, but remember that neither reverse nor norm is suitable for use with streamed audio.
我无法将参数拼凑在一起以使 vad 和流式传输正常工作。是否可以使用 vad 效果停止音频录制,同时仍保持 stdin->sox->stdout 管道?有更好的选择吗?
Is it possible to use the vad effect to stop the recording of audio while still maintaining the stdin->sox->stdout piping?
没有。 vad
效果可以 trim 仅从音频的前面静音。所以你只能用它来检测录制开始,而不是结束和暂停。
reverse
和 norm
过滤器在输出任何数据之前需要所有输入数据,这就是它们不能与流式处理一起使用的原因。
关键是 select 是 silence
过滤器的良好阈值,因此它采用 "background chatter" 作为静音。
您也可以在 silence
之前使用 noisered
(使用基于以前录音的配置文件)来减少触发录音的噪音,但这也会影响输出并且可能不会占用 "background chatter" 作为噪声。