Przepraszam za pytanie o newbie, ale próbuję uruchomić poniższy kod (przykład z dokumentacji PyAudio) na moim Macu (OS 10.7.2):Odczyt IOError: [Przepełnione wejście Errno] -9981 podczas ustawiania wejścia i wyjścia PyAudio Stream na True
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()
błąd, który daję jest:
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
zrobiłem poszukiwanie tego błędu w Google i okazało się, że albo czyniąc kawałek większe lub mniejsze może pomóc . Próbowałem tego i nie robiło to różnicy. Próbowałem również dodanie w poniższym kodzie złapać wyjątek przeciążeniem:
try:
data = stream.read(chunk)
except IOError as ex:
if ex[1] != pyaudio.paInputOverflowed:
raise
data = '\x00' * chunk
Że uniknąć błędu, ale zamiast wyprowadzania moje wejście audio, słyszałem kilka głośne kliknięcie.
Aby rozwiązać problem, zakomentowałem wyjście output = True line, a program działał poprawnie, ale nic nie wyświetlił. Skomentowałem input = True i zamiast tego odczytałem plik Wave, a strumień był w stanie wyprowadzić dźwięk. Próbowałem utworzyć 2 strumienie, jeden dla wejścia i jeden dla wyjścia, który też nie działał.
Czy jest coś jeszcze, co mogę zrobić, aby uniknąć tego błędu?
Z góry dziękuję.
Zobacz http://stackoverflow.com/questions/33837097/pyaudio-recorder-script-ioerror-errno-input-overflowed-9981/34021599#34021599 – am70