我该如何使用Python从WAV PCM文件中读取频率峰值,并能够生成相应的图像,用于频谱分析?
我正试图编写一个程序,允许您读取任何音频文件,将其转换为WAV PCM格式,然后找到峰值和频率截止点。
Python的wave库可以让您导入音频。之后,您可以使用numpy获取音频的FFT。
然后,matplotlib可以生成非常好看的图表和图形,绝对可以与MATLAB相媲美。
这篇文章虽然古老,但可能会让您开始解决您描述的问题(当然是用Python写的文章)。
使用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 的一部分。 这里有一个更好的示例。
from pylab import *
specgram(signal)
subplot
但是请注意:Matplotlib非常缓慢,但它可以创建美丽的图像。您不应该在需要高要求的动画中使用它,尤其是当您处理3D时。
specgram
命令可以直接使用 Matplotlib 计算声谱图。 - tom10