我将如何使用 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 中:
from pylab import *
specgram(signal)
具体来说,它是matplotlib的一部分。 这是一个更好的例子。
from pylab import *
specgram(signal)
是最简单的。在这种情况下也很方便:
subplot
但请注意:Matplotlib 非常慢,但它可以创建漂亮的图像。你不应该将它用于要求苛刻的动画,在处理 3D 时更是如此
如果您需要从 PCM 格式转换为整数,则需要使用 struct.unpack。