との録音音声は、私が唯一のボタンがあり、簡単なGUIアプリケーションをやろうとしています。例外IOError入力がオーバーフロー:<em>録音</em>:Tkinterのインターフェース
ボタンを押すと、録音が開始されます。ボタンを放すと録音が停止し、録音が保存されます。私はは(彼らはhereを与えるのコード例)ボタンとTkinterのない単純なオーディオを録音に問題を持っていないしかし
Traceback (most recent call last):
...
data = self.stream.read(self.CHUNK)
File (...), line 608, in read
return pa.read_stream(self._stream, num_frames, exception_on_overflow)
IOError: [Errno -9981] Input overflowed
Exception in Tkinter callback
:私はボタンをクリックしたときに
はしかし、私は次のエラーを取得します。
これはコードです:
import Tkinter as tk
import pyaudio, wave
class AppRecording:
def __init__(self, root):
self.root = root
self.mouse_pressed = False
recordingButton = tk.Button(root, text = "Record")
recordingButton.pack()
recordingButton.bind("<ButtonPress-1>", self.OnMouseDown)
recordingButton.bind("<ButtonRelease-1>", self.OnMouseUp)
self.CHUNK = 1024
self.FORMAT = pyaudio.paInt16
self.CHANNELS = 2
self.RATE = 44100
self.WAVE_OUTPUT_FILENAME = "output.wav"
self.p = pyaudio.PyAudio()
try: self.stream = self.p.open(format=self.FORMAT,
channels=self.CHANNELS,
rate=self.RATE,
input=True,
frames_per_buffer=self.CHUNK)
except:
raise Exception("There is no connected microphone. Check that you connect to the left hole if you have a PC.")
return None
self.frames = []
def recordFrame(self):
try:
data = self.stream.read(self.CHUNK)
print "after try"
except IOError as ex:
print "inside except"
if ex[1] != pyaudio.paInputOverflowed:
print "before raise"
raise
print "after raise"
data = '\x00' * self.CHUNK # or however you choose to handle it, e.g. return None
self.frames.append(data)
def finishRecording(self):
self.stream.stop_stream()
self.stream.close()
self.p.terminate()
wf = wave.open(self.WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(self.CHANNELS)
wf.setsampwidth(self.p.get_sample_size(self.FORMAT))
wf.setframerate(self.RATE)
wf.writeframes(b''.join(self.frames))
wf.close()
def OnMouseDown(self, event):
self.mouse_pressed = True
self.poll()
def OnMouseUp(self, event):
self.root.after_cancel(self.after_id)
print "Finished recording!"
self.finishRecording()
def poll(self):
if self.mouse_pressed:
self.recordFrame()
self.after_id = self.root.after(1, self.poll)
root=tk.Tk()
app = AppRecording(root)
root.mainloop()
私はself.CHUNK
とself.RATE
を変更しようとしました。私のiMacの内蔵マイクは、速度が44100だと言っています。いくつかの場所では、チャンクやレートの値を変更する必要があると私は読んだが、誰も助けなかった。 0.2.10
pyaudio.get_portaudio_version()
:1246720
pyaudio.get_portaudio_version_text()
:PortAudio V19.6.0-develの、改正396fe4b6699ae929d3a685b3ef8a7e97396139a4
Tkinter.__version__
:$もう一つの場所はexcept IOError as ex: (...)
PyAudioバージョンを追加するために私に言いましたリビジョン:81008 $
ご協力いただきありがとうございます。
レコーディングを実行すると、 're-recall'のためにいくつかの要素/機能を無効にします。 '__init__'はデバイスと他の関数呼び出しを呼び出します。後で 'self.stream = None'(関数の下で)' self.stream = self.p.open(format = self.FORMAT、.............. ' 。?すべてのプロセスに – dsgdfg
@dsgdfgは、あなたがより良い説明することができます私はこの問題を解決する方法を得ることはありません –