Press Ctrl+Space, talk, press again. The recording is transcribed, a language
model cleans it up (dropping the uhs, the restarts, the missing punctuation),
and the result lands in your clipboard and is pasted into whatever window you
were typing in.
This is a Windows port of yusufipk/dikte
(built for KDE Plasma 6 on Wayland). Same behaviour, same workflow, native
Windows plumbing underneath — plus a few additions listed below. It ships as a
single self-contained dikte.exe; running from source needs Python 3.10+,
PyQt6 and PyAudioWPatch.
Eight styles, three modes — dictation, agent, meeting — over a drawn backdrop, so the glass rows are bending something real.
No Python, no terminal, no install wizard — one file.
- Download
dikte.exe(~39 MB) from the latest release and put it wherever you like. - Run it. The exe is unsigned, so Windows SmartScreen may show a blue "Windows protected your PC" box the first time — click More info → Run anyway.
- Answer four questions. A first run opens a short setup: the language you speak, who transcribes it, the key — a free Groq key covers both transcription and cleanup, and Test checks it there and then — and a recording to prove the three answers agree. Then a microphone icon sits in the tray.
Now press Ctrl+Space anywhere, say something, press it again. The text is
cleaned up and pasted where your cursor was.
To have Dikte start with Windows, tick Start Dikte when Windows starts in the
General tab. Settings and keys live in %APPDATA%\dikte\config.json;
deleting that folder and the exe removes Dikte completely.
Other providers work too: transcription on OpenAI, OpenRouter, Groq, Mistral or any OpenAI-compatible endpoint; cleanup on OpenRouter, OpenAI, Groq, Gemini or a custom endpoint (a local Ollama works).
Needs Python 3.10+ — PyQt6 and PyAudioWPatch are installed for you.
git clone https://github.com/AllastorV/dikte
cd dikte
./install.ps1 # or: ./install.ps1 -StartAtLogin
pythonw dikte.py # the settings window opens on first runinstall.ps1 checks Python, installs PyQt6 + PyAudioWPatch, and with
-StartAtLogin registers Dikte in HKCU Run so it starts with Windows.
| What | How |
|---|---|
| Start / stop recording | Ctrl+Space, or click the tray icon |
| Talk without toggling | Hold Ctrl+Space down and let go — a tap under 400 ms still toggles |
| Cancel a recording | Tray menu → Cancel recording |
| Speak a command to an agent | Tray menu → Ask Claude, or its own shortcut |
| Start / end a meeting | Tray menu → Record a meeting, or its own shortcut |
| Settings | Tray menu → Settings |
| Quit | Tray menu → Quit |
A recording also ends itself once you stop talking — six seconds of silence by default, adjustable or off in General.
The corner indicator shows a red dot, a live waveform and the elapsed time; it never takes focus. Everything upstream documents — transcript history, meeting recording with both call sides, audio-file transcription, speaking commands to Claude Code / Codex, hallucination filtering, silent-recording skip — works the same here.
-
The recording ends itself. Six seconds of silence after you stop talking and the recording closes on its own (adjustable, or off). The gate is calibrated against the room rather than against a fixed threshold, so a noisy room does not hold the recording open forever and a quiet one does not cut you off mid-sentence.
-
Push to talk. Hold the shortcut down and speak, let go and it stops; a tap under 400 ms still toggles, so the two ways of driving it live on one key. The indicator shrinks slightly while the key is held, and springs back when you let go.
-
Eight indicator themes. The four from v1.0 — Dark, Liquid Glass, Dark Liquid Glass, Frosted Glass — plus True Black (OLED), Paper, High Contrast, and one that follows the Windows accent colour.
-
Real glass. The two liquid rows bend what is behind them at the rim: a band just inside the border shows a squeezed image of what lies outside the box, so a straight line crossing the boundary visibly kinks there. That kink is what makes a box read as glass rather than as a hole in the screen.
-
Seven animation styles, five waveforms, two sizes. Each animation is a whole: the one name says how the indicator arrives and how it leaves, on the mirrored easing.
The sound can be drawn as bars, an oscilloscope, dots, mirrored bars or a ring. The indicator comes regular or compact, and a motion setting follows the Windows "show animations" preference, or overrides it either way.
-
A live preview in Settings. Both modes — dictation and the agent — drawn by the indicator's own paint code, next to the rows that choose the theme, the animation and the waveform. Not a mock-up of one: every pixel comes out of the widget that will actually appear.
-
Shortcuts for all three modes. Dictation, the agent and meeting recording each take their own global shortcut, and a combination Windows cannot parse now says so instead of silently never registering.
-
A four-question first run. Language, provider, key, and a test recording, instead of a ten-tab settings window with no indication of which three of its ninety controls have to be touched. Skippable, and it never appears again.
-
Transcribing on this computer. An offline provider: it downloads whisper.cpp (a 20 MB program, about 60 MB unpacked) and one model, and then transcribes with no network and no API key. Four models, labelled with what they cost you in waiting — measured on twelve threads of a desktop CPU, as seconds of processing per second of speech:
Model Download Speed Small (default) 465 MB 0.47× Base 141 MB 0.17× Turbo (large-v3, quantised) 547 MB 1.09× Tiny 74 MB 0.09× Turbo is the most accurate and makes you wait about as long as you spoke, which is why the default is the balance rather than the ceiling. Cleanup still wants a provider, or can be turned off entirely for a Dikte that talks to nobody.
-
The clipboard as material for the agent. Copy something, then speak about it: "summarise this", "what is wrong with this function". Off by default. The clipboard goes fenced and labelled as material rather than as instructions, and a long one is cut short with a note saying so.
-
A quiet update check. Once a day, GitHub is asked whether there is a newer release; if there is, one tray notice says so and the version is written down so it is never announced twice. Nothing is downloaded or installed, and it can be switched off in General.
-
Save is silent. The "Saved successfully" box that opened on every Save is gone: saving is what the button says it does, and the preview beside the rows shows the change land.
Platform plumbing (same public behaviour, Windows machinery):
| Upstream (Linux) | This port |
|---|---|
PipeWire pw-record / pactl |
WASAPI via PyAudioWPatch — mic and loopback (meeting system audio) |
| KDE global shortcuts | Win32 RegisterHotKey (works everywhere, no DE needed) |
wl-copy / ydotool paste |
Native clipboard + SendInput key injection |
~/.config / ~/.local/share |
%APPDATA%\dikte / %LOCALAPPDATA%\dikte |
install.sh, desktop entries |
install.ps1, HKCU Run autostart |
Additions not in upstream:
- More providers. Transcription: Groq (
whisper-large-v3-turbo), Mistral (Voxtral) and custom OpenAI-compatible base URLs (local Whisper servers, LM Studio). Cleanup/chat: OpenAI, Groq, Gemini and custom endpoints (Ollama) next to OpenRouter. Free-tier Groq handles both ends of the pipeline. - A configurable indicator. Eight themes, six positions (four corners,
top/bottom centre), seven animation styles, five waveforms and two sizes —
all of them in Settings with a live preview. The glass themes blur a snapshot
of the screen behind the indicator and bend it at the rim, DWM-free, so they
render identically on every Windows build. An unrecognised name in
config.jsonis instant rather than an error. - Recording ergonomics. Silence auto-stop and push-to-talk, both described above.
- A styled UI. One application-wide dark QSS theme for the settings window, dialogs and tray menu.
- Tests. A pytest suite of 2,400+ tests covering the resampler, the silence
gate and its calibration, hotkey parsing and the release watcher,
clipboard/paste ABI, VAD, config targets, every mark the indicator paints,
the settings window's load/save round trip, the local transcriber's command
line and readiness rules, the update check's version comparison, and the full
transcribe→cleanup→paste pipeline. Live-hardware and clipboard tests are
opt-in via marks:
pytest -m "not session and not device"for the safe set.
Everything v1.0 listed here has now shipped or turned out to have shipped already — the personal dictionary is the names and terms box that has been in Cleanup rules since v1.0 (it goes to the transcriber as a hint and to the cleanup model as a glossary), and the agent has streamed its answers and carried its conversation between commands for just as long.
Nothing is promised for v1.2 yet.
GPL-3.0, same as upstream. The original application is by yusufipk; this fork adds the Windows port.

