如何在有静音的地方批量拆分音频文件?

Posted

技术标签:

【中文标题】如何在有静音的地方批量拆分音频文件?【英文标题】:How to batch split audio files wherever there is silence? 【发布时间】:2013-11-16 02:55:35 【问题描述】:

我在 SoX 中使用以下命令在每个静默时间超过 0.3 秒的地方分割许多大型音频文件:

sox -V3 input.wav output.wav silence 1 0.50 0.1% 1 0.3 0.1% : newfile : restart

然而,这最终会偶尔创建完全静音的文件,并在每次休息前修剪音频。

我发现 Audacity 的效果更好,但我需要拆分数百个 WAV 文件,而 Audacity 甚至无法同时打开 10 个文件而不冻结。

如何使用 SoX 或类似软件在 0.3 秒的静音期结束时分割文件,使得静音部分仍然贴在说话的结尾,但不是之前,并且没有剪辑完全沉默,除非它们来自input.wav的开头?

【问题讨论】:

使用sox $wav -n stat 并查看平均范数。对于静默文件,它将小于 0.01。使用此逻辑并丢弃所有静默文件。 对我来说没有解决方案工作 【参考方案1】:

如果你把 0.5 改成 3.0 就可以了:

sox -V3 input.wav output.wav silence 1 3.0 0.1% 1 0.3 0.1% : newfile : restart

【讨论】:

请在你的答案中解释参数。 @user272651 参数是什么意思?【参考方案2】:

您没有指定任何编程语言,所以我假设您并不是特别在寻找一种自己编程的方法(这使得它在这里有点离题)。顺便说一句,这并不难。

无论如何,也许这对你有用:

http://www.nch.com.au/splitter/

您可以设置阈值以 dB 为单位进行拆分。我猜当您将其设置为 0dB 时,您将获得每片所需的所有音频。

【讨论】:

不再。我刚去那个网站,有一个 macOS 版本。【参考方案3】:
sox -V3 orig.wav p.wav silence -l  0   1 0.5 0.1% : newfile : restart

这对我有用。我在命令here 和here 上找到了一些有用的解释。

【讨论】:

以上是关于如何在有静音的地方批量拆分音频文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 libsndfile 在音频文件中打印静音?

使用静音检测分割音频文件

[Python][Moviepy] 如何在音频末尾添加短暂的静音?

如何静音或只选择一个音频通道?

如何通过静音部分分割视频或音频

如何在 ionic 平台的 APIRTC 上静音和取消静音视频/音频?