Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I remove silence from an MP3 programmatically?

I have MP3 files that sometimes have silence at the end. I would like to remove this silence automatically. From what I can tell, it is "perfect" silence (0 amplitude), not background noise. The length of the content and the silence varies.

I found some other questions about cropping to the first 30 seconds or cropping to X and X+N seconds using ffmpeg. I would think I could use a similar approach, as long as I have a way to find when the silence starts. How would I do that programatically?

For example, one possible solution would be to have a command that finds the beginning of the "silence". I'd expect a sequence like this

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

The solution does not have to use ffmpeg, but it does need to be available on Ubuntu.

like image 625
Benjamin Oakes Avatar asked Aug 06 '12 19:08

Benjamin Oakes


People also ask

How do I remove silence from audio?

AudioLab on AndroidScroll down and find Silence Remover then select it. You can either select tracks from the all tracks list or choose the file manager to select it manually. There is also an option to record audio. In addition to that, you can preview the audio and change the file name.


1 Answers

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

This will trim any silence longer than 0.1 second from your file. If you're only concerned about trimming the end, this can be simplified to:

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

A detailed look into how sox's silence works can be found here.

like image 144
James Avatar answered Sep 20 '22 23:09

James