簡體   English   中英

巴特沃斯濾波器 python

[英]Butterworth filter python

我想用巴特沃斯帶通過濾一個wav文件。 我嘗試將wav文件轉換為fft然后應用帶通濾波器,然后應用ifft 從圖形上看,它似乎被過濾了一點,但是當我減少輸入和 output 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)

lfilter 文檔的example,好像不需要進行FFT,直接把data提供給filter。 然后就簡單多了

frequency,data = wavfile.read('Input_sound.wav')

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 

filtered_sound=butter_bandpass_filter(data,2100,3400,44100,4)
wavfile.write('Filtered_ouput.wav',frequency,filtered_sound)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM