Python中的FFT用于频谱图

26

我该如何使用Python从WAV PCM文件中读取频率峰值,并能够生成相应的图像,用于频谱分析?

我正试图编写一个程序,允许您读取任何音频文件,将其转换为WAV PCM格式,然后找到峰值和频率截止点。

4个回答

25

10
specgram 命令可以直接使用 Matplotlib 计算声谱图。 - tom10

16

使用audiolab加载WAV文件非常容易:

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中已经内置了谱图(spectrogram)功能。
from pylab import *
specgram(signal)

这个功能具体来说是 matplotlib 的一部分。 这里有一个更好的示例。


5
from pylab import *
specgram(signal)

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

但是请注意:Matplotlib非常缓慢,但它可以创建美丽的图像。您不应该在需要高要求的动画中使用它,尤其是当您处理3D时。


2
如果您需要将PCM格式转换为整数,您需要使用struct.unpack。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接