27

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

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

4

4 回答 4

25

Python 的 wave 库可让您导入音频。之后,您可以使用 numpy 对音频进行 FFT。

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

它像泥土一样古老,但这篇文章可能会让你开始解决你所描述的问题(当然是 Python 中的文章)。

于 2009-08-20T00:19:31.283 回答
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 中:

from pylab import *
specgram(signal)

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

于 2009-09-02T16:15:24.650 回答
4
from pylab import *
specgram(signal)

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

subplot

但请注意:Matplotlib 非常慢,但它可以创建漂亮的图像。你不应该将它用于要求苛刻的动画,在处理 3D 时更是如此

于 2012-01-25T01:28:40.220 回答
2

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

于 2012-03-15T05:54:00.197 回答