我如何从一个MP3编程方式删除沉默?(How can I remove silence from a

2019-06-26 19:47发布

我有MP3文件,有时必须在年底沉默。 我想自动删除此沉默。 从我所知道的,它是“完美的”沉默(0幅度),而不是背景噪音。 内容的长度和沉默变化。

我发现了一些其它问题,有关裁剪至前30秒或裁剪到X和X + N秒使用ffmpeg 。 我想我可以使用类似的方法,只要我有办法找到沉默启动时。 我该怎么做编程?

例如,一种可能的解决方案将是为具有查找“沉默”的开始的命令。 我期望这样的序列

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

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

Answer 1:

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

详细研究如何soxsilence作品,可以发现在这里 。



Answer 2:

你可能正在寻找一个解决方案无损 ,即,一个不需要重新编码 (从而降低质量)。

我相信mp3splt是你在找什么。 它可以从命令行和GUI一起使用。

sudo aptitude install mp3splt mp3splt-gtk

应该在Debian和Ubuntu的工作。

从手册页:

您也可以尝试,或通过一个固定的时间长度来分割使用静音检测 (见-r选项)与静音检测自动文件(见-s选项), 修剪文件 (见-t选项)



Answer 3:

看一看在silencedetect FFmpeg的音频过滤器 :

在音频流检测沉默。

当它检测到输入音频音量是小于或等于的持续时间大于或等于最小的噪声容限值检测到的噪声的持续时间该过滤器记录一条消息。

印刷时间和持续时间用秒表示。

它的参数进行调整的东西多么的安静,必须要考虑沉默,沉默必须要注意多长时间。



文章来源: How can I remove silence from an MP3 programmatically?