【发布时间】:2009-05-31 23:15:35
【问题描述】:
音频处理对我来说相当新。目前使用 Python Numpy 处理波形文件。在计算 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()
这是使用 Goldwave 创建的包含 500hz(淡出)+ 200hz 正弦波的合成波文件的非对数比例图。
【问题讨论】:
-
您是否已通过已知良好的 FFT 输出验证了您的输出? (matlab 或 fftw 将是很好的来源)。此外,尝试输入纯音,即已知频率的正弦波,并验证您的输出是否具有不同的 fft 大小。
标签: python audio signal-processing fft