用于Python中的频谱图的FFT

Eug*_*kin 26 python audio graphics image fft

我如何使用Python从WAV PCM文件读取频率峰值,然后能够生成它的图像,用于频谱分析?

我正在尝试制作一个程序,允许您读取任何音频文件,将其转换为WAV PCM,然后找到峰值和频率截止.

Mar*_*off 24

Python的wave库将允许您导入音频.之后,您可以使用numpy对音频进行FFT.

然后,matplotlib制作了非常漂亮的图表和图形 - 绝对可与MATLAB相媲美.

它已经过时了,但是这篇文章可能会让你开始几乎完全是你正在描述的问题(当然是Python中的文章).

  • matplotlib还可以使用命令`specgram`直接计算谱图. (9认同)

end*_*ith 15

使用audiolab轻松加载WAV文件:

from audiolab import wavread
signal, fs, enc = wavread('test.wav')
Run Code Online (Sandbox Code Playgroud)

或者用于阅读任何一般音频格式并转换为WAV:

from audiolab import Sndfile
sound_file = Sndfile('test.w64', 'r')
signal = wave_file.read_frames(wave_file.nframes)
Run Code Online (Sandbox Code Playgroud)

频谱图内置于PyLab中:

from pylab import *
specgram(signal)
Run Code Online (Sandbox Code Playgroud)

具体来说,它是matplotlib的一部分. 这是一个更好的例子.


Zur*_*ser 5

from pylab import *
specgram(signal)
Run Code Online (Sandbox Code Playgroud)

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

subplot
Run Code Online (Sandbox Code Playgroud)

但请注意:Matplotlib 非常慢,但它可以创建漂亮的图像。您不应该将其用于要求较高的动画,更不用说在处理 3D 时了