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:
- Workspace terms go in first. They are the most specific to what you are doing right now.
- Then your global vocabulary.
- 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 space | Wasted space |
|---|---|
| Product and project codenames | Common English words |
| Internal acronyms | Terms already transcribed correctly |
| Unusual surnames | Anything you have never seen misheard |
| Domain jargon the model has not seen | Plurals of a term already listed |
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.
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.