mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-30 19:09:28 +00:00
openWakeWord's ONNX backend returns near-zero scores on Apple Silicon (dscripka/openWakeWord#336), so "Hey Hermes" never crossed the 0.5 threshold: the listener armed, the microphone worked, and nothing fired. Bisecting the pipeline puts the fault in exactly one stage — feeding the same audio through both backends, the melspectrogram front-end is bit-identical (maxdiff 0.00000) and the wake classifier agrees on identical features, while the shared embedding model diverges by 45.44. Cross-feeding confirms it: tflite features scored through the *onnx* classifier give 0.9948 vs 0.000009 for onnx features. A telling secondary symptom is that scores fall as input gets louder (0.5x -> 0.00031, 8x -> 0.000066), which is garbage inference rather than a weak detection. Selecting tflite in config alone does not fix it. openWakeWord hardcodes `import tflite_runtime.interpreter` but declares tflite-runtime for `platform_system == "Linux"` only; on macOS the equivalent wheel is ai-edge-litert, so that import always fails and model.py silently downgrades back to onnx. The result is a detector that reports itself listening and can never fire. - default the backend per platform (tflite on macOS ARM64, onnx elsewhere) instead of hardcoding onnx, and pick the matching bundled model artifact - bridge tflite_runtime -> ai_edge_litert through sys.modules, in-process, with no writes to site-packages - refuse the silent onnx downgrade on macOS ARM64 and report the missing runtime through check_wake_word_requirements() so the GUI surfaces an actionable hint rather than arming a dead ear - lazy-install ai-edge-litert via its own feature key, because lazy-dep specs cannot carry PEP 508 markers (_spec_is_safe rejects ";") An explicit `inference_framework` in config still wins, so anyone pinning a backend keeps it. Verified on macOS 26.5.2 / M-series: "hey hermes" scores 0.0005 on onnx and 0.9423 on tflite from the same clip, with cross-phrase controls at 0.0003. Live over-the-air through the real microphone fires 4/4 utterances (peak 0.9532). |
||
|---|---|---|
| .. | ||
| _category_.json | ||
| acp.md | ||
| api-server.md | ||
| batch-processing.md | ||
| browser.md | ||
| built-in-plugins.md | ||
| code-execution.md | ||
| codex-app-server-runtime.md | ||
| computer-use.md | ||
| context-files.md | ||
| context-references.md | ||
| credential-pools.md | ||
| cron.md | ||
| curator.md | ||
| delegation.md | ||
| deliverable-mode.md | ||
| extending-the-dashboard.md | ||
| fallback-providers.md | ||
| goals.md | ||
| honcho.md | ||
| hooks.md | ||
| image-generation.md | ||
| kanban-tutorial.md | ||
| kanban-worker-lanes.md | ||
| kanban.md | ||
| lsp.md | ||
| mcp.md | ||
| memory-providers.md | ||
| memory.md | ||
| mixture-of-agents.md | ||
| overview.md | ||
| personality.md | ||
| pets.md | ||
| plugins.md | ||
| provider-routing.md | ||
| skills.md | ||
| skins.md | ||
| spotify.md | ||
| subscription-proxy.md | ||
| tool-gateway.md | ||
| tool-search.md | ||
| tools.md | ||
| tts.md | ||
| vision.md | ||
| voice-mode.md | ||
| wake-word.md | ||
| web-dashboard.md | ||
| web-search.md | ||
| x-search.md | ||