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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Python 3.x

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

Q&A

解決済

1回答

2585閲覧

pyaudioのinput overflow

sibazyun

総合スコア18

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Python 3.x

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

0グッド

0クリップ

投稿2019/07/10 10:09

編集2019/07/16 15:42

前提・実現したいこと

Python3でリアルタイムスペクトルアナライザを作ろうと思い、pyoudioを使い、ネットにあったコードを参考に以下のコードを書いたのですが以下のようなエラーが起きてしまい困っています。どなたかアドバイスを頂けると助かります。
Visual Studio Codeを使っています。

発生している問題・エラーメッセージ

[Running] python -u "/Users/matsumura/Documents/python/sound/realtimeFFT/realtime FFT.py" Traceback (most recent call last): File "/Users/matsumura/Documents/python/sound/realtimeFFT/realtime FFT.py", line 41, in update self.data = np.append(self.data, self.AudioInput()) File "/Users/matsumura/Documents/python/sound/realtimeFFT/realtime FFT.py", line 50, in AudioInput ret = self.stream.read(self.CHUNK) # 音声の読み取り(バイナリ) CHUNKが大きいとここで時間かかる File "/anaconda3/lib/python3.7/site-packages/pyaudio.py", line 608, in read return pa.read_stream(self._stream, num_frames, exception_on_overflow) OSError: [Errno -9981] Input overflowed

該当のソースコード

python

1プロット関係のライブラリ 2import pyqtgraph as pg 3from pyqtgraph.Qt import QtCore, QtGui 4import numpy as np 5import sys 6 7#音声関係のライブラリ 8import pyaudio 9import struct 10 11 12class PlotWindow: 13 def __init__(self): 14 #マイクインプット設定 15 self.CHUNK =1024 # 1度に読み取る音声のデータ幅 16 self.RATE = 44100 # サンプリング周波数 17 self.update_seconds = 50 # 更新時間[ms] 18 self.audio = pyaudio.PyAudio() 19 self.stream = self.audio.open(format=pyaudio.paInt16, 20 channels=1, 21 rate=self.RATE, 22 input=True, 23 frames_per_buffer=self.CHUNK) 24 25 #音声データの格納場所(プロットデータ) 26 self.data = np.zeros(self.CHUNK) 27 self.axis = np.fft.fftfreq(len(self.data), d=1.0/self.RATE) 28 29 #プロット初期設定 30 self.win = pg.GraphicsWindow() 31 self.win.setWindowTitle("SpectrumAnalyzer") 32 self.plt = self.win.addPlot() # プロットのビジュアル関係 33 self.plt.setYRange(0, 30) # y軸の制限 34 35 #アップデート時間設定 36 self.timer = QtCore.QTimer() 37 self.timer.timeout.connect(self.update) 38 self.timer.start(self.update_seconds) # 10msごとにupdateを呼び出し 39 40 def update(self): 41 self.data = np.append(self.data, self.AudioInput()) 42 if len(self.data)/1024 > 10: 43 self.data = self.data[1024:] 44 self.fft_data = self.FFT_AMP(self.data) 45 self.axis = np.fft.fftfreq(len(self.data), d=1.0/self.RATE) 46 # symbol="o", symbolPen="y", symbolBrush="b") 47 self.plt.plot(x=self.axis, y=self.fft_data, clear=True, pen="y") 48 49 def AudioInput(self): 50 ret = self.stream.read(self.CHUNK) # 音声の読み取り(バイナリ) CHUNKが大きいとここで時間かかる 51 #バイナリ → 数値(int16)に変換 52 #32768.0=2^16で割ってるのは正規化(絶対値を1以下にすること) 53 ret = np.frombuffer(ret, dtype="int16")/32768.0 54 return ret 55 56 def FFT_AMP(self, data): 57 data = np.hamming(len(data))*data 58 data = np.fft.fft(data) 59 data = np.abs(data) 60 return data 61 62 63if __name__ == "__main__": 64 plotwin = PlotWindow() 65 if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'): 66 QtGui.QApplication.instance().exec_() 67

試したこと

chunkやrateは色々いじったのですがどうもうまくいきませんでした、、、

補足情報(FW/ツールのバージョンなど)

pycharmを使っています
最近プログラミングを始めたのでよくわかっていないことだらけで
見当違いのことをしているかもしれないですがよろしくお願いします、、、

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

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

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

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

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

guest

回答1

0

ベストアンサー

608行目ではいらないよーってエラーなんですねこれ。
CHUNKをでっかくすれば動くと思いますよ。もしくはサンプリングをすごく短くするといいです。
頑張ってください

python

1self.CHUNK =2048 # 1度に読み取る音声のデータ幅 2 self.RATE = 44100 # サンプリング周波数 3

投稿2019/07/17 01:53

mo-ri

総合スコア35

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

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

sibazyun

2019/07/18 23:52

うまく動きました!!!ありがとうございました!!
mo-ri

2019/07/19 01:43

最初は難しいと思いますが、エラーコードを読んでググれるようになるとさらに開発スピードあっぷしますよー
sibazyun

2019/07/19 05:08

アドバイスありがとうございます!検索力をつけて学習していきます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問