Skip to content
undan

Help › Dictation

Dictation

Speak instead of typing, in every text field of the app: in the note editor, in an email draft, in the search field, in the chat, in a form. The text appears where the cursor is — word by word, about half a second after you have said it.

Everything happens on this computer: the speech models compute here, without a network, without an account. Nothing you say leaves the computer.

Preparing once: downloading the model#

Settings → Dictation → Speech models: for Nemotron 3.5 Streaming, click Download (682 MB, once). The download continues in the bar at the bottom, even if you close Settings; an interrupted download resumes at the next Download. Every model is checked against its checksum before it is used.

Two models are optional — they read what was said once more and type the more accurate version over it: at every pause, and if you speak for a long time without a pause, at the latest every 10 seconds (with 5 seconds before, so that the beginning doesn't lose its context):

ModelFor whatSpeed
Parakeet v3German and English — more accurate punctuationabout 0.2 s per segment, on any computer
Whisper large-v3-turbothe most accurate, and the better choice for Swedishon the graphics card about 0.4 s per segment, without one a few seconds

Whisper computes via whisper.cpp. That is not included in every build of the app; if it is missing, the row in Settings says so ("whisper.cpp is missing in this build"). If you build from source, you add it once with ./gradlew whisperCpp — with CUDA if the CUDA tools are installed, with Vulkan if the Vulkan headers are there.

Re-reading sets who re-reads: Automatic takes Parakeet for German and English and Whisper for Swedish — depending on what is downloaded.

Re-reading only happens if this computer is fast enough: a segment (10 s with 5 s before it) in at most 1.5 s. Dictation measures this itself, on a 15-second audio sample, before a model re-reads for the first time, and again with Check and measure. In Settings, below every model, it says how fast it is here, and next to Re-reading who is reading right now ("now: Parakeet"). If a model is too slow, Nemotron writes alone — on a laptop without a graphics card that is normal for Whisper. If it becomes too slow in the middle of a dictation (battery, other load), re-reading stops, and the bar says so.

With a graphics card: Voxtral as the live engine#

If your computer has a graphics card with 10 GB of free memory, Voxtral can write along instead of Nemotron (Mistral, Voxtral Mini 4B Realtime). It is clearly more accurate — measured 3.6 instead of 11.4 % word errors on read Wikipedia sentences with names and numbers —, writes with capitals and punctuation, and shows a word about a second after you say it. That matters most outside Undan, where nothing is re-read.

To switch it on: Settings → Dictation → Speech models → Download for Voxtral (4.7 GB, once), then under Speaking → Live engine choose Voxtral (graphics card). The choice only appears when a card has enough free memory right now; next to it, it says which card Voxtral runs on or why it can't. If the card is full when a dictation starts, the dictation says so — it does not quietly use Nemotron.

Voxtral re-reads itself: a second stream hears the same with a 2.4 s delay, writes more accurately (measured 2.9 instead of 3.6 % word errors) and replaces the words of the live text about two seconds later — fainter until they are replaced. Parakeet and Whisper do not re-read behind Voxtral (they made its text worse). In other apps only the fast stream writes, since nothing can be replaced there. If the graphics card cannot keep up with both streams in real time, re-reading is suspended and the bar says so; Check and measure tells you beforehand. Voxtral detects the language by itself — it cannot do Swedish, Nemotron stays for that. The bottom of the bar says what is writing along and what re-reads. After five minutes without dictation Voxtral releases the graphics card again (about 20 W less); the next dictation loads it again while the microphone already listens.

Does Voxtral suddenly write in lower case without punctuation after a pause? Then your microphone is almost completely silent in the pauses — usually because of noise suppression or a noise gate (in the system's sound settings, the driver or your headset's app). Switch it off for dictation; a normal noise floor keeps Voxtral on track. Otherwise choose Nemotron.

It computes via transcribe.cpp — if you build from source, add it once with ./gradlew transcribeCpp (with CUDA).

Which model can do what?#

Settings → Dictation → Speech models → Overview shows the same:

ModelRoleRuns onLanguagesGerman, word errorsSwedish
Nemotron 3.5writes along liveCPUabout 3611.4 % live22 %, weak
Parakeet v3re-readsCPU25 European12.3 % re-read15 %
Whisper large-v3-turbore-readsgraphics card, else CPU995.4 % re-read7.9 %
Voxtral Realtimewrites along live, re-reads itselfgraphics card, 10 GB free133.6 % live, 2.9 % re-readcannot do it

German measured on 100 read Wikipedia sentences by different speakers (FLEURS), Swedish according to the makers. Voxtral handles German, English, French, Spanish, Italian, Portuguese, Dutch, Russian, Arabic, Hindi, Chinese, Japanese and Korean.

Dictating#

  • Ctrl+Shift+Space starts dictation — in every window of the app, including the mail or note window. Pressing it again, or Esc, ends it. (The key can be rebound under Settings → Keyboard.)
  • Or the microphone button at the top right (next to History, Backup and Help) — it applies to the whole app, including the email draft and the note editor.

At the bottom center of the window the dictation bar appears:

  • on the left the waves — so you can see that the microphone hears you —, then the time;
  • DE · EN · SV: the language. A switch applies from the next sentence, even in the middle of a dictation, and stays for the next one;
  • the microphone: Default is the system's; a click shows the other devices;
  • Stop (■) ends; what you said last appears at once, and the bar closes — re-reading finishes in the background;
  • below that, what is being heard right now;
  • at the bottom keep open and Stop after silence: without the checkbox, dictation ends by itself when for that long there was neither your voice at the microphone nor new text nor a key press (2, 4, 8 or 15 s). With the checkbox it stays open until you end it. Dictation remembers both.

The bar never takes the keyboard from you: if you click on it, the cursor stays where it was. Move it by dragging its surface — for example to the bottom right when it is over your note. It remembers the spot for next time (in every window at the same position relative to its bottom edge); a double-click puts it back in the middle. When you dictate into another program, it has a spot of its own there (below, "Outside Undan").

Sounds. When dictation is listening, a quiet, bright double tone sounds; when it ends (key, Stop, pause), a falling one. To turn them off: Settings → Dictation → Speaking → Sounds.

Typing and clicking while you dictate#

You can step in yourself at any time: Return for a new paragraph, a click into the subject, correcting a word by hand. What you have said up to then stays where it is; what you say afterwards appears at the new writing position. The re-reader's more accurate version still arrives at its place — even if you are now writing further up or down. If you have written into a dictated sentence yourself, it stays the way you have it: the re-reader never overwrites you.

Re-reading happens in the note editor and in the text of an email. In other fields — subject, search, chat, forms — dictation writes Nemotron's text.

An instruction for the AI#

What is more than text, you tell the AI — with a key of its own, Ctrl+Alt+Space (can be rebound under Settings → Keyboard):

  • "Add punctuation and paragraphs", "shorter", "more formal", "as a list" — this refers to the selection, otherwise to what you just dictated, otherwise to the paragraph at the cursor. Select, key, say what should happen.
  • "Write to Irma asking whether she can clear out the basement tomorrow, and create a task for me on Friday to follow up" — the AI suggests the email and the task.

The bar shows "Instruction"; pressing the key again (or ■) sends it, Esc discards it. Then a card appears: what the AI is doing right now, and its result.

  • A new text appears as "Before" and "New": Return puts it in its place — one Ctrl+Z in the text takes it back —, Esc discards it. If you have written there yourself in the meantime, the card takes over nothing; the suggestion stays in the AI chat.
  • Suggestions (an email, a task, an event) appear in the card as in the AI chat: nothing happens without your click.
  • Every instruction is a session in the AI chat — the chat icon in the card opens it, and you can ask follow-up questions there. If the chat is working on something else, the instruction waits.

The card can be moved like the bar and remembers its place. Instructions need the network and take a few seconds; dictation itself stays on the computer. There are deliberately no new command words for this: where and in what form is decided by keyboard and mouse, what should happen is said in the instruction.

Voice commands#

Said on their own — with a short pause before:

GermanEnglishSwedish
neuer Absatznew paragraphnytt styckeblank line, the next sentence starts with a capital
neue Zeilenew lineny radline break

"Kind regards, new line, Peter" gives two lines. In the middle of a sentence — "we need a new line in the form" — it stays text. Punctuation is set by the models themselves.

The first dictation after startup loads the models (on this computer under a second, on a slow disk a few seconds). The microphone is already listening meanwhile — nothing is lost, the text just comes a little later. After that the models stay loaded. If you want the first dictation without waiting, turn on Settings → Dictation → Load at startup.

What happens in the field#

The text appears as if it were being typed — character by character, about half a second after speaking.

With re-reading, whatever has not been re-read yet is fainter — at half the opacity of its color, with no line underneath; in a field that is already quiet, like the note of a task, one step fainter still. A second, wider and fainter cursor shows where the re-reader is. When the more accurate version comes, it types it over the provisional one, and it stands in full color. Without re-reading there is neither faint text nor a second cursor.

Ctrl+Z takes back what you have dictated since your last own key press (at most the last 10 seconds at once) — together with the more accurate version. After a Return between two paragraphs, therefore, first the second one, then the line break, then the first one.

If no text field has the focus (because another program was in front, say), the bar collects the text: "n words are waiting". A click into a field picks it up with the next word; after the end, Copy puts it on the clipboard.

Outside Undan#

Even when another program is in front — the browser, a terminal, Slack — Ctrl+Shift+Space can dictate. Turn it on under Settings → Dictation → Outside Undan, "Type into other apps".

Undan then types the words live into the program in front, at its cursor. It only appends there and doesn't re-read — Undan can't see what you clicked meanwhile, so it never overwrites anything. The text is what the model hears while you speak; for the most accurate text, dictate into a note and copy it from there. A spoken "new line" is a Return — in the terminal it runs the line.

The bar sits at the bottom center of the screen meanwhile. Drag it somewhere else and it stays there, even when the text needs another line, and is back in that spot next time — separate from its place in Undan's windows. A double-click puts it back.

The first time, the system asks: once whether Undan may take the key, and once whether Undan may use the keyboard. It remembers both. Change the key later in the system settings under Shortcuts, entry "Undan"; you can forget the typing permission under Settings → Dictation, then the system asks again.

With an Undan window in front, the key dictates into the field as always. Undan has to be running. Linux so far; Windows and macOS follow.

Computing#

Settings → Dictation → Computing:

  • CPU cores — how many cores dictation may take. Automatic is half, at most 8: more makes Parakeet slower, and the rest of the app wants to compute too. Nemotron takes at most 4 of them.
  • Graphics card — Whisper on the graphics card, if there is one (CUDA, Vulkan or Metal). Nemotron and Parakeet always compute on the CPU.
  • Check and measure says what is doing the computing right now, such as "whisper.cpp runs on: CUDA0 — NVIDIA GeForce RTX 3090 Ti" and "Voxtral runs on: NVIDIA GeForce RTX 3090 Ti (21.4 GB free)", and measures every downloaded re-reader again on the audio sample.

A change applies from the next dictation.

Memory#

The models take about 1 GB, with re-reading 1.8 GB, in a process of their own (if it crashes, the app keeps running). It only gives the memory back when the computer runs short and there has been no dictation for a minute.

Licenses#

Nemotron 3.5 (NVIDIA) is under the OpenMDW-1.1, Parakeet v3 (NVIDIA) under CC-BY-4.0, Whisper (OpenAI) under MIT, Voxtral (Mistral) under Apache-2.0; computing is done with sherpa-onnx (Apache-2.0), ONNX Runtime (MIT), whisper.cpp (MIT) and transcribe.cpp (MIT).