Próbuję renderować w czasie rzeczywistym dźwięk w python. Muszę zdobyć kawałki z mojego mikrofonu.Przepełnienie wejścia PyAudio
Korzystanie PyAudio, spróbuj użyć
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()
Po, ja coraz followin błąd:
* 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
nie mogę zrozumieć tego bufora. Chcę, aby użyć trybu blokowania IO, więc jeśli porcje nie są dostępne, chcę poczekać na te porcje. Ale kiedy tworzę spróbuj z wyjątkiem segmentu lub snu (0.1), słyszę kliknięcia, więc nie jest to to, czego chcę.
Proszę zaproponować najlepsze rozwiązanie dla mojego ploblem?
Być może twój rozmiar kawałek jest zbyt mała. Może dostaje więcej danych w buforze, niż wyciągasz, ponieważ rozmiar kawałka jest na tyle mały, że kod Pythona nie nadąża. – Demolishun
Witam. Zastanawiasz się, czy są jakieś aktualizacje dotyczące tego problemu? Otrzymuję sporadycznie błąd "[Errno Input overflowed] -9981'. Sprawdziłem "p.is_format_supported" jest prawdziwe dla formatu, którego używam. –