Code dictation practice drills
Learning code dictation is learning about fifteen spoken phrases, not 90. The twelve drills below give you a line of source and ask what you would say; your attempt runs through VoiceGem's own formatter, so the drill is marked by the app's output rather than by a stored answer.
Given a line of code, produce the sentence you would say to dictate it, in under 30 seconds per drill.
Each drill gives you a line of code. Work out what you would say to produce it, type that in, and the real formatter decides whether it worked. 0 of 12 solved.
A member access
user.nameOne symbol phrase.
A statement terminator
return value;The symbol attaches to the token on its left.
A call with one argument
print(value)Two symbol phrases, one either side.
A subscript
items[index]Brackets, not parentheses.
A camelCase identifier
retryCountA casing command claims the words after it.
An uppercase constant
API_BASE_URLThree phrases produce this style; any of them works.
An assignment
retryCount = zeroThe equals sign takes a space on both sides.
A strict comparison
if value === nullThere is a single phrase for the three-character operator.
An arrow function head
(x) => x + oneTwo words for the arrow.
A block opener
if ready {The brace takes a space before it.
A line break mid-dictation
} else {No line break needed — one line, three tokens.
A chained call on a subscript
array[i].mapThree symbol phrases in a row.
Twelve drills is roughly the whole learning curve.
Most people settle on about fifteen phrases and stop consulting the table, and these drills cover them. When the phrases stop needing thought, the next step is dictating a real line into a real editor rather than typing one into a browser.
Open the complete phrase referenceVoiceGem 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 attempts are checked by a JavaScript function on this page and never leave the tab.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 fifteen phrases is the whole learning curve
VoiceGem recognizes 90 spoken phrases, and almost nobody uses more than about fifteen of them. Parentheses, brackets, braces, dot, comma, semicolon, equals and a casing command cover the overwhelming majority of what appears in a dictated line, and the rest are there for the day you need an ampersand.
The reason drills work better than reading the table is that the phrases have to become automatic. A phrase you have to recall is slower than typing the character, which is the whole argument against code dictation; a phrase you say without thinking is not. Twelve short drills is roughly where the recall stops being conscious.
The drills are marked by running your attempt through the real formatter rather than comparing it to a stored answer string. That means a drill cannot pass here and fail in your editor, and it means any valid alias works — "open paren", "open parenthesis" and "left paren" all pass the parenthesis drill, because all three produce the same character.
The order the drills are in, and why
Single symbols come first, because spacing is the thing that surprises people. A period attaches to the tokens on both sides, so "user dot name" gives user.name with no gaps. A semicolon attaches left and breathes right. Getting a feel for those two flags early makes everything after them predictable.
Casing commands come next, because they behave differently from symbols: a casing command claims the run of ordinary words that follows it and stops at the first symbol or command. That is the one rule in VoiceGem that is not a straight substitution, and it is the rule people trip over when a command swallows more of the line than they expected.
Compound lines come last. By that point the individual phrases are automatic, and the only new skill is saying a whole line without pausing in the middle — which matters, because a pause in the wrong place gives the transcription model a sentence boundary you did not intend.
What practice does not fix
Per symbol, saying a phrase is slower than typing the character, and no amount of practice reverses that. Dictation wins on whole utterances — a function signature you would type in forty seconds takes eight to say — and loses on single-character edits. The right habit is dictating the first draft and typing the fixes, and drills that pretend otherwise would be training the wrong reflex.
Practice also does not help with vocabulary. A library name a general speech model has barely seen will come back wrong however clearly you say it, because the model is choosing the more probable transcription rather than mishearing you. That is a replacement rule's job, and the per-project vocabulary builder on this site is where to collect them.
And no drill makes an open-plan office quieter. VoiceGem needs you to talk, and if the desk you work at makes that socially expensive, the honest answer is that these drills will not change it.
How to practice against your own code
After the twelve, the useful exercise is your own repository rather than more drills. Open a file you wrote last week, pick three lines, and work out what you would say for each — the speech-to-code converter on this site will tell you whether you were right, on lines that look like the ones you actually write.
Lines that resist are worth noticing rather than forcing. Dense generic signatures, regular expressions and anything with a run of adjacent symbols are genuinely slower to dictate than to type — VoiceGem does not change that, and knowing which of your lines fall into that category is more useful than getting faster at saying them.
Related: the IDE setup checklist, the project vocabulary builder, step by step, or the mode configuration planner.
Common questions
By running your attempt through VoiceGem's own formatter and comparing the output to the target line. Any valid alias passes, and a drill cannot be right here and wrong in the app.
About fifteen. VoiceGem recognizes 90, but parentheses, brackets, braces, dot, comma, semicolon, equals and a casing command cover most dictated lines.
Because it claims every ordinary word after it and stops only at a symbol or another command. "camel case total count plus one" gives totalCount + one, because plus is a symbol phrase and ends the identifier.
Per symbol, no. Per whole line, usually yes. The habit worth building is dictating the draft and typing the corrections.
Yes, in this browser on this device. Nothing syncs, because there are no accounts. The JSON download is the copy that lasts.