Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

31 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
DictaPulse logo

DictaPulse

Local AI voice dictation for KDE Plasma - speak anywhere, get polished text.

Website License Platform Qt C++ whisper.cpp Status

Press a shortcut โ†’ speak โ†’ text appears in the app you're using. Fully offline. Built on Qt 6 Quick/QML, KDE Frameworks 6, and whisper.cpp.

dictapulse.com


DictaPulse dashboard - dark mode

One settings hub, a tactile "clay" design, and an AI Profile that learns how you speak - in dark and light.


๐Ÿงช This is a public beta

DictaPulse is an early, actively-developed release - not the finished product. It works and it's daily-driver-usable, but expect rough edges as features land and stabilize across platforms. Found a bug or want a feature? Please open it on GitHub โ†’ Issues for bugs, Discussions for ideas and feature requests. Your reports during beta directly shape what ships.


Why DictaPulse

Voice dictation tools on Linux either depend on the cloud, lock you into a single desktop, or feel like 2008. DictaPulse is built on the simplest possible idea: a global shortcut, a beautiful floating overlay, a fast local Whisper model, and the transcribed text typed straight into whatever you're focused on - Slack, VS Code, your terminal, your browser. No upload. No account. No SaaS dependency.

The KDE Plasma 6 release is shipping first. The architecture is cleanly layered so future Windows / macOS / Android-IME / iOS-keyboard ports reuse the same engine.

โœจ Features

๐ŸŽ™๏ธ Global shortcut โ†’ dictate anywhere Registered with KGlobalAccel so it works in any focused window, even when DictaPulse is hidden in the tray. Toggle, push-to-talk, or auto-stop-on-silence modes.
๐ŸŒŠ Animated listening overlay A small floating pill with a live waveform reacting to your voice. Position, size, opacity, sounds, and reduced-motion are all configurable.
โšก Direct text insertion Transcripts are typed into your active app via wtype (Wayland) or xdotool (X11). Clipboard is a fallback, not the default.
๐Ÿง  Local Whisper transcription whisper.cpp runs entirely on your machine. Audio never leaves the device.
โœจ Transcript cleanup, your way Pick your polish level: offline rules engine (instant, incl. Arabic punctuation), a local LLM via Ollama / LM Studio, or a remote API (Anthropic / OpenAI / any OpenAI-compatible endpoint). API keys live in your system keyring - never in config files.
๐Ÿ‘ค AI Profile that learns you A Profile module - Refine (fillers, auto-punctuation, smart lists, spoken corrections), Personalize (dictionary, voice templates, tone, and a usage dashboard with animated glowing charts), and Devs Voice (syntax-aware dictation + your tech jargon). Everything you set is fed to whichever AI you've connected - Whisper's vocabulary bias and the cleanup LLM's instructions - so it gets more precise the more it knows you.
๐ŸŽฏ Per-app output rules Override the output mode per focused app - e.g. always copy + paste into your terminal. Active window detected via a tiny KWin script (Wayland) or xdotool (X11).
๐ŸŽ›๏ธ Built-in model manager Browse, download, switch, and delete Whisper models from the GUI. Sizes from 75 MB (tiny) to 3 GB (large-v3).
๐ŸŒ 99 languages English, Arabic, Italian, French, German, Spanish, Japanese, Chineseโ€ฆ the full Whisper set, with constrained auto-detect so it never drifts to a wrong-but-similar language.
๐Ÿ–ฅ๏ธ CPU / GPU / Hybrid CPU works out of the box. Optional Vulkan, CUDA, and ROCm/HIP builds for GPU acceleration, with automatic hardware detection.
๐Ÿ›ก๏ธ Privacy-first No telemetry. No recordings on disk by default. Local-only by design - cloud cleanup is strictly opt-in.
๐ŸŽจ Tactile "clay" design A custom QML design system: pillow-embossed surfaces, press physics on every button, serif display headlines, and matching dark & light themes that follow your system or your mood.
๐Ÿงฉ Cross-platform-ready core The engine is platform-agnostic; only the desktop adapter is KDE-specific.

๐Ÿ–ผ๏ธ A look around

Dark Light
Dashboard dark Dashboard light
Language dark Language light
Model manager Output settings
Shortcuts Cleanup providers

The Profile module - your AI personalization layer, with animated glowing usage charts:

Usage dashboard Refine
Profile usage dashboard Profile Refine tab

๐Ÿš€ Install

Arch / CachyOS - AUR (recommended)

DictaPulse is on the AUR in two flavours. Install with your favourite helper (paru, yay, โ€ฆ):

