https://watlab-blog.com/2019/04/30/scipy-lowpass/のページを参考にさせていただき、
音データにローパスフィルタをかけたいと思っています。
同じように2つファイルを作成しましたが、
main_filterを実行したところ、下記のようなエラーが発生しています。
お手数おかけいたしますが、ご教示いただけると助かります。
また、音データにpythonでローパスフィルタをかける方法で他の方法をご存じの方がいらっしゃいましたら
ご助言いただけると幸いです。
よろしくお願いいたします。
main_filter.ipynb↓
from future import print_function
import filter_function
import numpy as np
from matplotlib import pyplot as plt
import os
print(os.getcwd())
samplerate = 48000 #波形のサンプリングレート
ファイル読込
os.chdir(r'C:\file')
data = ('sample.wav')
fp = 1000 #通過域端周波数[Hz]
fs = 945.6 #阻止域端周波数[Hz]
gpass = 0.1 #通過域端最大損失[dB]
gstop = -300 #阻止域端最小損失[dB]
data_filt = filter_function.lowpass(data, samplerate, fp, fs, gpass, gstop)
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-2-a4b4d2e7480a> in <module>()
1 from future import print_function
----> 2 import filter_function
3 import numpy as np
4 from matplotlib import pyplot as plt
5 import os
ModuleNotFoundError: No module named 'filter_function'
filter_function.ipynb↓
import numpy as np
from scipy import signal
#バターワースフィルタ(ローパス)
def lowpass(data, samplerate, fp, fs, gpass, gstop):
fn = samplerate / 2 #ナイキスト周波数
wp = fp / fn #ナイキスト周波数で通過域端周波数を正規化
ws = fs / fn #ナイキスト周波数で阻止域端周波数を正規化
N, Wn = signal.buttord(wp, ws, gpass, gstop) #オーダーとバターワースの正規化周波数を計算
b, a = signal.butter(N, Wn, "low") #フィルタ伝達関数の分子と分母を計算
y = signal.filtfilt(b, a, x) #信号に対してフィルタをかける
return y

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/26 01:18
2020/02/26 05:20
2020/02/26 08:40
2020/02/27 01:24
2020/02/27 04:32
2020/03/02 01:38