音頻處理對我來說是非常新穎的。目前正在使用Python Numpy來處理wave文件。計算FFT矩陣後,我得到了不存在頻率的噪聲功率值。我對可視化數據感興趣,準確性不是高優先級。有沒有一種安全的方法來計算削波值以去除這些值,還是應該使用每個樣本集的所有FFT矩陣來計算平均值?剪切FFT矩陣
問候
編輯:
from numpy import *
import wave
import pymedia.audio.sound as sound
import time, struct
from pylab import ion, plot, draw, show
fp = wave.open("500-200f.wav", "rb")
sample_rate = fp.getframerate()
total_num_samps = fp.getnframes()
fft_length = 2048.
num_fft = (total_num_samps/fft_length) - 2
temp = zeros((num_fft,fft_length), float)
for i in range(num_fft):
tempb = fp.readframes(fft_length);
data = struct.unpack("%dH"%(fft_length), tempb)
temp[i,:] = array(data, short)
pts = fft_length/2+1
data = (abs(fft.rfft(temp, fft_length))/(pts))[:pts]
x_axis = arange(pts)*sample_rate*.5/pts
spec_range = pts
plot(x_axis, data[0])
show()
以下是在非對數標度的曲線圖,對於包含500HZ(淡出)+ 200Hz的使用GOLDWAVE正弦波創建合成的波形文件。
您是否使用已知良好的FFT輸出驗證了您的輸出? (matlab或fftw將是很好的來源)。另外,嘗試輸入純色調即以已知頻率出現的正弦波,並驗證您的輸出是否有不同的fft尺寸。 – basszero 2009-06-01 00:18:56