paru -S dictapulse-bin    # prebuilt Vulkan AppImage - no compiling, installs in seconds
# or
paru -S dictapulse        # builds from source against your system's Qt/KF6
  • dictapulse-bin - fastest path; ships the prebuilt Vulkan AppImage, unpacked to /opt.
  • dictapulse - compiles whisper.cpp + the app from source (Vulkan on). Pick this if you'd rather link against your exact system libraries.

They provides/conflicts each other, so install whichever suits you - not both.

Any distro - AppImage

Grab the latest DictaPulse-*-x86_64.AppImage from the Releases page:

chmod +x DictaPulse-*-x86_64.AppImage
./DictaPulse-*-x86_64.AppImage

Runs unsandboxed on the host (so global shortcuts + injection work). Requires KDE Plasma 6 (Wayland), a running ydotoold, and host ffmpeg (present on most desktops). The Vulkan loader is bundled; a GPU driver enables acceleration, otherwise it falls back to CPU.

Build from source

git clone https://github.com/Silverhairfx/DictaPulse.git
cd DictaPulse
./scripts/install.sh

The installer:

  1. Checks Arch packages and offers to install anything missing.
  2. Configures CMake.
  3. Fetches & builds whisper.cpp (first build only - grab a coffee).
  4. Installs to ~/.local/bin/dictapulse + ~/.local/share/applications/dictapulse.desktop.

Add ~/.local/bin to your PATH if it isn't already:

# fish
echo 'set -gx PATH $HOME/.local/bin $PATH' >> ~/.config/fish/config.fish
# bash / zsh
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

GPU acceleration (optional, advanced)

./scripts/install.sh --vulkan     # Cross-vendor GPU acceleration
./scripts/install.sh --cuda      # NVIDIA only (requires CUDA toolkit)
./scripts/install.sh --rocm      # AMD only (requires ROCm/HIP)

GPU support is off by default so the first build stays fast and dependency-light.


๐Ÿ› ๏ธ First run

  1. Launch DictaPulse from your KDE launcher (or run dictapulse).
  2. The settings window opens. Go to Models and click Download on Base (multilingual) (~150 MB, fast, good quality). Tip: pick .en variants if you only dictate in English - they're a touch more accurate.
  3. Go to Shortcuts. The default is Ctrl+Alt+Space. Change it if you like - shortcuts apply instantly.
  4. Close the settings window - it minimizes to the tray (microphone icon). The app keeps running.
  5. Anywhere - in Slack, VS Code, a Reddit comment box, your terminal - press the shortcut, watch the overlay appear, speak naturally, then either press the shortcut again or just stop talking (auto-stop kicks in after silence). Your transcript is typed straight into the field.

That's it.


๐Ÿ“– Settings tour

The settings window has eleven pages. Quick map:

Page What it controls
Dashboard Live status, mic level meter, the last transcript, quick info card. Start/stop manually from here too.
Shortcuts Global hotkeys (KGlobalAccel) and dictation mode: toggle, push-to-talk, or auto-stop.
Models Download, switch, and delete Whisper models. Shows size, speed, accuracy, RAM hint.
Language Default language, enabled-languages set (constrains auto-detect), translate-to-English.
Output Direct insertion vs clipboard vs copy+paste. Capitalization, filler-word removal, trailing space.
Cleanup Transcript polish: rules engine, local LLM (Ollama / LM Studio), or remote API (Anthropic / OpenAI) with keyring-stored keys and a custom system prompt.
Backend CPU/GPU/Hybrid mode, acceleration API picker, thread count. Detects your hardware automatically.
Overlay Position (bottom/top/cursor), size with live preview, opacity, waveform, sound cues, reduce-motion.
Privacy Recording storage, telemetry toggle (off by default and currently a no-op).
Advanced VAD threshold, input gain & auto-normalize, silence-to-stop timing, max duration, autostart, tray behavior, reset-all.
About Version, credits, license, repo link.

๐ŸŽจ The design system

The UI is a hand-built QML design language - no stock widget look:

  • Clay surfaces - every card, button, and input is "molded" out of the canvas with an inset top sheen, a pillow shade, and a plush drop shadow (three depth tiers: raised, small, pressed).
  • Press physics - buttons lift 1 px on hover and sink into the canvas on press; toggles slide with a spring; checkmarks pop.
  • Two faces - a white tactile-pop light theme with vivid indigo, and a deep blue-slate dark theme with a luminous accent. Follows the system scheme or your explicit choice, switchable live from the sidebar.
  • Serif display headlines - DM Serif Display for page titles and card headers, with atmospheric radial washes behind the canvas.

