2011-12-19 33 views
10

Xin lỗi cho câu hỏi newbie, nhưng tôi đang cố gắng để chạy đoạn mã sau (một ví dụ từ các tài liệu PyAudio) trên máy Mac của tôi (OS 10.7.2):geting IOError: [Errno Input tràn] -9981 khi thiết PyAudio Suối đầu vào và đầu ra là 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() 

các lỗi mà tôi đưa ra là:

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 

tôi đã làm một tìm kiếm lỗi này trên Google và phát hiện ra rằng một trong hai làm cho đoạn lớn hơn hoặc nhỏ hơn có thể giúp . Tôi đã thử điều này và nó không có sự khác biệt. Tôi cũng đã thử thêm mã sau để bắt ngoại lệ quá tải:

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

Điều đó tránh được lỗi, nhưng thay vì xuất âm thanh đầu vào, tôi nghe thấy một tiếng nhấp lớn.

Để khắc phục sự cố, tôi nhận xét ra đầu ra = True dòng và chương trình chạy tốt, nhưng không bất cứ điều gì đầu ra. Tôi nhận xét ra đầu vào = True và đọc trong một tập tin Wave thay vào đó và dòng đã có thể sản lượng âm thanh. Tôi đã thử tạo 2 luồng, một cho đầu vào và một cho đầu ra, và điều đó không hoạt động.

Có điều gì khác mà tôi có thể làm để tránh lỗi này không?

Xin cảm ơn trước.

+1

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

Trả lời

1

tôi chạy vào tình cảnh tương tự khi tôi tự cài đặt pyaudio (được xây dựng portaudio từ nguồn), một workaround không quá hoàn hảo là để tải về pyaudio cho Apple Mac OS X (Universal) cài đặt nó, mà sẽ chỉ cài đặt nó cho python 2.6 và phiên bản trước . nếu bạn chạy mã của mình bằng /usr/bin/python2.6, thì bạn đã hoàn tất. nhưng nếu bạn thực sự muốn 2.7, hãy sao chép mô-đun đã cài đặt (pyaudio.py, _portaudio.so) vào thư mục 2.7 /Library/Python/2.7/site-packages/.

i donnot biết tại sao nó không hoạt động xây dựng các mô-đun từ nguồn.

0

Có một lỗi trong portaudio rằng cho đến rất gần đây gây ra nhiều lỗi tràn giả mạo trong OS X (xem http://music.columbia.edu/pipermail/portaudio/2012-June/014167.html).

Tôi đã xác nhận rằng ảnh chụp hàng ngày portaudio như của 2012/08/06 sửa lỗi.

+0

tôi có phiên bản mới nhất (phiên bản 19.20111121_4) cùng với py27 -pyaudio 0.2.7_0 và tôi vẫn nhận được lỗi này không có vấn đề làm thế nào tôi cố gắng để thay đổi kích thước chunk. Tôi đang sử dụng mac os x 1.7.5 với python 2.7, bạn có thể chia sẻ thêm thông tin về cách bạn nhận được rằng ảnh chụp nhanh hàng ngày portaudio để làm việc, nếu bạn id? – samkhan13

+0

đây là một ảnh dài kể từ khi cũ, nhưng tôi cũng tò mò muốn biết ... – lollercoaster