First dictation
Put your cursor where you want text to appear. Hold Right Ctrl. Say something. Let go.
The text arrives at your cursor, in whatever application had focus. You do not switch to OpenVoice to dictate, and you should not need to look at it.
For hands-free dictation, double-tap the shortcut, speak, then tap it again to finish. Press Escape to discard the dictation. Keep the original window and text field focused until delivery finishes.
What the Flow Bar is telling you
A small pill floats above your work. It is non-activating by design: it can never take focus, because if it did the caret would be lost and the product would not work.
When idle it names the key you hold. While the microphone is open it shows a seven-bar waveform tracking your voice, and the bar is green. Green means one thing in this app and nothing else: the microphone is open. When you let go it reads Writing… while the decode and formatting run.
What happens between letting go and the text landing
Five stages, in order:
- Capture stops. The keyboard hook does nothing but post a message.
- VAD trim. Leading and trailing silence is removed from the 16 kHz mono audio.
- Decode. The speech engine runs as a separate process and returns a transcript.
- Format. The rules turn that transcript into text you can use. This is the part that makes the tool worth having, and it is the cheapest stage of the five.
- Injection. The text is typed at your caret, or pasted if it is long.
If delivery fails, the transcript stays in OpenVoice. Open Home, click Copy, then press Ctrl+V where you want it. Recovery never copies automatically. Normal paste briefly borrows your clipboard, then restores its previous contents unless you copied something new.
Speaking punctuation
Say the punctuation you want and it becomes the glyph:
you say: hello comma world period
you get: hello, world.
dot and period both produce a full stop but bind differently: user dot name gives user.name, while done period next gives done. Next. One is part of an identifier, the other ends a sentence.
Dashes count. A run of two or more opens a command-line flag, a lone dash is a hyphen joining both sides, and a single dash before a single letter is a short flag:
cube control get pods dash dash all namespaces -> kubectl get pods --all namespaces
well dash known -> well-known
git commit dash m fix the overrun -> git commit -m fix the overrun
Layout works too: new line and new paragraph do what they say, and scratch that discards everything you have said so far in this utterance.
When you need the literal word
Say literally first. Without it, some sentences would be untypeable: you could never dictate the phrase "press comma to continue".
press literally comma to continue -> press comma to continue
The escape covers the whole command phrase, not just the next word, so literally fat arrow gives you both words rather than fat ->.
Building identifiers
camel case user name -> userName
pascal case user name -> UserName
snake case user name -> user_name
kebab case user name -> user-name
screaming snake case max size -> MAX_SIZE
The transform absorbs the following words up to the next punctuation, capped at six so a missing comma cannot swallow a paragraph.
Fillers
um, uh, erm and friends are always removed. Discourse markers like you know, sort of and basically are only removed in profiles set to the aggressive level, because they are sometimes load-bearing and silently deleting them produces sentences you did not say. Which level applies depends on where you are typing. See profiles.
An utterance that is nothing but filler formats to an empty string, and the session ends rather than pasting air.
Seeing what it heard
Your latest dictation appears in Home, with earlier dictations in history. If a word came out wrong, Fix a word shows what the model actually heard, which is usually most of the diagnosis. See the dictionary.