All tokens live in a single C++ Theme singleton (src/app/ThemeProvider.*), and the components (qml/components/Clay*.qml) are reusable drop-ins: ClayButton, ClaySwitch, ClayComboBox, ClaySlider, ClaySpinBox, ClayTextField, ClayDialog, and friends.


๐Ÿงฑ Architecture

DictaPulse is laid out as a platform-agnostic core with a thin desktop adapter. The KDE Plasma adapter is the only one wired up today; Windows / macOS / Android-IME / iOS-keyboard adapters can slot in alongside without touching the engine.

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                       Qt 6 / QML UI                        โ”‚
โ”‚     Settings window ยท Floating overlay ยท Tray menu         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
               โ”‚  signals / Q_PROPERTY
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Controller (C++)                        โ”‚
โ”‚  Wires shortcuts โ†’ audio capture โ†’ whisper โ†’ cleanup โ†’     โ”‚
โ”‚  injection                                                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
      โ”‚        โ”‚        โ”‚        โ”‚          โ”‚
      โ–ผ        โ–ผ        โ–ผ        โ–ผ          โ–ผ
  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
  โ”‚ Audio  โ”‚ โ”‚Whisperโ”‚ โ”‚ Model โ”‚ โ”‚Cleanup โ”‚ โ”‚   Platform     โ”‚
  โ”‚Capture โ”‚ โ”‚Engine โ”‚ โ”‚Managerโ”‚ โ”‚Service โ”‚ โ”‚   Adapter      โ”‚
  โ”‚(Qt MM) โ”‚ โ”‚(.cpp) โ”‚ โ”‚(HTTP) โ”‚ โ”‚+Keyringโ”‚ โ”‚ (KDE / wtype)  โ”‚
  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Source tree:

DictaPulse/
โ”œโ”€โ”€ CMakeLists.txt              Top-level - finds Qt 6, optional KF6, fetches whisper.cpp
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ main.cpp                QApplication + QML engine + DI wiring
โ”‚   โ”œโ”€โ”€ app/
โ”‚   โ”‚   โ”œโ”€โ”€ Controller.{h,cpp}      State machine, exposed to QML
โ”‚   โ”‚   โ”œโ”€โ”€ Settings.{h,cpp}        QSettings-backed preferences
โ”‚   โ”‚   โ””โ”€โ”€ ThemeProvider.{h,cpp}   Clay design tokens (QML `Theme` singleton)
โ”‚   โ”œโ”€โ”€ core/
โ”‚   โ”‚   โ”œโ”€โ”€ audio/              16 kHz mono PCM capture, VAD, auto-gain
โ”‚   โ”‚   โ”œโ”€โ”€ transcription/      whisper.cpp wrapper (threaded)
โ”‚   โ”‚   โ”œโ”€โ”€ models/             Catalog + downloader + ListModel
โ”‚   โ”‚   โ”œโ”€โ”€ text/               Rules cleanup, capitalize, filler removal
โ”‚   โ”‚   โ”œโ”€โ”€ cleanup/            LLM cleanup providers + keyring secret store
โ”‚   โ”‚   โ””โ”€โ”€ hardware/           CPU/GPU/RAM detection
โ”‚   โ””โ”€โ”€ platform/
โ”‚       โ”œโ”€โ”€ PlatformAdapter.h   Abstract surface (future-OS friendly)
โ”‚       โ””โ”€โ”€ linux/              KDE adapter: KGlobalAccel, wtype, KStatusNotifierItem
โ”œโ”€โ”€ qml/
โ”‚   โ”œโ”€โ”€ Main.qml                Sidebar shell + page Loader
โ”‚   โ”œโ”€โ”€ Overlay.qml             Frameless transparent always-on-top pill
โ”‚   โ”œโ”€โ”€ components/             Clay design kit: ClayButton, ClaySwitch, ClayDialogโ€ฆ
โ”‚   โ””โ”€โ”€ pages/                  Dashboard / Shortcuts / Models / Language / โ€ฆ
โ”œโ”€โ”€ resources/
โ”‚   โ”œโ”€โ”€ icons/dictapulse.svg
โ”‚   โ”œโ”€โ”€ fonts/                  DM Serif Display (OFL)
โ”‚   โ”œโ”€โ”€ sounds/                 Overlay pop cues
โ”‚   โ””โ”€โ”€ desktop/dictapulse.desktop.in
โ””โ”€โ”€ scripts/install.sh

๐Ÿงช Build manually

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
./build/src/dictapulse

To install system-wide instead of ~/.local:

cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
sudo cmake --install build

CMake options

