NameError: name 'signal' is not defined というエラーを解消したいです。
上記のサイトを参考に「音声信号」項までは下記のコードで動作させることができました。
python
1#coding:utf-8 2import wave 3import numpy as np 4from pylab import * 5 6def wavread(filename): 7 wf = wave.open(filename, "r") 8 fs = wf.getframerate() 9 x = wf.readframes(wf.getnframes()) 10 x = np.frombuffer(x, dtype="int16") / 32768.0 # (-1, 1)に正規化 11 wf.close() 12 return x, float(fs) 13 14if __name__ == "__main__": 15# 音声をロード 16 wav, fs = wavread("a.wav") 17t = np.arange(0.0, len(wav) / fs, 1/fs) 18 19# 音声波形の中心部分を切り出す 20center = len(wav) / 2 # 中心のサンプル番号 21cuttime = 0.04 # 切り出す長さ [s] 22z = center-cuttime / 2*fs 23q = center + cuttime / 2*fs 24wavdata = wav[int(z):int(q)] 25time = t[int(z):int(q)] 26 27# 波形をプロット 28plot(time * 1000, wavdata) 29xlabel("time [ms]") 30ylabel("amplitude") 31savefig("waveform.png") 32show()
途中、# 音声波形の中心部分を切り出す の箇所でzとqをint型に変更しています。
問題はその次の「プリエンファシスフィルタ」項です。
python
1#http://aidiary.hatenablog.com/entry/20120225/1330179868 2 3#coding:utf-8 4import wave 5import numpy as np 6from pylab import * 7 8def wavread(filename): 9 wf = wave.open(filename, "r") 10 fs = wf.getframerate() 11 x = wf.readframes(wf.getnframes()) 12 x = np.frombuffer(x, dtype="int16") / 32768.0 # (-1, 1)に正規化 13 wf.close() 14 return x, float(fs) 15 16if __name__ == "__main__": 17# 音声をロード 18 wav, fs = wavread("a.wav") 19t = np.arange(0.0, len(wav) / fs, 1/fs) 20 21# 音声波形の中心部分を切り出す 22center = len(wav) / 2 # 中心のサンプル番号 23cuttime = 0.04 # 切り出す長さ [s] 24z = center-cuttime / 2*fs 25q = center + cuttime / 2*fs 26wavdata = wav[int(z):int(q)] 27time = t[int(z):int(q)] 28 29# 波形をプロット 30plot(time * 1000, wavdata) 31xlabel("time [ms]") 32ylabel("amplitude") 33savefig("waveform.png") 34show() 35 36#プリエンファシスフィルタ 37import scipy.signal 38 39def preEmphasis(signal, p): 40 """プリエンファシスフィルタ""" 41 # 係数 (1.0, -p) のFIRフィルタを作成 42 return scipy.signal.lfilter([1.0, -p], 1, signal) 43 44# プリエンファシスフィルタをかける 45p = 0.97 # プリエンファシス係数 46signal = preEmphasis(signal, p)
#プリエンファシスフィルタ以下を追加して実行すると、
python
1NameError Traceback (most recent call last) 2<ipython-input-39-56c5b59c4335> in <module> 3 44 # プリエンファシスフィルタをかける 4 45 p = 0.97 # プリエンファシス係数 5---> 46 signal = preEmphasis(signal, p) 6 7NameError: name 'signal' is not defined
というエラーが発生します。
signalの定義づけをしなければならないようですが、いろいろ調べてもなにをどうすればよいのかわかりません。どなたかわかりましたらご教示ください。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。