VoiceGem

How to say a semicolon at the end of a dictated statement

Say “semicolon” to produce a semicolon bound to the token before it, so “return value semicolon” assembles as return value; with nothing between the word and the terminator. VoiceGem emits the character wherever you say it and never adds one for you, which matters in languages where the semicolon is optional.

A nine-word terminated statement runs about 10 seconds typed against about 3.3 seconds spoken. (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
totalCount = 0;

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

Step by step

  1. 1

    Say the statement first

    Speak the whole expression, then “semicolon” at the end. The character attaches left, so it lands tight against the last token with no space in front of it.

  2. 2

    Repeat it inside a for loop

    Say “semicolon” between each clause of a C-style loop. Three clauses need two separators and VoiceGem places both identically, because each is an independent lookup rather than part of a parsed structure.

  3. 3

    Leave it out where the language does

    Say nothing at all in Python or in semicolon-free JavaScript. VoiceGem never inserts a terminator on your behalf, so an omitted semicolon stays omitted.

  4. 4

    Without dictation

    Press the semicolon key, which is unmodified and on the home row for a touch typist. Many editors also insert one on format-on-save in languages that require it.

VoiceGem never inserts a semicolon you did not say

Automatic semicolon insertion is a language feature in JavaScript and a formatter feature in most editors, and both of them make decisions about your code. The Deterministic Pass makes none: the character appears where the phrase appeared in the transcript, and nowhere else.

Predictability is worth more here than helpfulness. A formatter that adds terminators is right almost always and surprising occasionally, and the occasions are the ones that cost an afternoon. VoiceGem produces exactly what you said, so your linter and your formatter remain the only things touching your statement terminators.

Where the manual way breaks

For a single statement the semicolon key is a home-row keystroke and no dictation workflow improves on it. The comparison is not close and the honest thing is to say so.

C-style for loops are the exception worth naming. Three clauses, two separators, a comparison and an increment add up to a construct that lives across the whole keyboard, and it is one continuous sentence out loud. Dictating the loop header in VoiceGem gets the shape down; the body is usually faster to type.

Doing this somewhere else? speech-to-code converter, on your own input, the same thing for the backslash in an escape sequence, how the colon in a type annotation works, or how the comma in an argument list works.

Common questions

No. VoiceGem emits only the characters you spoke, so semicolon-free style survives dictation intact and your formatter stays in charge.

Say the three clauses with “semicolon” between them. Each separator is looked up independently, so the loop header assembles in one pass with no parsing involved.

No. The semicolon is reached by exactly one phrase in VoiceGem's table, because there is no widely used shorter name for the character.

Dictate a for-loop header and count the separators.

Open the tool