From 7a93c9cf9ae2776ff21f6e134617fcd93343d569 Mon Sep 17 00:00:00 2001 From: talksik Date: Thu, 27 Apr 2023 14:36:48 -0700 Subject: [PATCH] adding in callback for reading chunks --- audio/audio.py | 15 +++++++++------ push_to_record_and_play.py | 5 +---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/audio/audio.py b/audio/audio.py index 8de0856..0024b0e 100644 --- a/audio/audio.py +++ b/audio/audio.py @@ -23,7 +23,15 @@ class Audio: channels=RESPEAKER_CHANNELS, input=True, input_device_index=RESPEAKER_INDEX, - start=False,) + start=False, + stream_callback=self.readCallback,) + + def readCallback(self, out_data, frame_count, time_info, status): + print("reading chunk") + self.frames.append(out_data) + # If len(data) is less than requested frame_count, PyAudio automatically + # assumes the stream is finished, and the stream stops. + return (out_data, pyaudio.paContinue) def isRecording(self): return self.recordStream.is_active() @@ -33,11 +41,6 @@ class Audio: self.recordStream.start_stream() self.frames = [] - def readChunk(self): - print("reading chunk") - data = self.recordStream.read(CHUNK) - self.frames.append(data) - def stopRecord(self, play=True, save=False): print("* done recording") self.recordStream.stop_stream() diff --git a/push_to_record_and_play.py b/push_to_record_and_play.py index 454d0ac..31d8240 100644 --- a/push_to_record_and_play.py +++ b/push_to_record_and_play.py @@ -18,15 +18,12 @@ GPIO.setup(BUTTON, GPIO.IN) audioInstance = audio.Audio() while True: - if audioInstance.isRecording(): - audioInstance.readChunk() - state = GPIO.input(BUTTON) if state: print("button: OFF") if audioInstance.isRecording(): - audioInstance.stopRecord() + audioInstance.stopRecord(play=False) else: print("button: ON") if not audioInstance.isRecording():