2011-12-19 10 views
10

Disculpas por la pregunta de novato, pero estoy tratando de ejecutar el siguiente código (un ejemplo de la documentación de PyAudio) en mi Mac (OS 10.7.2):Obteniendo IOError: [Entrada de Errno desbordada] -9981 al configurar la entrada y salida de PyAudio Stream a 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() 

el error que estoy dando es:

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 

hice una búsqueda de este error en Google y encontré que, o bien haciendo que el trozo más grande o más pequeña podría ayudar . Intenté esto y no hizo ninguna diferencia. También he intentado añadir en el código siguiente para capturar una excepción sobrecarga:

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

Eso evita el error, pero en lugar de la salida de audio de la entrada de mi, he oído un montón de ruido de clic.

Para solucionar los problemas, comenté la salida = línea verdadera y el programa funcionó bien, pero no produjo nada. Comenté la entrada = True y leí en un archivo Wave en su lugar y la transmisión fue capaz de reproducir el audio. Traté de crear 2 secuencias, una para entrada y otra para salida, y eso tampoco funcionó.

¿Hay algo más que pueda hacer para evitar este error?

Gracias de antemano.

+1

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

Respuesta

1

corro en la misma situación cuando instalo manualmente pyaudio (PortAudio construido a partir de la fuente), una solución no tan perfecta es descargar el pyaudio para Apple Mac OS X (Universal) instalarlo, que sólo lo instalará para Python 2.6 y versiones anteriores . si ejecuta su código con /usr/bin/python2.6, entonces ha terminado. pero si realmente quiere 2.7, copie el módulo instalado (pyaudio.py, _portaudio.so) en la carpeta 2.7 /Library/Python/2.7/site-packages/.

no sé por qué no funciona la construcción del módulo desde la fuente.

0

Hubo un error en el portaudio que hasta muy recientemente causó muchos errores de desbordamiento falsos en OS X (vea http://music.columbia.edu/pipermail/portaudio/2012-June/014167.html).

He confirmado que la instantánea diaria de portaudio a partir de 2012-08-06 corrige el error.

+0

tengo la última PortAudio (versión 19.20111121_4) junto con py27 -pyaudio 0.2.7_0 y sigo teniendo este error sin importar cómo trato de cambiar el tamaño del fragmento. Estoy usando mac os x 1.7.5 con Python 2.7, ¿puedes compartir más información sobre cómo conseguiste que la instantánea diaria de portaudio funcionara, si tu id? – samkhan13

+0

bueno esto es un tiro largo desde tan viejo, pero me gustaría saber también ... – lollercoaster

Cuestiones relacionadas