Custom vocabulary

Last updated 4 min read

Voxstr's transcription model is general-purpose. Custom vocabulary tells it which domain terms to listen for — your acronyms, project names, command-line tools, and proper nouns. Add a term and it works on the next dictation. No retraining, no waiting.

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.

Changes save immediately. The next time you dictate, your updated list is in effect — there's no apply step, no restart.

Note

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:

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

Troubleshooting

Term isn't being recognized

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.

Term gets transcribed with the wrong capitalization

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.

Adding terms doesn't seem to help accuracy

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.

A boosted term keeps appearing where it doesn't belong

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.

Was this helpful?