From 02ce0aeef4808022fc9a02aa780e26f888a5bbba Mon Sep 17 00:00:00 2001 From: bel Date: Wed, 22 Mar 2023 19:30:43 -0600 Subject: [PATCH] static mic --- whisper-2023/microphone_recognition.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/whisper-2023/microphone_recognition.py b/whisper-2023/microphone_recognition.py index 58e747f..29597e7 100644 --- a/whisper-2023/microphone_recognition.py +++ b/whisper-2023/microphone_recognition.py @@ -52,14 +52,24 @@ class Listener(): print("[{0}] Microphone with name \"{1}\" found for `Microphone(device_index={0})`".format(index, name)) exit() self.name = environ["MIC_NAME"] + self._mic = None + + def mic(self): + if not self._mic: + self._mic = self.new_mic() + return self._mic + + def new_mic(self): + idx = [idx for idx,v in enumerate(sr.Microphone.list_microphone_names()) if v in self.name.split(",")][0] + mic = sr.Microphone(device_index=idx) + mic.__enter__() + return mic def run(self): mic_timeout=int(environ.get("MIC_TIMEOUT", 5)) # obtain audio from the microphone r = sr.Recognizer() - idx = [idx for idx,v in enumerate(sr.Microphone.list_microphone_names()) if v in self.name.split(",")][0] - with sr.Microphone(device_index=idx) as source: - return r.listen(source, timeout=mic_timeout, phrase_time_limit=mic_timeout) + return r.listen(self.mic(), timeout=mic_timeout, phrase_time_limit=mic_timeout) q = queue.Queue(maxsize=1) l = Listener()