2009-08-20 15 views
24

スペクトログラム解析のために、Pythonを使用してWAV PCMファイルから周波数ピークを読み取り、その画像を生成する方法を教えてください。PythonのスペクトログラムのFFT

私はオーディオファイルを読み込んでWAV PCMに変換し、ピークと周波数カットオフを見つけるプログラムを作ろうとしています。

答えて

23

Python's wave libraryオーディオをインポートできます。その後、オーディオのuse numpy to take an FFTすることができます。

次に、matplotlibは非常に素晴らしいチャートとグラフを作成します。これはMATLABに匹敵します。

これは汚れとして古くなりますが、this articleはおそらくあなたが記述している問題(ほぼPythonの記事)をほぼ正確に開始することになります。

+8

matplotlibはスペクトログラムをコマンド 'specgram 'で直接計算することもできます。 – tom10

+0

私はそれがまさに私が必要とするように見えます。ありがとうございました :) –

13

ロードWAVファイルはaudiolabを使用して簡単です:

from audiolab import wavread 
signal, fs, enc = wavread('test.wav') 

または任意の一般的なオーディオフォーマットを読み、WAVに変換する:

from audiolab import Sndfile 
sound_file = Sndfile('test.w64', 'r') 
signal = wave_file.read_frames(wave_file.nframes) 

スペクトログラムはPyLabに組み込まれています:

from pylab import * 
specgram(signal) 

具体的には、matplotlibの一部です。 Here's a better example.

2
from pylab import * 
specgram(signal) 

が最も簡単です。このコンテキストでも非常に便利です:

subplot 

警告:Matplotlibは非常に遅いですが、美しい画像を作成します。 3Dを扱っているときでさえ、要求の少ないアニメーションには使用しないでください。

1

PCM形式から整数に変換する必要がある場合は、struct.unpackを使用します。