Python=を使用してWAV PCMファイルから周波数ピークを読み取り、スペクトグラム分析のためにその画像を生成するにはどうすればよいですか?
私は、任意のオーディオファイルを読み取ってWAV PCMに変換し、ピークと周波数のカットオフを見つけることができるプログラムを作成しようとしています。
Pythonのウェーブライブラリ を使用すると、オーディオをインポートできます。その後、オーディオの 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を使用します。