VoiceGem

How to say an open parenthesis when you dictate code

Say “open paren”, “open parenthesis” or “left paren” and VoiceGem writes ( with no space on either side, so “print open paren value close paren” lands as print(value). The Deterministic Pass matches the spoken phrase against a fixed lookup table rather than asking a model, so identical words always produce an identical character.

A nine-word call like “print open paren value close paren” takes about 10 seconds to type and about 3.3 seconds to say. (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.)

What lands in your editor
print(value)

This tool runs entirely in your browser. Nothing you type is sent anywhere, stored, or logged.

Step by step

  1. 1

    Say the phrase, not the character

    Speak “open paren” where the ( belongs. VoiceGem accepts three phrasings for this one character — “open paren”, “open parenthesis” and “left paren” — because people who dictate all day shorten it differently and none of them should have to relearn a phrase.

  2. 2

    Keep going without pausing

    Say the argument immediately after. The open parenthesis attaches on both sides, so no space is inserted before or after it and the argument arrives flush against the bracket.

  3. 3

    Close it explicitly

    Say “close paren” at the end. Nothing auto-closes: the Deterministic Pass emits exactly the characters you asked for, which is also why a missing close paren stays missing rather than being guessed at.

  4. 4

    The manual path, if you would rather not dictate

    Type Shift-9 on a US keyboard, or use your editor's auto-pairing, which inserts both brackets and puts the cursor between them. Auto-pairing is genuinely faster than dictation for a single call and nothing here changes that.

Why the open parenthesis produces no space around it

Each entry in the VoiceGem symbol table carries two flags: attach-left and attach-right. The open parenthesis is one of ten characters in the table that attach on both sides, which is what turns a sequence of separate spoken words into print(value) rather than print ( value ).

Assembly happens after the whole transcript is tokenized, not while you speak. The Deterministic Pass walks the tokens once, then joins them using each symbol's own flags — so the spacing around a bracket is a property of the character, decided once in the table, rather than a judgement made per sentence.

Where the manual way breaks

Typing a single open parenthesis is faster than saying one, and pretending otherwise costs credibility. Shift-9 is one keystroke and “open paren” is two syllables plus the pause around them, so per character the keyboard wins and will keep winning.

The trade changes over a whole utterance. A function call with two arguments is roughly a dozen keystrokes across four hand positions, and dictating it is one continuous sentence — which is the case VoiceGem is built for, and the case where your hands get a rest. For a single bracket in the middle of typed code, reach for the key.

Doing this somewhere else? speech-to-code converter, on your own input, what changes for the closing curly brace, how the closing square bracket works, or how the closing parenthesis works.

Common questions

No. VoiceGem emits only the characters your words asked for, so you say “close paren” yourself. Your editor's own auto-pairing still works normally when you type, and it does not interfere with dictated text.

Three: “open paren”, “open parenthesis” and “left paren”. All three are in the same lookup table and all three produce the identical character, so use whichever is shortest to say.

The word is converted, because the lookup table has no idea you were writing prose. Turn Developer Mode off for prose, or reach for a different word — that collision is the honest cost of a deterministic table.

Run a whole line through the same function this demo uses.

Open the tool