Pin the keyword models to one thread each and ship them (V-487)

The gate loaded and worked on workpc and took mavwaked from 68% of one core
to 335%. onnxruntime sizes its intra-op pool to every core and spins between
runs, which an always-on gate scoring three graphs twelve times a second
provokes for the whole day. One thread per session brings it to 81%, so the
keyword costs about 13% of a core, and each graph still finishes well inside
its 80ms.

The unit now passes the three -wake- flags and the models sit beside
silero_vad.onnx in ~/.local/share/maven/models. The threshold is left at the
binary's default so there is one place to change it.
This commit is contained in:
2026-08-09 15:56:07 +04:00
parent ff202c0c35
commit 2c73493bf8
4 changed files with 58 additions and 9 deletions
+13 -1
View File
@@ -170,7 +170,19 @@ The device is `plughw:0,0` and not `hw:0,0`. The fifine offers 2 channels at
44100 or 48000 and nothing else, and mavwaked asks arecord for 16kHz mono. Bare
`hw` dies on "Channels count non available" before a frame is read.
There is no wake word yet (V-487 stage two), so the loop runs open.
The three `-wake-` flags require the keyword "Мэйвен" (V-487 stage two). Drop
them and the loop runs open, which is what it did before. The threshold is the
binary's default of 0.999 and is not passed. Over 65 minutes of held-out
Russian speech it woke her 0.9 times an hour against 2.8 at 0.99. That cost one
lost render out of 126 (`docs/evals/2026-08-09-wake-word.md`).
The three sessions are pinned to one thread each. onnxruntime otherwise sizes
its pool to every core and spins between runs, which took mavwaked from 68% of
one core to 335%. With the cap it sits at 81%, so the gate costs about 13%.
A keyword shorter than 1.32s can be heard too late to be used. The head scores
1.28s of audio, and the VAD has closed the utterance by then.
"Мэйвен, <request>" is unaffected. A bare "Мэйвен" is the case that fails.
mavwaked connects at startup and holds the conn, so a nudge routed to voice
reaches the speaker before he has said anything (V-671). It used to connect
+8
View File
@@ -94,6 +94,14 @@ the head the whole request to peak during. A bare "Мэйвен" with nothing af
it is the case that fails. One fix would hold an ignored utterance for a grace
period and ship it if the keyword lands late. It is not built.
## What it costs the workstation
Under systemd on workpc, mavwaked sat at 335% of a core with the gate on and
68% with only silero. onnxruntime sizes its thread pool to every core and spins
between runs, and this gate runs three graphs twelve times a second. Pinning
all three sessions to one thread brought it to 81%, so the keyword costs about
13% of one core. The three graphs each finish in well under 80ms that way.
## What was not measured
No room recordings. Every negative above is a clean corpus clip. This gate