How can I create a waveform image of an MP3 in Linux?

前端 未结 7 1115
旧时难觅i
旧时难觅i 2021-02-01 21:03

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 ?

7条回答
  •  遇见更好的自我
    2021-02-01 21:49

    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
    

    enter image description here

    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
    

    enter image description here

    Based on this answer to a similar question that is more general regarding file format but less general in regards to software used.

提交回复
热议问题