From 3be36e014ac6f05a824788a91f6e7147f08db982 Mon Sep 17 00:00:00 2001 From: miro Date: Mon, 23 Sep 2024 17:22:09 +0100 Subject: [PATCH] fix:troubleshoot wait_while_speaking --- ovos_bus_client/session.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ovos_bus_client/session.py b/ovos_bus_client/session.py index 163d0f3..7bf2baa 100644 --- a/ovos_bus_client/session.py +++ b/ovos_bus_client/session.py @@ -626,15 +626,23 @@ def is_speaking(cls, session: Session = None): @classmethod def wait_while_speaking(cls, timeout=15, session: Session = None): """ wait until audio service reports end of audio output """ + if isinstance(timeout, bool): + LOG.warning(f"expected timeout in seconds, got boolean '{timeout}', " + f"defaulting to 15 seconds") + timeout = 15 + if not cls.bus: LOG.error("SessionManager not connected to bus, can not monitor speech state") return session = session or SessionManager.get() if not cls.is_speaking(session): + LOG.warning(f"can't 'wait_while_speaking' because " + f"session '{session.session_id}' is not currently speaking") return # wait until end of speech + LOG.debug(f"waiting for session '{session.session_id}' audio output to end with timeout: {timeout}") event = Event() sessid = session.session_id @@ -642,10 +650,13 @@ def handle_output_end(msg): nonlocal sessid, event sess = SessionManager.get(msg) if sessid == sess.session_id: + LOG.debug(f"session: {sessid} audio output ended") event.set() cls.bus.on("recognizer_loop:audio_output_end", handle_output_end) event.wait(timeout=timeout) + if not event.is_set(): + LOG.warning("waiting for audio output end timed out! not waiting anymore") cls.bus.remove("recognizer_loop:audio_output_end", handle_output_end) @classmethod