Skip to content
 
 

Repository files navigation

Dikte for Windows v1.1

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.

Türkçe README

Download dikte.exe Download source code

Every indicator style in all three modes: a dictation, a command for the agent, and a meeting

Eight styles, three modes — dictation, agent, meeting — over a drawn backdrop, so the glass rows are bending something real.

Get started in three steps

No Python, no terminal, no install wizard — one file.

  1. Download dikte.exe (~39 MB) from the latest release and put it wherever you like.
  2. Run it. The exe is unsigned, so Windows SmartScreen may show a blue "Windows protected your PC" box the first time — click More infoRun anyway.
  3. 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).

Running from source

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 run

install.ps1 checks Python, installs PyQt6 + PyAudioWPatch, and with -StartAtLogin registers Dikte in HKCU Run so it starts with Windows.

Using it

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.

New in v1.1

  • 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 seven appear animations, arriving and leaving together

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.

What changed from upstream

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.json is 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.

Roadmap

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.

License

GPL-3.0, same as upstream. The original application is by yusufipk; this fork adds the Windows port.

About

Voice-to-text dictation for Windows — tray app with glass overlay, multi-provider STT/cleanup and voice commands to Claude Code. Windows port of yusufipk/dikte.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages