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

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

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

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

Python

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

解決済

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

SR15_6PRO
SR15_6PRO

総合スコア24

Python 3.x

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

Python

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

4回答

0グッド

0クリップ

2328閲覧

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

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答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

総合スコア10391

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

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

投稿2019/08/20 10:04

meg_

総合スコア9731

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

meg_

2019/08/20 10:08

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

0

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

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

投稿2019/08/20 09:28

編集2019/08/20 09:33
y_waiwai

総合スコア85997

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

2019/08/20 09:35

こちらの回答が他のユーザーから「過去の低評価」という指摘を受けました。

回答へのコメント

SR15_6PRO

2019/08/20 09:39

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

2019/08/20 09:42

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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

Python

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