2012-08-06 102 views
20

我有MP3文件,最后有时会有沉默。我想自动删除这个沉默。从我可以说,这是“完美”的沉默(0幅),而不是背景噪音。内容的长度和静音各不相同。如何以编程方式从MP3中删除静音?

我发现了关于cropping to the first 30 secondscropping to X and X+N seconds使用ffmpeg的其他一些问题。我想我可以用类似的方法,只要我有办法找到沉默何时开始。我会如何编程?

例如,一种可能的解决方案是找到一个可以找到“沉默”开始的命令。我期望这样

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

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

+0

您真的只对完美的沉默感兴趣吗?这是非常罕见的,从24位大师抖动和有损压缩。在任何情况下,FFMPEG都是要走的路。 – Brad 2012-08-06 19:06:54

+0

@Brad我们基本上是在解决我们使用的录音服务中的错误。当问题发生时,它似乎总是给这个“完美”的沉默。 – 2012-08-06 19:08:29

+0

您可能会对['silencedetect' FFmpeg音频过滤器](http://ffmpeg.org/ffmpeg.html#silencedetect)感兴趣。 – blahdiblah 2012-08-06 19:21:40

回答

5

看一看的silencedetect FFmpeg audio filter

检测沉默的音频流。

此过滤器在检测到输入音量小于或等于噪声容限值的时间大于或等于最小检测到的噪声持续时间时记录消息。

打印的时间和持续时间用秒表示。

它有参数来调整安静的东西必须被视为沉默,沉默需要注意多长时间。

+2

的'silenceremove'过滤器记录在这里https://ffmpeg.org/ffmpeg-filters.html#toc-silenceremove这个答案可能会证明是有用的太:http://stackoverflow.com/a/29411973/1717535 – 2017-02-23 09:54:14

32
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作品可以发现here

+0

解决方案的工作,但你的解释是错误的。原作者表示'修剪沉默(任何小于1%的音量),直到我们遇到持续时间超过0.1秒的声音。'。 – duleshi 2015-10-16 08:22:52

7

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

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

sudo aptitude install mp3splt mp3splt-gtk 

应该可以在Debian和Ubuntu上运行。

从手册页:

您也可以尝试拆分文件与静音检测(见-s选项),使用静音检测(见-r选项)装饰的文件,或通过自动固定时间长度(请参阅-t选项)

相关问题