Ich versuche, den folgenden Code (ein Beispiel aus der PyAudio-Dokumentation) auf meinem Mac (OS 10.7.2) auszuführen:
import pyaudio
import sys
chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
p = pyaudio.PyAudio()
stream = p.open(format = FORMAT,
channels = CHANNELS,
rate = RATE,
input = True,
output = True,
frames_per_buffer = chunk)
print "* recording"
for i in range(0, 44100 / chunk * RECORD_SECONDS):
data = stream.read(chunk)
stream.write(data, chunk)
print "* done"
stream.stop_stream()
stream.close()
p.terminate()
Die Fehlermeldung, die ich gebe, lautet:
Traceback (most recent call last):
File "PyAudioExample.py", line 24, in <module>
data = stream.read(chunk)
File "/Library/Python/2.7/site-packages/pyaudio.py", line 564, in read
return pa.read_stream(self._stream, num_frames)
IOError: [Errno Input overflowed] -9981
Ich habe bei Google nach diesem Fehler gesucht und herausgefunden, dass es helfen könnte, wenn man das Stückchen größer oder kleiner macht. Ich habe das ausprobiert und es hat keinen Unterschied gemacht. Ich habe auch versucht, den folgenden Code einzufügen, um eine Überlastungsausnahme abzufangen:
try:
data = stream.read(chunk)
except IOError as ex:
if ex[1] != pyaudio.paInputOverflowed:
raise
data = '\x00' * chunk
Dadurch wurde der Fehler zwar vermieden, aber statt der Ausgabe meines Eingangssignals hörte ich ein lautes Klicken.
Zur Fehlersuche habe ich die Zeile output=True auskommentiert, und das Programm lief gut, gab aber nichts aus. Ich habe die input=True-Zeile auskommentiert und stattdessen eine Wave-Datei eingelesen, und der Stream konnte den Ton ausgeben. Ich habe versucht, 2 Streams zu erstellen, einen für die Eingabe und einen für die Ausgabe, aber auch das hat nicht funktioniert.
Gibt es noch etwas, das ich tun kann, um diesen Fehler zu vermeiden?