diff --git a/tools/wake_word.py b/tools/wake_word.py index 574bd4394cf..75d98fc8fca 100644 --- a/tools/wake_word.py +++ b/tools/wake_word.py @@ -356,13 +356,13 @@ class WakeWordDetector: logger.error("wake word: failed to open microphone: %s", e) return - logger.debug("wake word: listening (frame=%d)", frame_length) + logger.info("wake word: listening (frame=%d, rate=%d)", frame_length, SAMPLE_RATE) try: while not self._stop.is_set(): try: data, _overflow = stream.read(frame_length) except Exception as e: - logger.debug("wake word: stream read error: %s", e) + logger.warning("wake word: stream read error: %s", e) break frame = data[:, 0] if getattr(data, "ndim", 1) == 2 else data try: @@ -374,17 +374,20 @@ class WakeWordDetector: now = time.monotonic() if now - self._last_fire >= self.cooldown: self._last_fire = now + logger.info("wake word: phrase detected — firing callback") try: self.on_wake() except Exception as e: logger.warning("wake word callback failed: %s", e) + else: + logger.debug("wake word: detection within cooldown — ignored") finally: try: stream.stop() stream.close() except Exception: pass - logger.debug("wake word: stream closed") + logger.info("wake word: stream closed") # --------------------------------------------------------------------------- diff --git a/tui_gateway/server.py b/tui_gateway/server.py index 60d17a865a5..34d05a04cff 100644 --- a/tui_gateway/server.py +++ b/tui_gateway/server.py @@ -17628,6 +17628,7 @@ def _wake_on_detect() -> None: phrase = wake_phrase() except Exception: phrase = "" + logger.info("wake.detected: emitting to sid=%r", sid) _emit("wake.detected", sid, {"phrase": phrase}) @@ -17652,9 +17653,12 @@ def _(rid, params: dict) -> dict: cfg = load_wake_word_config() if not wake_surface_enabled(surface, cfg): + logger.info("wake.start(%s): disabled for surface (enabled=%s, surface=%s)", + surface, cfg.get("enabled"), cfg.get("surface")) return _ok(rid, {"started": False, "reason": "disabled_for_surface"}) reqs = check_wake_word_requirements(cfg) if not reqs["available"]: + logger.warning("wake.start(%s): not available — %s", surface, reqs.get("hint")) return _ok(rid, {"started": False, "reason": reqs.get("hint") or "unavailable"}) with _wake_lock: @@ -17662,9 +17666,11 @@ def _(rid, params: dict) -> dict: try: start_listening(_wake_on_detect, config=cfg) except Exception as e: + logger.warning("wake.start(%s): failed to start listener: %s", surface, e) return _err(rid, 5026, str(e)) with _wake_lock: _wake_active = True + logger.info("wake.start(%s): listening for %r (%s)", surface, reqs["phrase"], reqs["provider"]) return _ok(rid, {"started": True, "phrase": reqs["phrase"], "provider": reqs["provider"]})