【发布时间】:2010-11-21 03:47:54
【问题描述】:
如何使用 Python 从 WAV PCM 文件中读取频率峰值,然后生成它的图像以进行频谱图分析?
我正在尝试制作一个程序,让您可以读取任何音频文件,将其转换为 WAV PCM,然后找到峰值和频率截止。
【问题讨论】:
标签: python image graphics audio fft
如何使用 Python 从 WAV PCM 文件中读取频率峰值,然后生成它的图像以进行频谱图分析?
我正在尝试制作一个程序,让您可以读取任何音频文件,将其转换为 WAV PCM,然后找到峰值和频率截止。
【问题讨论】:
标签: python image graphics audio fft
Python's wave library 将允许您导入音频。之后就可以use numpy to take an FFT的音频了。
然后,matplotlib 制作了非常漂亮的图表 - 绝对可以与 MATLAB 媲美。
它像泥土一样古老,但this article 可能会让您开始解决您所描述的问题(当然是 Python 中的文章)。
【讨论】:
specgram计算谱图。
使用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 的一部分。 Here's a better example.
【讨论】:
from pylab import *
specgram(signal)
是最简单的。在这种情况下也很方便:
subplot
但请注意:Matplotlib 非常慢,但它可以创建漂亮的图像。你不应该将它用于要求苛刻的动画,在处理 3D 时更不用说
【讨论】:
如果您需要从 PCM 格式转换为整数,则需要使用 struct.unpack。
【讨论】: