From e26e700a21cc71957e0ef342306e757b85622f45 Mon Sep 17 00:00:00 2001 From: bel Date: Sat, 1 Apr 2023 11:12:44 -0600 Subject: [PATCH] reader does finally put and some exception shuffle --- rust-whisper.d/hotwords.py | 41 +++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/rust-whisper.d/hotwords.py b/rust-whisper.d/hotwords.py index 14f98ad..fb19968 100644 --- a/rust-whisper.d/hotwords.py +++ b/rust-whisper.d/hotwords.py @@ -62,36 +62,45 @@ class Reader(threading.Thread): sr.Microphone.list_microphone_names(), ) if v in self.name.split(",") ] + log("mic#", mics[0]) return mics[0] def run(self): - log("Reader.run: start") + try: + log("Reader.run: start") + self._run() + except Exception as e: + log("Reader:run: exit:", e) + finally: + self.outq.put(None) + log("Reader.run: stop") + + def _run(self): while not self.should_stop(): - mic = None + time.sleep(3) + mic = sr.Microphone(device_index=self.mic_idx()) try: - mic = sr.Microphone(device_index=self.mic_idx()) mic.__enter__() while not self.should_stop(): - self.outq.put(self._run(mic)) + try: + self.outq.put(self.read(mic)) + except Exception as e: + if not "timed out" in str(e): + raise e except Exception as e: - if not "timed out" in str(e): - import traceback - traceback.print_exception(e) - time.sleep(5) - log("Reader.run: error:", e) + import traceback + traceback.print_exception(e) + log("Reader.run: error:", e) finally: try: - if mic: - mic.__exit__(None, None, None) - except Exception: - pass - self.outq.put(None) - log("Reader.run: stop") + mic.__exit__(None, None, None) + except Exception as e: + log("Reader.run.catch: error:", e) def should_stop(self): return not self.inq.empty() - def _run(self, mic): + def read(self, mic): mic_timeout = int(os.environ.get("MIC_TIMEOUT", 5)) r = sr.Recognizer() return r.listen(