如何使用 sox 或 ffmpeg 检测长音频文件中的静音间隔并将其替换为零(又名抑制背景噪音)?

如何使用 sox 或 ffmpeg 检测长音频文件中的静音间隔并将其替换为零(又名抑制背景噪音)?

我有一个长音频文件,是通过连接许多短文件创建的。我想检测语音片段之间的静音(仅阈值就足以满足我的目的)并用绝对零替换它们,这样就没有背景“噪音”。保留录音的长度对我来说很重要。

我知道 sox 可以检测文件开头和结尾的静音,我可以使用silencereversepad来删除样本并填充零。有没有办法在文件中的任何地方都执行此操作,而不仅仅是开始+结束?

UPD:这可能是一个非常复杂的方法来询问是否有用于 Linux 的语音活动检测工具

答案1

使用 soxsilence选项:

sox [input] [output] silence 1 1 2% -1 0.5 2%

会将文件中前面的静音时间减少到 1 秒,并将间隙减少到半秒。在我的例子中,2% 忽略了本底噪声。 0% 可能适合你。

-1告诉 sox 处理每个实例。

相关内容