2011-12-19 7 views
10

Извиняется за вопрос новичков, но я пытаюсь запустить следующий код (пример из документации PyAudio) на своем Mac (OS 10.7.2):Geting IOError: [Errno Input overflowed] -9981 при настройке ввода и вывода PyAudio Stream на 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() 

ошибка, что я даю это:

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 

Я сделал поиск этой ошибки на Google и обнаружил, что либо сделать кусок больше или меньше, может помочь , Я попробовал это, и это не имело значения. Я также попытался добавить следующий код, чтобы поймать исключение перегрузки:

try: 
    data = stream.read(chunk) 
except IOError as ex: 
    if ex[1] != pyaudio.paInputOverflowed: 
     raise 
    data = '\x00' * chunk 

Это избежать ошибки, но вместо того, чтобы выводить свой аудиовход, я слышал кучу громких щелкающих.

Для устранения неполадок я прокомментировал вывод = True, и программа прошла нормально, но ничего не выводила. Я прокомментировал вход = True и прочитал в Wave-файле, и поток смог вывести аудио. Я попытался создать 2 потока, один для ввода и один для вывода, и это тоже не сработало.

Есть ли что-то еще, что я могу сделать, чтобы избежать этой ошибки?

Заранее спасибо.

+1

См http://stackoverflow.com/questions/33837097/pyaudio-recorder-script-ioerror-errno-input-overflowed-9981/34021599#34021599 – am70

ответ

1

я столкнулся с такой же ситуацией, когда я вручную установить pyaudio (встроенный Portaudio от источника), не столь идеальным решением является скачать pyaudio для Apple Mac OS X (Universal) его установки, которая установит его только для Python 2.6 и предыдущей версии , , если вы запустите свой код с помощью /usr/bin/python2.6, то все готово. , но если вы действительно хотите 2.7, скопируйте установленный модуль (pyaudio.py, _portaudio.so) в папку 2.7 /Library/Python/2.7/site-packages/.

Я не знаю, почему он не работает, строя модуль из источника.

0

В portaudio произошла ошибка, которая до недавнего времени вызывала много ошибок ложного переполнения в OS X (см. http://music.columbia.edu/pipermail/portaudio/2012-June/014167.html).

Я подтвердил, что ежедневный снимок portaudio с 2012-08-06 исправляет ошибку.

+0

я самая последняя Portaudio (версия 19.20111121_4) вместе с PY27 -pyaudio 0.2.7_0, и я все равно получаю эту ошибку независимо от того, как я пытаюсь изменить размер куска. Я использую mac os x 1.7.5 с python 2.7, вы можете поделиться больше информации о том, как вы получили этот снимок для порталов, чтобы работать, если вы используете id? – samkhan13

+0

хорошо, это длинный снимок с тех пор, как старый, но мне тоже было бы интересно узнать ... – lollercoaster