Ich versuche Echtzeit-Plotten Sound in Python zu machen. Ich muss Stücke von meinem Mikrofon bekommen.PyAudio Eingang übergelaufen
PyAudio, versuchen
import pyaudio
import wave
import sys
chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"
p = pyaudio.PyAudio()
stream = p.open(format = FORMAT,
channels = CHANNELS,
rate = RATE,
input = True,
frames_per_buffer = chunk)
print "* recording"
all = []
for i in range(0, RATE/chunk * RECORD_SECONDS):
data = stream.read(chunk)
all.append(data)
print "* done recording"
stream.close()
p.terminate()
Nach verwenden, ich habe die followin Fehler bekommen:
* recording
Traceback (most recent call last):
File "gg.py", line 23, in <module>
data = stream.read(chunk)
File "/usr/lib64/python2.7/site-packages/pyaudio.py", line 564, in read
return pa.read_stream(self._stream, num_frames)
IOError: [Errno Input overflowed] -9981
Ich kann nicht diesen Puffer verstehen. Ich möchte, blockierenden IO-Modus zu verwenden, also wenn Chunks nicht verfügbar sind, möchte ich auf diese Chunks warten. Aber wenn ich versuche, außer Segment oder Schlaf (0,1), ich höre Klicks, so ist dies nicht das, was ich will.
Bitte schlagen Sie die beste Lösung für mein Ploblem vor?
Vielleicht ist Ihr Chunkgröße zu klein ist. Vielleicht erhält es mehr Daten im Puffer, als Sie herausziehen, weil die Chunk-Größe klein genug ist, dass der Python-Code nicht mithalten kann. – Demolishun
Hallo. Frage mich nur, ob es Updates zu diesem Thema gibt? Ich bekomme den Fehler "[Errno Input overflowed] -9981" intermittierend. Ich habe überprüft, dass "p.is_format_supported" für das verwendete Format zutrifft. –