4

オーディオのストリームからサンプルを取得して、共有キューに入れようとしています。このキューから取得する別のプロセスがあります。

実行すると、次のエラーが表示されます。

* recording
Traceback (most recent call last):
  File "record.py", line 43, in <module>
    data = stream.read(CHUNK)
  File "/Library/Python/2.7/site-packages/pyaudio.py", line 605, in read
    return pa.read_stream(self._stream, num_frames)
IOError: [Errno Input overflowed] -9981

編集:どうやら問題は解決策が投稿されていない状態でしばらくの間存在していたようです(私は彼らの提案を試しました):

(簡略化された)コードは次のとおりです。

import pyaudio
import wave
import array
import time
from multiprocessing import Queue, Process

CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 2

p = pyaudio.PyAudio()
left = Queue()
right = Queue()

def other(q1, q2):
    while True: 
        try:
                a = q1.get(False)
        except Exception:
            pass

        try:
                b = q2.get(False)
        except Exception:
            pass

stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)

print("* recording")
Process(target=other, args=(left, right)).start()

for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
    data = stream.read(CHUNK)
    byte_string = ''.join(data)
    nums = array.array('h', byte_string)
    for elt in nums[1::2]:
        left.put(elt)
    for elt in nums[0::2]:
        right.put(elt)

print("* done recording")

stream.stop_stream()
stream.close()
print "terminated"

私は何を間違っていますか?私はMac OSXとPython 2.7を使用しています.`pyaudioのインストールとdmgインストールの両方を試してみましたportaudioが、どちらもうまくいきませんでした.homebrewpip

4

1 に答える 1