VoiceGem

Punctuation cleanup for dictated text

VoiceGem ships three punctuation cleanup modes for dictated text: keep it as the model produced it, remove all punctuation, or drop a single sentence-final period. A separate switch lowercases everything. The tool above applies all three to your text at once so the choice is visible rather than guessed at.

Given dictated text, produce it under one punctuation mode, in under 1 second.

Replace every Unicode punctuation character with a space, delete apostrophes outright, then collapse the whitespace.

Lets ship the retry logic today Its about a hundred lines and it touches the queue worker
The same text under each of VoiceGem's three punctuation cleanup modes
ModeOutput
KeepLet's ship the retry logic today. It's about a hundred lines, and it touches the queue worker.
Remove allLets ship the retry logic today Its about a hundred lines and it touches the queue worker
Remove trailing periodLet's ship the retry logic today. It's about a hundred lines, and it touches the queue worker

Pick the mode once, not once per paste.

Punctuation mode is a setting in VoiceGem on macOS, applied as text is produced, so the choice you just made happens automatically for every dictation. The filler-word stage of the same filter runs immediately before it.

See the filler-word stage of the same filter

VoiceGem 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.

This tool runs entirely in your browser. The text you paste is processed by a JavaScript function on this page and nothing is sent anywhere, stored, or logged. The one exception is the email box under the result: an address left there is sent to VoiceGem, and nothing else on this page is.

What each punctuation cleanup mode does

Keep is the default and it changes nothing. Speech models produce punctuation from prosody, and for prose that output is usually what you want — a mode that strips it is throwing away work the model already did.

Remove all replaces every Unicode punctuation character with a space and then collapses the whitespace, with one exception: apostrophes are deleted rather than spaced, so "don't" becomes "dont" instead of "don t". There is a second, less obvious exception. VoiceGem uses the Unicode punctuation category, which contains brackets, dashes, quotes and full stops but not mathematical or currency symbols, so an equals sign, a plus, a dollar sign and a caret all survive remove-all untouched. Line breaks survive too; only horizontal whitespace collapses.

Remove trailing period deletes exactly one sentence-final period so a dictated fragment can be pasted into the middle of a sentence. An ellipsis is left alone, because the character before the final period is also a period, and text ending in an exclamation or question mark is untouched.

How to clean punctuation by hand

Stripping punctuation with find-and-replace means enumerating the characters, and the enumeration is where it goes wrong. A list of the obvious ones — period, comma, semicolon, colon — misses the em dash, the curly quotes a speech model emits, and the ellipsis character. A regular expression for all punctuation catches those and also eats the apostrophes, turning every contraction into two words.

Removing a trailing period by hand is trivial once and tedious two hundred times, which is the whole argument for making it a setting rather than a step. VoiceGem on macOS 14.4 or later applies the chosen mode as text is produced, so the fragment arrives in the shape you want and there is no cleanup pass at all.

The order the stages run in matters more than people expect. Filler removal happens before punctuation cleanup, which means a filler word's trailing comma is already gone by the time the punctuation mode sees the text. Running them in the other order leaves stranded commas behind.

When removing punctuation is the wrong choice

Remove-all exists for a narrow set of jobs and is a poor default for most of them. Search queries, tags, filenames and identifiers benefit from it. Prose does not: a paragraph with no sentence boundaries is measurably harder to read, and anything downstream that splits on sentences — a summarizer, a translation tool, a screen reader — will do it badly.

Code is the case where remove-all is actively destructive, and it is worth stating plainly on a site about dictating code. Source is mostly punctuation. Running remove-all over a dictated code line deletes the parentheses, brackets, dots and semicolons that the the Deterministic Pass just produced. VoiceGem keeps these as separate settings for that reason, and a mode configured for code dictation should leave punctuation alone.

The lowercase switch has a similar shape. It helps for tags and search terms and hurts everywhere else, because it destroys sentence starts, proper nouns and acronyms with no way to recover them.

What the browser tool leaves out

The stage before this one is not on this page. VoiceGem strips paired tag blocks and bracketed artifacts — the "[BLANK_AUDIO]" and "(upbeat music)" that speech models emit on silence — before any punctuation mode runs, and it removes filler words in the same pass. The filler word remover on this site covers that half.

And the tool takes text you already have, which is the slow way round. VoiceGem on macOS 14.4 or later transcribes on-device and applies the mode you chose before the text reaches your cursor, which is the part a web page structurally cannot do.

Related: the same thing for the filler word remover, the paragraph formatter, step by step, or how the word replacement tester works.

Common questions

No. Both are Unicode symbols rather than punctuation, so remove-all leaves them, along with dollar signs, carets, pipes, tildes and backticks. Brackets, dashes, quotes and full stops do go.

They are deleted rather than replaced with a space, so "don't" becomes "dont" and not "don t". Five apostrophe-like characters are handled, including the curly ones speech models produce.

No. The check looks at the character before the final period, and if that is also a period the text is left alone. Text ending in an exclamation or question mark is untouched as well.

No. The cleanup runs as a JavaScript function in your browser tab and works with the network disconnected.

No. Source code is mostly punctuation, so remove-all would delete the symbols the Deterministic Pass just produced. Keep is the right mode for a code dictation setup.