gpt4 book ai didi

audio - 使用sox进行语音检测和流式传输

转载 作者:行者123 更新时间:2023-12-04 04:34:40 27 4
gpt4 key购买 nike

目前,我使用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的速率输出小字节序,律法格式的音频。效果滤镜会修剪音频,直到噪声达到阈值0.3秒为止,然后继续录制直到出现0.3秒的静音为止。所有这些都流到stdout,我用它流到远程服务器。

我用所有这些来录制一些声音,并在我说完之后结束。为了触发sox,我使用专用硬件触发记录的开始。我可以切换到使用几乎所有音频格式或编解码器,只要它支持即时格式化/编码即可。我的目标平台是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效果只能从音频的前面修剪静音。因此,您只能使用它来检测录制的开始,而不是结束和暂停。
reversenorm过滤器在输出任何数据之前需要所有输入数据,这就是为什么它们不能与流一起使用的原因。

关键是为 silence过滤器选择一个合适的阈值,以使“背景颤动”作为静音。

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

关于audio - 使用sox进行语音检测和流式传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30006609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com