質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

3391閲覧

python NameError: name 'signal' is not defined の解決

SR15_6PRO

総合スコア24

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/08/20 09:25

編集2019/08/20 09:38

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の定義づけをしなければならないようですが、いろいろ調べてもなにをどうすればよいのかわかりません。どなたかわかりましたらご教示ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

自己解決

python

1import scipy.signal 2import scipy.fftpack 3import scipy.fftpack.realtransforms

上記のコードを先頭に入力したところ、ひとまずエラーはなくなりました。
ありがとうございました。

投稿2019/08/21 20:38

SR15_6PRO

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

参考にしたサイトってのをちらっとのぞいてみましたが、内容の説明に入る前のところにgithubへのリンクがあって、そこに完成版と思われるソースがありました。

よくある話ですが、そのサイトにある説明は、その完成版のソースを見ながら読んでもらうことを意図していると思われ、記事にあるコードをつないだだけでは動かないということになります。

投稿2019/08/20 10:35

TakaiY

総合スコア12745

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

「signal = preEmphasis(signal, p)」の関数の実引数の「signal」が定義されていないようです。

投稿2019/08/20 10:04

meg_

総合スコア10579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2019/08/20 10:08

参考サイトはサンプルコードなので、別途signalを定義する必要があります。
guest

0

signalという名前が定義されてない、というエラーですな。
そこんところ見直してみては。

そこで使ってるsignalという変数はどこで定義してますか?

投稿2019/08/20 09:28

編集2019/08/20 09:33
y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SR15_6PRO

2019/08/20 09:39

参考にしたサイトでは定義づけがされていないように見えるのですが、何が違うのでしょうか、、、?
y_waiwai

2019/08/20 09:42

その参考にしたサイトってのは読んでませんが、それが間違ってるってこともあるかと
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問