我想wav
用巴特沃斯带通过滤一个文件。我尝试将wav
文件转换为fft
then 以应用带通滤波器,然后再将ifft
. 从图形上看,它似乎被过滤了一点,但是当我减少输入和输出wav
时,音频没有区别,就像过滤器不起作用一样。有错误吗?
# FFT - Fast Fourier Transform
frequency,data = wavfile.read('Input_sound.wav')
signalFFT = fft(data)
def butter_bandpass_filter(data, lowcut, highcut, frequency, order):
nyq = 0.5 * frequency
low = lowcut / nyq
high = highcut / nyq
b, a = butter(order, [low, high], btype='bandpass')
y = lfilter(b, a, data)
return y
funct=butter_bandpass_filter(signalFFT,2100,3400,44100,4)
filtered_sound=ifft(funct)
filtered_sound=sp.real(filtered_sound)
filtered_sound=sp.int16(filtered_sound/sp.absolute(filtered_sound).max()*32767)
wavfile.write('Filtered_ouput.wav',frequency,filtered_sound)