30 lines
1.5 KiB
Markdown
30 lines
1.5 KiB
Markdown
# Phase 4 voice acceptance
|
|
|
|
Run `npm run voice-doctor` in the target GNOME session. Fresh installs use the
|
|
built-in CPU detector (`jarvis-wake-bridge`). To use openWakeWord or sherpa-onnx
|
|
instead, set `wakeCommand` or `JARVIS_WAKE_COMMAND` to a program that receives
|
|
raw 16 kHz mono PCM on stdin and emits one detected phrase per line on stdout.
|
|
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:
|
|
|
|
1. Hold push-to-talk, say a question, release, and verify one final transcript.
|
|
2. Say the configured wake phrase, pause, and verify `ARMED → LISTENING →
|
|
THINKING → SPEAKING → LISTENING`.
|
|
3. Play a 20-second reply beside the microphone and verify `feedbackDrops`
|
|
increases while no new transcript is submitted.
|
|
4. Say `cancel`, `go to sleep`, `repeat that`, `take the wheel`, `use the camera`, or `look at my
|
|
screen` and verify the fast path handles the command before the harness.
|
|
5. 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.
|