How vocabulary boosting works
Voxstr runs an extra pass on top of the base transcription model called CTC keyword boosting. While the model is producing its best guess at what you said, the boosting pass looks for sequences of phonemes that closely match terms in your vocabulary list and increases the probability of those words winning the decode.
In plain language: the model is biased to hear the words you've taught it, even when the audio is ambiguous. The bias is gentle — it won't fabricate a term out of unrelated speech — but it's strong enough to flip "grumpy C" into gRPC, or "prosegrass" into Postgres.
The mechanism is implemented by the CtcKeywordSpotter running alongside Voxstr's transcription engine. There's no model retraining, no per-user fine-tuning, and no audio leaving your Mac. Adding or removing a term takes effect on the next dictation.
How to add, edit, and remove terms
Open Voxstr's dashboard from the menu bar icon, then go to Vocabulary. The vocabulary panel is a simple list: one term per row, an Add button at the top, and a delete control on each row.
- Add: type the term exactly as you want it transcribed (capitalization included), press Enter or click Add.
- Edit: click the term to edit it in place. Save with Enter, cancel with Escape.
- Delete: click the trash icon on the row.
Changes save immediately. The next time you dictate, your updated list is in effect — there's no apply step, no restart.
The vocabulary UI is being polished as part of the launch onboarding work (voxstr#697). The behavior described above is stable; the visual layout may shift slightly between releases.
What to add (and what not to)
Good candidates are words the base model has no reason to know — your domain's jargon, brand names, and acronyms. Some categories that pay off immediately:
- Software acronyms:
gRPC,OAuth,Postgres,JSON,YAML,WebSocket,WASM - Proper nouns:
Voxstr,Cloudflare,Anthropic, your company name, your teammates' names - Command-line tools:
pnpm,wrangler,gh,kubectl,tmux,jq,rg - Frameworks and libraries:
Tailwind,SwiftUI,FluidAudio,vitest, project codenames - Words you say often that get mistranscribed: if Voxstr keeps hearing "karaoke" when you said "GraphQL", add
GraphQLand move on
Bad candidates: common English words. Adding the, and, but, that doesn't help — the base model already knows them, and biasing high-frequency words can make transcription worse by boosting them in places they don't belong.
Best practices
- 20 to 200 terms is the sweet spot. A small focused list works better than a giant dump of every technical word you've ever read. Larger lists run fine, but each added term contributes diminishing returns.
- Capitalize as you want it injected. Vocabulary entries take exact-case precedence. If you add
Postgres, you'll getPostgresin your output, notpostgres. - Add the form you actually say. If you pronounce "S 3", add
S3. If you pronounce "ess three" too, add both spellings — the spotter matches phonetic shape, not spelling. - Prune occasionally. If a term is no longer relevant (an old project, a tool you stopped using), delete it. Stale terms can accidentally win against close-sounding words you actually mean.
- Don't add multi-word phrases unless necessary. The booster works best on single words and short compounds.
OpenSlideAIis fine; "the quarterly business review process" isn't a vocabulary entry, it's a sentence.
Troubleshooting
Open the Vocabulary panel and confirm the spelling is exactly what you expect. Boosting matches the term as written; Postgres and Postgress are different entries to the spotter. If the spelling is right, try adding a phonetic variant (e.g., graph QL alongside GraphQL) — sometimes the spelling and the way you say it disagree.
Vocabulary entries take exact-case precedence over the model's default casing. Edit the entry to match the casing you want. If you have both Postgres and postgres in the list, delete the one you don't want.
Check that you're adding the right kind of term. The booster shines on rare or domain-specific words. If you're adding common English (that, about, over), the model already weighted those correctly — boosting them can actually hurt. Restrict your list to words the base model is unlikely to have seen often.
Sign that the term is too aggressively boosted relative to similar-sounding words. Delete it, or replace it with a more specific phonetic spelling. For example, a single S3 entry can over-bias against "S 3" said in non-AWS contexts; if that's an issue, just don't add S3 to the list.
For deeper accuracy issues unrelated to vocabulary — slow transcription, wrong audio device, or empty output — see the troubleshooting guide.