我怎麼會去使用Python讀取從WAV PCM文件的頻率峯值,然後能夠產生它的一個形象,對頻譜圖分析?FFT的頻譜圖在Python
我試圖做一個程序,它可以讀取任何音頻文件,將其轉換爲WAV PCM,然後找到高峯和頻率截止。
我怎麼會去使用Python讀取從WAV PCM文件的頻率峯值,然後能夠產生它的一個形象,對頻譜圖分析?FFT的頻譜圖在Python
我試圖做一個程序,它可以讀取任何音頻文件,將其轉換爲WAV PCM,然後找到高峯和頻率截止。
Python's wave library會讓你輸入的音頻。之後,您可以use numpy to take an FFT的音頻。
然後,matplotlib使得非常漂亮的圖表和圖形 - 絕對媲美MATLAB。
這是舊如糞土,但this article很可能讓你開始幾乎正是你描述的(當然,在Python的文章)的問題。
加載WAV文件可以方便地使用audiolab:
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。
matplotlib也可以用命令'specgram'直接計算譜圖。 – tom10 2009-08-20 03:00:20
看起來像它將正是我所需要的。謝謝 :) – 2009-08-23 22:29:56