当前位置: 首页>>技术教程>>正文


ubuntu – 如何以编程方式删除MP3的静音?

, , , ,

问题描述

我有MP3文件,有时结尾处没有声音。我想自动删除此静音。据我所知,这是”perfect”静音(0振幅),而不是背景噪声。内容的长度和静默各不相同。

我使用ffmpeg找到了有关cropping to the first 30 secondscropping to X and X+N seconds的其他问题。我想我可以使用类似的方法,只要我能找到何时开始沉默。我将如何以编程方式进行操作?

例如,一种可能的解决方案是使用找到”silence”开头的命令。我希望这样的序列

end=$(ffmpeg some-command-to-find-start-of-silence)
ffmpeg -t "$end" -acodec copy -i inputfile.mp3 outputfile.mp3

该解决方案不必使用ffmpeg,但是它确实需要在Ubuntu上可用。

最佳回答

sox inputfile.mp3 outputfile.mp3 silence 1 0.1 0.1% reverse silence 1 0.1 0.1% reverse

这将修剪文件中所有超过0.1秒的静音时间。如果您只关心修剪末端,则可以简化为:

sox inputfile.mp3 outputfile.mp3 reverse silence 1 0.1 0.1% reverse

heresoxsilence的工作方式有详细的了解。

次佳回答

您可能正在寻找一种无损解决方案,即不需要re-encoding(这会降低质量)的解决方案。

我相信mp3splt是您想要的。可以从命令行和GUI使用它。

sudo aptitude install mp3splt mp3splt-gtk

应该可以在Debian和Ubuntu上使用。

从手册页:

You can also try to split files automatically with silence detection (see -s option), trim files using silence detection (see -r option), or by a fixed time length (see -t option)

第三种回答

看一下silencedetect FFmpeg音频过滤器:

Detect silence in an audio stream.

This filter logs a message when it detects that the input audio volume is less or equal to a noise tolerance value for a duration greater or equal to the minimum detected noise duration.

The printed times and duration are expressed in seconds.

它具有一些参数,可以调整必须将静音视为静音的程度,以及需要注意静音的时间。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8621.html,未经允许,请勿转载。