BlogEngineeringWhy your custom vocabulary has a budget
EngineeringJune 30, 20265 min read

Why your custom vocabulary has a budget

You can add as many terms as you like. Only about a thousand characters of them reach the speech model — here is what happens to the rest, and how to spend the space well.

Every dictation tool eventually meets the same complaint: it will not spell your product name. The usual fix is a custom vocabulary, and the usual disappointment is that adding two hundred terms does not work as well as adding five.

That is not a bug, and the reason is worth understanding if you want good results.

How biasing works

Speech models accept a prompt that nudges them toward certain spellings. It is a hint, not a dictionary lookup — the model is more willing to produce "Kubernetes" if the word appears in the prompt, because it is now a plausible continuation rather than an unusual one.

The catch is that this prompt is small. InkSpoke caps it at 1,024 characters. Everything you add competes for that space.

Who gets the space

When your terms exceed the budget, the overflow is dropped — but in a defined order rather than arbitrarily:

  1. Workspace terms go in first. They are the most specific to what you are doing right now.
  2. Then your global vocabulary.
  3. Then dictionary triggers, which are dropped first.

Terms are never split mid-word, and duplicates are removed case-insensitively. The settings page shows a live character count and warns as you approach the ceiling.

Spending it well

The budget makes the strategy obvious once you see it: bias is only worth spending on words the model would otherwise get wrong.

Worth the spaceWasted space
Product and project codenamesCommon English words
Internal acronymsTerms already transcribed correctly
Unusual surnamesAnything you have never seen misheard
Domain jargon the model has not seenPlurals of a term already listed
A short, curated list beats an exhaustive one. If a term is already transcribed correctly, adding it costs budget and buys nothing.

The second net

Biasing is probabilistic, so it will sometimes lose anyway. That is what replacement pairs are for — writing cubernetties => Kubernetes rewrites the transcript after the fact, whole-word and case-insensitively, catching what the hint missed.

This is the part worth knowing: replacements are global only. Per-workspace vocabulary can bias recognition but cannot rewrite text. If you need a term corrected rather than merely encouraged, it belongs in the global list.

The setting that catches everyone

Each workspace has a vocabulary mode, and it defaults to Inherit — which means "use the global list only". Terms typed into a workspace while it is set to Inherit are stored and never used.

!
This is the single most common vocabulary complaint, and it is a one-word fix: switch the workspace to Append and its terms take effect on top of the global list.

A separate cap applies further down the pipeline: at most fifty terms are passed to the refinement model as known terms. Same principle — a curated list survives a cap, an exhaustive one gets truncated.


Keep reading

More from the notebook.