The code below is what I use to record audio until the "Enter" key is pressed it returns an exception,
import pyaudio import wave import curses from time import gmtime, strftime import sys, select, os # Name of sub-directory where WAVE files are placed current_experiment_path = os.path.dirname(os.path.realpath(__file__)) subdir_recording = '/recording/' # print current_experiment_path + subdir_recording # Variables for Pyaudio chunk = 1024 format = pyaudio.paInt16 channels = 2 rate = 48000 # Set variable for the labelling of the recorded WAVE file. timestamp = strftime("%Y-%m-%d-%H:%M:%S", gmtime()) #wave_output_filename = '%s.wav' % self.get('subject_nr') wave_output_filename = '%s.wav' % timestamp print current_experiment_path + subdir_recording + wave_output_filename # pyaudio recording stuff p = pyaudio.PyAudio() stream = p.open(format = format, channels = channels, rate = rate, input = True, frames_per_buffer = chunk) print "* recording" # Create an empty list for audio recording frames = [] # Record audio until Enter is pressed i = 0 while True: os.system('cls' if os.name == 'nt' else 'clear') print "Recording Audio. Press Enter to stop recording and save file in " + wave_output_filename print i if sys.stdin in select.select([sys.stdin], [], [], 0)[0]: line = raw_input() # Record data audio data data = stream.read(chunk) # Add the data to a buffer (a list of chunks) frames.append(data) break i += 1 print("* done recording") # Close the audio recording stream stream.stop_stream() stream.close() p.terminate() # write data to WAVE file wf = wave.open(current_experiment_path + subdir_recording + wave_output_filename, 'wb') wf.setnchannels(channels) wf.setsampwidth(p.get_sample_size(format)) wf.setframerate(rate) wf.writeframes(''.join(frames)) wf.close() The exception produced is this
Recording Audio. Press Enter to stop recording and save file in 2015-11-20-22:15:38.wav 925 Traceback (most recent call last): File "audio-record-timestamp.py", line 51, 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 What is producing the exception? I tried changing the chunk size (512,256,8192) it doesn't work. Changed the while loop condition and it didn't work.