Given an MP3 I would like to extract the waveform from the file into an image (.png)
Is there a package that can do what I need ?
Using sox
and gnuplot
you can create basic waveform images:
sox audio.mp3 audio.dat #create plaintext file of amplitude values tail -n+3 audio.dat > audio_only.dat #remove comments # write script file for gnuplot echo set term png size 320,180 > audio.gpi #set output format echo set output \"audio.png\" >> audio.gpi #set output file echo plot \"audio_only.dat\" with lines >> audio.gpi #plot data gnuplot audio.gpi #run script
To create something simpler/prettier, use the following GNU Plot file as a template (save it as audio.gpi):
#set output format and size set term png size 320,180 #set output file set output "audio.png" # set y range set yr [-1:1] # we want just the data unset key unset tics unset border set lmargin 0 set rmargin 0 set tmargin 0 set bmargin 0 # draw rectangle to change background color set obj 1 rectangle behind from screen 0,0 to screen 1,1 set obj 1 fillstyle solid 1.0 fillcolor rgbcolor "#222222" # draw data with foreground color plot "audio_only.dat" with lines lt rgb 'white'
and just run:
sox audio.mp3 audio.dat #create plaintext file of amplitude values tail -n+3 audio.dat > audio_only.dat #remove comments gnuplot audio.gpi #run script
Based on this answer to a similar question that is more general regarding file format but less general in regards to software used.
If you have a GUI environment you can use the audacity audio editor to load the mp3 and then use the print command to generate a pdf of the waveform. Then convert the pdf to png.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With