Option Default What it does
DICTAPULSE_ENABLE_VULKAN OFF Builds whisper.cpp with Vulkan acceleration
DICTAPULSE_ENABLE_CUDA OFF Builds whisper.cpp with CUDA acceleration
DICTAPULSE_ENABLE_HIP OFF Builds whisper.cpp with ROCm/HIP acceleration
CMAKE_BUILD_TYPE Release Set to Debug for development

๐Ÿ“ฆ Requirements

Runtime

Package Why
KDE Plasma 6 (Wayland or X11) Target environment
Qt 6.9+ (Core, Gui, Widgets, Qml, Quick, QuickControls2, Multimedia, Svg, Network, DBus) UI + audio (6.9 for the RectangularShadow the clay design uses)
KDE Frameworks 6 (KGlobalAccel, KStatusNotifierItem, KNotifications, KConfig, KColorScheme, KWindowSystem) Native KDE integration
QtKeychain (Qt6) Keyring storage for LLM-cleanup API keys
PipeWire / PulseAudio Microphone capture
wtype (Wayland) or xdotool (X11) Text injection - wtype is recommended

Build

Package Why
CMake 3.21+ Build system
GCC 12+ / Clang 15+ C++20
git Fetches whisper.cpp

Arch / CachyOS one-liner

sudo pacman -S --needed \
    qt6-base qt6-declarative qt6-multimedia qt6-svg qt6-wayland \
    extra-cmake-modules qtkeychain-qt6 \
    kglobalaccel kstatusnotifieritem knotifications kconfig \
    kcolorscheme kwindowsystem \
    cmake ninja gcc git wtype

๐Ÿ—ฃ๏ธ Supported languages

DictaPulse uses Whisper, which supports 99 languages. The most common, ready to enable on the Language page:

๐Ÿ‡ฌ๐Ÿ‡ง English ยท ๐Ÿ‡ธ๐Ÿ‡ฆ Arabic ยท ๐Ÿ‡ฎ๐Ÿ‡น Italian ยท ๐Ÿ‡ซ๐Ÿ‡ท French ยท ๐Ÿ‡ฉ๐Ÿ‡ช German ยท ๐Ÿ‡ช๐Ÿ‡ธ Spanish ยท ๐Ÿ‡ต๐Ÿ‡น Portuguese ยท ๐Ÿ‡ท๐Ÿ‡บ Russian ยท ๐Ÿ‡น๐Ÿ‡ท Turkish ยท ๐Ÿ‡ณ๐Ÿ‡ฑ Dutch ยท ๐Ÿ‡ต๐Ÿ‡ฑ Polish ยท ๐Ÿ‡ฏ๐Ÿ‡ต Japanese ยท ๐Ÿ‡จ๐Ÿ‡ณ Chinese

Pick a multilingual model (base, small, medium, large-v3, large-v3-turbo) for non-English use. The .en variants are English-only but slightly faster and more accurate for English.


๐Ÿง  Model picker cheat sheet

Model Size Speed Accuracy Good for
tiny.en 75 MB โšกโšกโšกโšกโšก Basic Notes app on a Raspberry Pi
base.en โญ 150 MB โšกโšกโšกโšก Good Default pick for English
small.en 480 MB โšกโšกโšก Very good Most laptops, professional notes
base 150 MB โšกโšกโšกโšก Good Mixed-language users (EN + AR + IT)
small 480 MB โšกโšกโšก Very good Multilingual sweet spot
medium 1.5 GB โšกโšก Excellent When you have a real GPU
large-v3-turbo 1.6 GB โšกโšกโšก Excellent GPU users wanting the best balance
large-v3 3 GB โšก Excellent Maximum accuracy, GPU strongly advised

