Python を使用して WAV PCM ファイルから周波数ピークを読み取り、スペクトグラム分析のためにその画像を生成するにはどうすればよいですか?
任意のオーディオ ファイルを読み取り、それを WAV PCM に変換してから、ピークと周波数カットオフを見つけることができるプログラムを作成しようとしています。
Pythonのwaveライブラリを使用すると、オーディオをインポートできます。その後、numpyを使用してオーディオのFFTを取得できます。
次に、matplotlibは、MATLABに完全に匹敵する非常に優れたチャートとグラフを作成します。
それは汚れとして古いですが、この記事はおそらくあなたが説明している問題にほぼ正確に着手するでしょう(もちろんPythonの記事)。
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の一部です。 これがより良い例です。
from pylab import *
specgram(signal)
最も簡単です。このコンテキストでも非常に便利です。
subplot
ただし、注意が必要です。Matplotlibは非常に低速ですが、美しい画像を作成します。3Dを扱っている場合は、要求の厳しいアニメーションには使用しないでください。
PCM 形式から整数に変換する必要がある場合は、struct.unpack を使用する必要があります。