Dictating a closing parenthesis without breaking the line
Say “close paren”, “close parenthesis” or “right paren” to produce ). The closing parenthesis attaches to the left only, so it sits flush against the previous token and still allows a space before whatever follows: “sum open paren a comma b close paren” assembles as sum(a, b) with the comma spaced correctly.
An eight-word two-argument call runs about 9.2 seconds on the keyboard against roughly 2.9 seconds spoken aloud. (sources: Dhakal, Feit, Kristensson & Oulasvirta, “Observations on Typing from 136 Million Keystrokes”, CHI 2018, 168,000 participants, 136 million keystrokes; Yuan, Liberman & Cieri, “Towards an Integrated Understanding of Speaking Rate in Conversation”, Interspeech 2006, 2,438 American English telephone conversations (Switchboard corpus). The speech figure is conversational rate, not a measured dictation rate — no such measurement exists.)
sum(a, b)This tool runs entirely in your browser. Nothing you type is sent anywhere, stored, or logged.
Step by step
- 1
Finish the argument list first
Speak every argument before the closer. Commas are their own spoken phrase, so “a comma b” gives you a, b with the space after the comma placed by the table rather than by you.
- 2
Say “close paren” once per open one
Each closer is explicit. Two nested calls need two “close paren” phrases in a row, and saying them back to back works — VoiceGem's tokenizer treats them as two separate table hits.
- 3
Carry straight on
Say the next token immediately. The closing parenthesis attaches left but not right, so a space is preserved after it and the next word does not collide with the bracket.
- 4
By hand instead
Press Shift-0, or if your editor auto-paired the opener, type ) and most editors will simply move the cursor past the one already there rather than inserting a second.
The closing parenthesis attaches on one side, and that asymmetry is deliberate
Six characters in the VoiceGem table attach to the left only: the closing parenthesis, the closing bracket, the comma, the semicolon, the colon and the question mark. Every one of them is a character that ends something, and every one of them needs to sit flush behind the token it closes while leaving room for what comes next.
The alternative — attaching on both sides — would produce sum(a, b)next with no separation. A single flag per side, set once per character, is enough to get every closing construct right without any per-sentence analysis.
Where doing it by hand breaks down
Editor auto-pairing already handles the common case well: type ( and the ) appears, then typing ) steps over it. For a single call that is genuinely quicker than speaking, and VoiceGem does not improve on it.
Auto-pairing gets awkward at depth. Three nested closers means three keystrokes that each either step over an existing bracket or insert a new one depending on cursor position, and getting that wrong is a syntax error you find at compile time. Saying “close paren close paren close paren” emits exactly three characters, every time, which is the property the Deterministic Pass exists to provide.
Doing this somewhere else? speech-to-code converter, in one place, the same thing for the closing curly brace, how the closing square bracket works, or the same thing for the opening curly brace.
Common questions
Yes. VoiceGem tokenizes on whitespace and looks each phrase up independently, so consecutive closers produce consecutive characters with no space between them.
The comma attaches left only and the closing parenthesis attaches left only, so both sit flush behind the previous token while leaving the following gap intact. Spacing comes from the table, not from analysis.
Three phrasings map to it: “close paren”, “close parenthesis” and “right paren”. Pick one and stay with it; VoiceGem accepts all three at any point.
Paste a nested call and watch every closer land where you put it.
Open the tool