fix(asr): bias Parakeet toward this machine's vocabulary #204
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/asr-parakeet-hotword-biasing"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parakeet's transducer has almost no internal language model, so rare proper nouns decode phonetically with nothing to fall back on. That is the accuracy regression felt after moving off Whisper, whose seq2seq decoder was silently repairing them.
Enables contextual biasing: a hotword list under
modified_beam_search(greedy ignores hotwords entirely, which is why the old config got nothing from them).Measured on the same audio:
the Fargo runner logsthe Forgejo runner logsRun cubect to get podsRun kubectl get podsThe Viconya Task TrackerThe Vikunja Task TrackerSAPS encrypted secretsops encrypted secretin the image namespacein the Immich namespaceCost: 0.17s -> 0.19s on a 7s clip.
Regression caught and fixed in the same change
Biasing re-introduces silence hallucination, the property Parakeet was chosen for. Digital silence decodes as
"I"at score 2.0 and"I'm sorry."at 1.0, non-monotonically, so no score is safe on its own. Beam search alone is clean; biasing is what breaks it.The shim now enforces the guarantee explicitly with a peak gate at one 16-bit quantization step, derived from
pw-record's s16 capture format rather than picked. Verified it cannot swallow quiet dictation: speech attenuated 40dB still peaks 244x above the gate and transcribes.Also
parakeet_precisionis now a variable. fp16 was A/B'd and showed no measurable accuracy gain over int8 at ~2x disk and ~30% latency, so int8 stays default and the variable exists to re-test.hotwords_score2.0 is tuned: below itImmich/sopsfall back to phonetic, at 3.0 hotwords bleed into unrelated audio (Grafana->Graf).Verification
Applied through the role itself on cachyos-x8664-main and verified against the live daemon:
/healthreportshotwords:true, silence returns empty at 2s and 8s, jargon is biased, natural speech unchanged.Not covered: the three privileged tasks (pacman, linger, whisper build-deps) did not run, sudo was gated. All were already satisfied.