web-dev-qa-db-ja.com

PythonのスペクトログラムのFFT

Python=を使用してWAV PCMファイルから周波数ピークを読み取り、スペクトグラム分析のためにその画像を生成するにはどうすればよいですか?

私は、任意のオーディオファイルを読み取ってWAV PCMに変換し、ピークと周波数のカットオフを見つけることができるプログラムを作成しようとしています。

26
Eugene Bulkin

Pythonのウェーブライブラリ を使用すると、オーディオをインポートできます。その後、オーディオの numpyを使用してFFTを取得 できます。

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

それはダートとして古くからですが、 この記事 は、あなたが説明している問題とほぼ同じように始めます(もちろん、Pythonの記事))。

24
Mark Rushakoff

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 の一部です。 これはより良い例です。

15
endolith
from pylab import *
specgram(signal)

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

subplot

ただし、注意してください:Matplotlibは非常に低速ですが、美しい画像を作成します。 3Dを扱っている場合は、さらに厳しいアニメーションには使用しないでください。

3
Zurechtweiser

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

1
cckerr