Dictation & dictionary
Hold the Fn key, speak, release. The text lands at your cursor. Whisper runs locally via Metal, and a personal dictionary teaches it your names and jargon.
How dictation works
- Push-to-talk: hold
fn(the trigger key is configurable). Releasing the key stops recording and transcribes immediately. - Silence protection: four layers keep Whisper's silence hallucinations ("thanks for watching…") out of your text: energy measurement, a known-phrase blacklist, no-speech probability, and independent buffers per dictation.
- Anywhere: the text is inserted into whatever app has focus. If the Lavox notebook is focused, it goes to the note's cursor instead.
- Memory: every finished dictation flows into the memory automatically (fire-and-forget, so it never slows the insert).
The personal dictionary
Whisper mishears names and technical terms. The dictionary fixes that with two mechanisms working together:
- Vocabulary biasing: your most-used terms are fed into the decoder as a prompt, making it far more likely to spell them right the first time. Meeting transcription uses the same list as hotwords.
- Deterministic replacement: learned misheard → correct pairs are applied to the transcript before insertion: case-insensitive, whole-word, zero latency, zero hallucination risk.
It learns from your corrections
After a dictation, the bar shows the transcript with a Fix button. Edit the text, save, and the diff teaches the dictionary:
- only term-like corrections are learned (proper nouns, technical terms, acronyms), never plain rewording
- each learned pair is at most 4 words; at most 4 pairs per session
- everything is stored in
~/Lavox/dictionary.json, a plain file you can read, edit or delete
Managing the dictionary directly
# list
curl -s localhost:8040/api/dictionary
# add a term (optionally with a known mishearing)
curl -s -X POST localhost:8040/api/dictionary/term \
-H 'Content-Type: application/json' \
-d '{"term": "Infisical", "misheard": "infiscal"}'
# remove
curl -s -X DELETE localhost:8040/api/dictionary/term/Infisical
Lavox deliberately does not watch other apps' text fields
to auto-learn, because that would require accessibility-level surveillance of
everything you type. Corrections are learned only on surfaces you
explicitly use for it.