1.4 KiB
Phase 4 voice acceptance
Run npm run voice-doctor in the target GNOME session. Set
JARVIS_WAKE_COMMAND to the local openWakeWord or sherpa-onnx bridge command.
The command receives raw 16 kHz mono PCM on stdin and emits one detected phrase
per line on stdout; the daemon passes it through ProcessWakeEngine. No cloud
wake service is supported.
The capture and playback nodes are both named Jarvis, so they can be routed
in Helvum or qpwgraph. The loop gates capture while TTS is active and for 400ms
after playback. Runtime counters are available from the VoiceLoop.metrics
snapshot: wake accepts, rejected utterances, feedback drops, utterances, and
replies.
Acceptance cases:
- Hold push-to-talk, say a question, release, and verify one final transcript.
- Say the configured wake phrase, pause, and verify
ARMED → LISTENING → THINKING → SPEAKING → LISTENING. - Play a 20-second reply beside the microphone and verify
feedbackDropsincreases while no new transcript is submitted. - Say
cancel,go to sleep,repeat that,take the wheel, orlook at my screenand verify the fast path handles the command before the harness. - Use D-Bus
Ask()while the microphone is unavailable to exercise typed fallback.
Wake false accepts and false rejects should be measured over 50 utterances in quiet, music, and kitchen-noise conditions and recorded outside the default privacy log; raw audio is never written by the daemon.