FFT的频谱图在Python(FFT for Spectrograms in Python)

2019-06-18 14:55发布

我怎么会去使用Python读取从WAV PCM文件的频率峰值,然后能够产生它的一个形象,对频谱图分析?

我试图做一个程序,它可以读取任何音频文件,将其转换为WAV PCM,然后找到高峰和频率截止。

Answer 1:

Python的波库将让您导入音频。 在此之后,你可以使用numpy的采取的FFT的音频。

然后, matplotlib使得非常漂亮的图表和图形-绝对媲美MATLAB。

这是旧如粪土,但这篇文章很可能让你开始几乎正是你描述的(当然,在Python的文章)的问题。



Answer 2:

加载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 。 这里有一个更好的例子。



Answer 3:

from pylab import *
specgram(signal)

是最简单的。 也非常方便在这种情况下:

subplot

但要注意:Matplotlib是很慢,但它创造美丽的图像。 你不应该使用它为要求苛刻的动画,甚至更少,当你在处理3D



Answer 4:

如果您需要从PCM格式的整数转换,你需要使用struct.unpack。



文章来源: FFT for Spectrograms in Python