๐Ÿ›ฃ๏ธ Roadmap

  • MVP - KDE Plasma 6 + tray + overlay + whisper.cpp + wtype + model manager + language picker + settings persistence
  • LLM transcript cleanup - rules / local LLM / remote API providers with keyring-stored keys
  • Clay design system - tactile dark & light themes, custom component kit
  • Personal dictionary - case-sensitive replacements per language
  • Live partial transcript in the overlay
  • Per-app output rules (e.g., always paste in terminals)
  • GNOME adapter via DBus + custom shortcut backend
  • Windows adapter (SendInput, Win32 hotkey, native tray)
  • macOS adapter (CGEvent, Carbon hotkey, NSStatusItem)
  • Android IME (system-wide voice keyboard)
  • iOS keyboard extension (within Apple's keyboard constraints)
  • AppImage / Flatpak / AUR packages

โ“ FAQ

Does any audio leave my machine?

No. Whisper runs locally via whisper.cpp. Models are downloaded from huggingface.co over HTTPS once, then everything is on-device. The only exception is the optional remote-API cleanup provider - if you enable it, the transcribed text (never audio) is sent to the provider you chose.

I press the shortcut but nothing happens.
  1. Check the shortcut on the Shortcuts page - capture fields apply instantly, but Re-apply shortcuts forces a re-register.
  2. Open KDE System Settings โ†’ Shortcuts โ†’ Global Shortcuts โ†’ DictaPulse and confirm it's set there.
  3. Some Plasma versions block global shortcuts until the registering app has been seen once - try restarting Plasma or logging out/in.
Text doesn't appear in my app.

On Wayland, the Linux input model doesn't expose synthetic key events to every window. DictaPulse uses wtype, which works in most native apps. If it fails:

  1. Make sure wtype is installed (pacman -Q wtype).
  2. In Output settings, switch to Copy + paste mode - DictaPulse will copy the text and send Ctrl+V.
  3. Enable clipboard fallback so you never lose a transcript.
How do I switch between English and Arabic on the fly?

Pick a multilingual model in the Models page. Then on the Language page enable both English and Arabic and turn on Auto-detect. Detection is constrained to your enabled set, so it can't drift to a wrong-but-similar language.

Can I use a GPU?

Yes. Rebuild with ./scripts/install.sh --vulkan (cross-vendor), --cuda (NVIDIA), or --rocm (AMD). After rebuilding, switch Backend โ†’ Compute mode to GPU and pick the matching API.

What does the LLM cleanup send, and where are my API keys?

Cleanup sends your transcribed text plus your system prompt to the endpoint you configured - a local server (Ollama / LM Studio, nothing leaves your machine) or a remote API. Keys are stored in your system keyring (KWallet / libsecret) via QtKeychain, never in DictaPulse's config file.

Where are settings and models stored?
  • Preferences: ~/.config/DictaPulse/DictaPulse.ini
  • Models: ~/.local/share/DictaPulse/models/
How is this different from nerd-dictation / Speech Note / Wispr Flow?
  • nerd-dictation is a CLI/script tool - DictaPulse is a polished GUI/tray app with model management, overlay UX, and KDE-native integration.
  • Speech Note is a great GTK app focused on the GNOME stack. DictaPulse is built around KDE Plasma idioms (KGlobalAccel, KStatusNotifierItem, Qt 6 Quick).
  • Wispr Flow is a cross-platform SaaS that sends audio to the cloud. DictaPulse is fully local.

๐Ÿ› Reporting bugs & requesting features

This is a beta - your feedback is the roadmap. Please use GitHub's own tools:

  • ๐Ÿž Bugs โ†’ open an Issue. Helpful to include:
    • Output of inxi -Fxz (or uname -a + plasmashell --version)
    • Whether you're on Wayland or X11
    • The active model and backend mode
    • A reproduction recipe
  • ๐Ÿ’ก Feature requests & ideas โ†’ start a Discussion.
  • ๐Ÿ”€ Pull requests are welcome - by contributing you agree your changes are licensed under GPL-3.0 (see below).

๐Ÿ“œ License & ownership

Built by Tymour Kadry (@silverhairfx) and owned by ETK Technologies - https://etk-tech.com.

Licensed under GPL-3.0 (see also NOTICE). In plain terms:

  • โœ… Free to use - personally and commercially, today and as it grows.
  • โœ… Free to study, modify, and share - forks are welcome.
  • ๐Ÿ”’ Copyleft - no closed-source forks. Any distribution (including modified or rebranded versions, and anything sold) must ship the complete corresponding source under GPL-3.0. Re-licensing DictaPulse or a derivative as closed source / a paid proprietary product is a license violation and will be pursued.
  • ๐Ÿท๏ธ Attribution required - forks must preserve the original authorship and copyright (ETK Technologies / Tymour Kadry).
  • ๐Ÿงฌ Provenance - the source and binary carry origin markers (see NOTICE); scripts/detect-forks.py scans public GitHub for copies.

As the sole copyright holder, ETK Technologies reserves the right to offer future versions, tiers, or modules under separate commercial terms. That does not affect your rights to this GPL-3.0 release.

Bundled dependencies retain their own licenses: whisper.cpp (MIT) ยท Qt 6 (LGPL-3.0 / commercial) ยท KDE Frameworks 6 (LGPL) ยท QtKeychain (BSD-3-Clause) ยท DM Serif Display (SIL OFL 1.1).


Built for KDE Plasma ยท Powered by Whisper ยท Made for people who'd rather talk than type.

About

Local AI voice dictation for KDE Plasma 6 (Wayland): press a shortcut, speak, and get polished text typed into any app. Fully offline, powered by whisper.cpp.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages