29 lines
831 B
Python
29 lines
831 B
Python
from scipy.signal import lfilter, butter
|
|
from scipy.io.wavfile import read, write
|
|
from numpy import array, int16
|
|
import sys
|
|
|
|
|
|
def butter_params(low_freq, high_freq, fs, order=5):
|
|
nyq = 0.5 * fs
|
|
low = low_freq / nyq
|
|
high = high_freq / nyq
|
|
b, a = butter(order, [low, high], btype="band")
|
|
return b, a
|
|
|
|
|
|
def butter_bandpass_filter(data, low_freq, high_freq, fs, order=5):
|
|
b, a = butter_params(low_freq, high_freq, fs, order=order)
|
|
y = lfilter(b, a, data)
|
|
return y
|
|
|
|
|
|
if __name__ == "__main__":
|
|
fs, audio = read(sys.argv[1])
|
|
import pdb; pdb.set_trace()
|
|
low_freq = 300.0
|
|
high_freq = 4000.0
|
|
filtered_signal = butter_bandpass_filter(audio, low_freq, high_freq, fs, order=6)
|
|
fname = sys.argv[1].split(".wav")[0] + "_moded.wav"
|
|
write(fname, fs, array(filtered_signal, dtype=int16))
|