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()