Per-project vocabulary builder
A project vocabulary is the short list of terms a general speech model reliably gets wrong on one codebase: library names, internal services, surnames and acronyms. Collecting them as you notice them beats remembering later, and VoiceGem turns each one into a replacement rule that runs on every transcription.
Given the words your dictation keeps getting wrong, produce a replacement rule set for that project, in under 5 minutes.
What you heard back, and what you meant
Separate alternative mishearings with commas — one entry can carry several triggers, and the longest is tried first. A trigger under three characters will fire in places you did not intend.
With your list applied
We moved the Postgres reads onto the replica, then redeployed through Kubernetes.
A vocabulary list is worth most next to its project.
Export it as JSON and commit it alongside the repository it describes, so the next person who dictates into this codebase inherits the list instead of rediscovering it. The rules are the same shape the word replacement tester takes.
Test these rules against a longer transcriptVoiceGem has no mailing list and runs no drip sequence. An address left here is stored on voicegem.app for one purpose — sending you a single message when the code-dictation accuracy benchmark publishes — and is deleted after that send. The lawful basis is your consent, given by submitting this form; the field is optional and nothing is pre-selected. Leaving it blank costs you nothing on this page, because everything above is already yours. See the privacy policy.
Loading anything you saved earlier…
Your work on this page is saved in this browser, on this device, and nowhere else. VoiceGem has no accounts, so nothing here syncs to another machine and nothing here is backed up — clearing your browser data clears it. Download the file if it matters.
This page runs entirely in your browser. Your entries and the sentence you test against never leave the tab, which matters because a project vocabulary is a list of your internal service names.function(){throw Error("Attempted to call EMAIL_EXCEPTION() from the server but EMAIL_EXCEPTION is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")} function(){throw Error("Attempted to call PERSISTENCE_STATEMENT() from the server but PERSISTENCE_STATEMENT is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")}
Why a general model fails on project vocabulary
Speech recognition picks the most probable words given the sound and the language it was trained on. A term that is common in your repository and rare on the internet loses that comparison every time, which is why "Postgres" comes back as "post gres" and an internal service called Halyard comes back as "hallyard" or "hall yard".
Speaking more clearly does not fix it, and this is worth knowing before you spend a week trying. The model is not mishearing you — it is hearing you correctly and choosing the more probable transcription. The fix has to come from outside the model, which is what a replacement rule is.
VoiceGem keeps that fix deterministic on purpose. A rule is text substitution with fixed matching rules, so a term that is corrected once is corrected identically forever, and you can read the list to know exactly what it will do.
How to build a list that is worth having
Collect from transcripts, not from memory. The list people write in one sitting is a list of terms they think are hard; the list that works is a list of terms that actually came back wrong, and the two overlap less than you would expect. Dictate normally for a week and add an entry each time something annoys you.
Write down what you heard back, exactly. The trigger has to match the transcript, not the correct spelling — a rule from "Postgres" to "Postgres" does nothing, and a rule from "post gres" to "Postgres" is the one that fires. The builder above has a column for each so the distinction stays visible.
Group the mishearings for one term into a single entry with commas between them. One term usually comes back two or three ways depending on the sentence around it, and VoiceGem tries a rule's variants longest first, so collecting them together is both tidier and more predictable than separate rules.
Where a vocabulary list does damage
Short triggers are the main way a vocabulary list makes dictation worse. A rule from "id" to "ID" rewrites every standalone occurrence in ordinary prose. A rule from "s3" to "S3" is safe; a rule from "s" to something is a disaster. Under three characters, assume the rule is wrong until you have tested it.
Rules also apply everywhere, not only in the project they were written for. VoiceGem runs its replacement list on every transcription regardless of which application is frontmost, so a rule tuned for one codebase will fire in an email to someone who has never heard of that codebase. Keeping lists per project in a file, and loading only the one you are working in, is the way around that.
The third failure is a rule that fights the model rather than helping it. If a term comes back correctly most of the time, a rule for its occasional mishearing will do more harm on the majority case than good on the minority one.
What this list does not change
Replacement rules rewrite the transcript after the model has produced it, and that is the whole of what they do. VoiceGem also has a personal dictionary and a custom vocabulary service that influence transcription itself, which is a different mechanism with different behavior — it can improve what the model hears rather than correcting what it wrote.
Neither one can help with a term you have never dictated. The list is only as good as the week of noticing behind it, which is why the builder above saves your entries between visits rather than expecting one sitting.
Related: what changes for the IDE setup checklist, the mode configuration planner, or how the code dictation drills works.
Common questions
The wrong one — whatever the transcript actually contained. A rule triggers on the text the model produced, so a rule whose trigger is the correct spelling never fires.
Yes. Separate them with commas and they become alternative triggers for one rule, tried longest first.
Under three characters is almost always a mistake. A rule for "id" rewrites every standalone "id" in ordinary prose, including inside quoted text.
No. VoiceGem applies its replacement list to every transcription, whatever application is frontmost. Keeping a list per project as a file, and loading the one you need, is the way to contain that.
No. Entries are saved in this browser and processed in this tab. Nothing is sent anywhere.