Please do not report this question as a duplicate, because none of the already available Solution working for me, I tested them all
So, I am trying to run a PyAudio sample Recording program in my RaspberryPi model B board, This is the error I am getting,
Traceback (most recent call last):
File "/home/pi/pyaudio/test/testing.py", line 23, in <module>
data = stream.read(chunk)
File "/usr/local/lib/python2.7/dist-packages/pyaudio.py", line 605, in read
return pa.read_stream(self._stream, num_frames)
IOError: [Errno Input overflowed] -9981
There are certain solutions already available that solved many user's problem, which in my case, isn't true.
Here is what I've tried,
First of all, Here is the code,
"""PyAudio example: Record a few seconds of audio and save to a WAVE file."""
import pyaudio
import wave
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")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
I have also tried if the current configuration is supported or not,
import pyaudio
p = pyaudio.PyAudio()
if p.is_format_supported(48000.0,
input_device=1,
input_channels=1,
input_format=pyaudio.paInt16):
print 'True!'
Both 44,000 and 44,100 are support but still I'm getting the same error again and again.
This is my USB Audio Card device info,
p.get_device_info_by_index(1)
{'defaultSampleRate': 44100.0,
'defaultLowOutputLatency': 0.011609977324263039,
'defaultLowInputLatency': 0.011609977324263039,
'maxInputChannels': 1L,
'structVersion': 2L,
'hostApi': 0L,
'index': 1,
'defaultHighOutputLatency': 0.046439909297052155,
'maxOutputChannels': 2L,
'name': u'Generic USB Audio Device: USB Audio (hw:1,0)',
'defaultHighInputLatency': 0.046439909297052155}
Does anybody has any idea as why I'm still getting the error ?
I just increased the chunk number and it appears that it works! here's my code
Did you try setting exception_on_overflow to False? From the Pyaudio documentation:
Read samples from the stream. Do not call when using non-blocking mode.
Parameters: num_frames – The number of frames to read. exception_on_overflow – Specifies whether an IOError exception should be thrown (or silently ignored) on input buffer overflow. Defaults to True. Raises IOError: if stream is not an input stream or if the read operation was unsuccessful. Return type:
string
Change your chunk parameter to 8192 instead of 1024. Worked for me. reference: IOError: [Errno Input overflowed] -9981