Sox 、「オーディオ操作のスイスアーミーナイフ」は、サウンドファイルから正確なPNGスペクトログラムを生成できます。それはほとんど何でも再生し、バイナリはWindowsで利用できます。最も基本的なレベルでは、次のようなものを使用します。
sox my.wav -n spectrogram
軸、タイトル、凡例がなく、高さが100ピクセルの明るい背景のスペクトログラムが必要な場合:
sox "Me, London.mp3" -n spectrogram -Y 130 -l -r -o "Me, London.png"
たとえば、単一のチャネルのみを分析する場合、Soxは多くのオプションを受け入れます。ビジュアルをさらにクールにする必要がある場合は、結果のPNGを後処理できます。
これは、使用可能なすべてのパラメーターに関するコマンドラインからの簡単な概要です。 マンページに詳細があります :
-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
私はこれを行う小さなPHPライブラリを作成しました: https://github.com/jasny/audio
以下のように動作します。を使用してサンプルを取得します
sox TRACK.mp3 -t raw 4000 -c 1 -e floating-point -L -
これにより、トラックが4kにダウンサンプリングされ、すべてが1チャンネルに配置されます。
次に、サンプルのチャンク(ピクセルごと)を取得し、最小値と最大値を計算します。それらを使用して波形を描画します。
私はこれをここでとても素敵だと思いました(ウェブアーカイブから、元のものはなくなっています): http://web.archive.org/web/20140715171716/http://andrewfreiday.com/2011/12/04/optimizing-the-php-mp3-waveform-generator /
そのPHPベースであり、シェルを介してラメを使用します。
更新:サイトは時々死んでいるようですが、ここにリポジトリがあります: https://github.com/afreiday
すべてのwavファイルのヒストグラムをフォルダー(BASH/DASH)に生成するWanderNautaの更新されたバッチバージョン:
for i in *.wav; do ./sox $i -n spectrogram -y 130 -l -r -o ${i%%.wav}.png; done