2012-03-31 12 views

risposta

30

Sox, "il coltellino svizzero di manipolazione audio", può generare spettrogrammi PNG accurati da file audio. Riproduce praticamente tutto e i file binari sono disponibili per Windows. Al livello più semplice, devi usare qualcosa di simile:

sox my.wav -n spectrogram 

Se si desidera uno spettrogramma senza asce, i titoli, le leggende, e uno sfondo chiaro che è 100px alta:

sox "Me, London.mp3" -n spectrogram -Y 130 -l -r -o "Me, London.png" 

Sox accetta molte opzioni se vuoi solo analizzare un singolo canale, ad esempio. Se hai bisogno che la tua grafica sia ancora più interessante, puoi post-elaborare il PNG risultante.

Ecco una breve panoramica dalla linea di comando su tutti i parametri disponibili, il manpage has more details:

-x num X-axis size in pixels; default derived or 800 
-X num X-axis pixels/second; default derived or 100 
-y num Y-axis size in pixels (per channel); slow if not 1 + 2^n 
-Y num Y-height total (i.e. not per channel); default 550 
-z num Z-axis range in dB; default 120 
-Z num Z-axis maximum in dBFS; default 0 
-q num Z-axis quantisation (0 - 249); default 249 
-w name Window: Hann (default), Hamming, Bartlett, Rectangular, Kaiser 
-W num Window adjust parameter (-10 - 10); applies only to Kaiser 
-s Slack overlap of windows 
-a Suppress axis lines 
-r Raw spectrogram; no axes or legends 
-l Light background 
-m Monochrome 
-h High colour 
-p num Permute colours (1 - 6); default 1 
-A Alternative, inferior, fixed colour-set (for compatibility only) 
-t text Title text 
-c text Comment text 
-o text Output file name; default `spectrogram.png' 
-d time Audio duration to fit to X-axis; e.g. 1:00, 48 
-S time Start the spectrogram at the given time through the input 
+8

Si noti che questa non è tecnicamente una forma d'onda. È, tuttavia, un visual. –

+0

Uso già SOX, ma non ho mai pensato che potesse fare lo spettrogramma. =))) Incredibile. –

+1

Grazie, è stato davvero utile! Ho usato questo per generare una serie di spettrogrammi per tutti i file .wav nella mia cartella: per% f in (* .wav) do ("c: \ Programmi (x86) \ sox-14-4-0 \ sox.exe "% ~ nf% ~ xf -n spettrogramma -o% ~ nf.png -r -m -y 100) –

1

ho trovato questo qui molto bello (da un archivio web, l'originale è andato): http://web.archive.org/web/20140715171716/http://andrewfreiday.com/2011/12/04/optimizing-the-php-mp3-waveform-generator/

basato su PHP e utilizza lame tramite shell.

aggiornamento: il sito sembra morto di tanto in tanto, howerver ecco il repo: https://github.com/afreiday

+0

Il collegamento fornito è morto. – Christian

+0

sicuro? riprova ! – xamiro

+0

corretto. ancora vivo. – Christian

3

ho creato una piccola libreria PHP che fa questo: https://github.com/jasny/audio


Funziona come segue . Ottiene i campioni usando

sox TRACK.mp3 -t raw 4000 -c 1 -e floating-point -L - 

Questo downsamples la traccia a 4k e mette tutto in 1 canale.

Successivamente, prendo pezzi di campioni (per pixel con bit) e calcola i valori minimo e massimo. Usali per disegnare la forma d'onda.

4

Una forma d'onda reale è possibile con ffmpeg, è possibile scaricarlo here.

Installare da qualche parte e utilizzare la seguente riga di comando come ad esempio:

ffmpeg.exe -i "filename.mp3" -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png

o il seguente per abbinare il vostro esempio il colore dell'immagine, o altro colors:

ffmpeg.exe -i "filename.mp3" -lavfi showwavespic=s=1024x800:colors=0971CE waveform.png

Documentation of FFmpeg showwavespic

0

Un vers aggiornato, in lotti ione di Wander Nauta che genera istogramma per tutti i file wav nella cartella (BASH/DASH):

for i in *.wav; do ./sox $i -n spectrogram -y 130 -l -r -o ${i%%.wav}.png; done