Dein lokaler KI-Sprachassistent für KDE Plasma & Wayland
🇬🇧 English | 🇩🇪 Deutsch
Sprache per Hotkey aufnehmen, lokal oder online transkribieren, optional per LLM umschreiben und direkt in die aktive Anwendung einfügen.
Important
Eigenständiger Linux-Port: Dieses Repository enthält ausschließlich den Linux-Port von Blitztext – eine eigenständige Python 3/PyQt6-Implementierung optimiert für Kubuntu/Ubuntu unter KDE Plasma mit Wayland. Für die originale macOS-Version besuche bitte das offizielle Haupt-Repository.
- Mehrsprachige Oberfläche (EN/DE): Schalte die App-Oberfläche zwischen Deutsch und Englisch um – unter Einstellungen → Allgemein → „Sprache der Oberfläche" (die Änderung greift nach einem Neustart der App).
- Compose-Fenster: Text eintippen oder einfügen, einen Workflow und Schreibstil wählen und von der KI umschreiben lassen — ganz ohne Mikrofon. Mit Tonfall-Auswahl, eigenem Preset, Varianten-Verlauf und Signatur-Unterstützung.
- OpenRouter & eigene LLM-Endpunkte: Nutze OpenRouter oder eine beliebige OpenAI-kompatible API als Alternative zu OpenAI für alle KI-Workflows.
- Audio-Export: Speichere die Ausgabe der Vorlesefunktion direkt als Audiodatei.
- Eigennamen / Begriffe: Erweitere das Vokabular der KI um eigene Begriffe, Namen oder Fachwörter für perfekte Transkriptionen.
- Globale Hotkeys: Jederzeit von überall im System aufnehmen.
- Auto-Paste: Erkennt Sprache und fügt sie direkt dort ein, wo der Cursor ist.
- LLM-gestützte Workflows: Lass die KI deine Sätze professionell umformulieren, emotional filtern oder mit passenden Emojis anreichern.
- Lokale Verarbeitung: Optional 100% offline für volle Privatsphäre.
Der einfachste Weg, um Blitztext auf deinem System bereitzustellen:
git clone https://github.com/TimInTech/blitztext-linux.git
cd blitztext-linux
bash scripts/install.shWas macht das Skript? Es ist idempotent (mehrfach ausführbar) und erledigt alles vollautomatisch:
- Prüft dein System (Ubuntu/Debian) & Python-Version.
- Installiert fehlende Systempakete (inkl.
pipx). - Richtet eine
.venvUmgebung ein und installiertopenai-whisper/faster-whisper. - Bereitet
ydotool.serviceund den systemd-User-Service vor.
- Neustart erforderlich (oder ab-/anmelden), damit die Gruppe
inputaktiv wird. Danach checken:bash scripts/verify.sh
- Manuell testen:
(Erscheint das Tray-Symbol und reagieren die Hotkeys? Dann lief alles glatt!)
./run.sh
- Autostart aktivieren:
systemctl --user start blitztext-linux
Autostart wieder deaktivieren
systemctl --user stop blitztext-linux
systemctl --user disable blitztext-linuxManuelle Installation (Diagnose / Experten)
Falls du gezielt debuggen möchtest, anstatt scripts/install.sh zu nutzen:
1. Systempakete (apt)
sudo apt install pulseaudio-utils wl-clipboard xclip ydotool ffmpeg python3-venv python3-evdev build-essential python3-dev socat pipx| Paket | Zweck |
|---|---|
pulseaudio-utils |
parec für die Audioaufnahme via PulseAudio/PipeWire |
wl-clipboard / xclip |
Zwischenablage unter Wayland (wl-copy) bzw. X11-Fallback |
ydotool (≥ 1.0) |
Simuliert Ctrl+V für automatisches Einfügen (Auto-Paste). Ab Version 1.0 werden rohe Keycodes verwendet. Ubuntu 25.10/26.04 liefern ydotool ≥ 1.0 (1.0.4) direkt via apt. Ubuntu 24.04 und 22.04 liefern per apt nur 0.1.x (z. B. 0.1.8), das keine Keycodes unterstützt und damit kein Auto-Paste – dort ydotool ≥ 1.0 aus dem Quellcode bauen (siehe unten). Auto-Paste auf 24.04, 25.10 und 26.04 verifiziert. |
ffmpeg |
Audio-Konvertierungen |
python3-evdev |
Eingabegeräte-Zugriff für den systemweiten Hotkey-Daemon |
socat |
Optionale Socket-Kommunikation |
pipx |
Isolierte Installation von Whisper-Engines |
2. evdev-Rechte vergeben
sudo usermod -aG input $USER3. Virtuelle Umgebung & Python-Pakete
python3 -m venv .venv
source .venv/bin/activate
pip install PyQt6 evdev openai pytest openai-whisper faster-whisper4. Whisper-Engine als Alternative via pipx
Falls Sie openai-whisper losgelöst von der venv installieren möchten (umgeht Versionskonflikte auf neueren Ubuntu-Setups durch Python 3.11):
pipx install --python "$(command -v python3.11)" openai-whisper
pipx inject openai-whisper faster-whisper # optional, für beschleunigte Ausführung5. ydotool prüfen
systemctl --user start ydotool.serviceLiefert apt nur ydotool 0.1.x (Ubuntu 24.04/22.04), ydotool ≥ 1.0 aus dem Quellcode bauen:
sudo apt install cmake build-essential scdoc git
git clone --depth 1 --branch v1.0.4 https://github.com/ReimuNotMoe/ydotool.git
cd ydotool && cmake -B build -DCMAKE_BUILD_TYPE=Release && make -C build && sudo make -C build install
systemctl --user enable --now ydotool.service # nutzt /usr/local/bin/ydotoold6. Anwendung starten
./run.shBlitztext registriert globale Hotkeys via evdev. Mit diesen Kombinationen hast du die volle Kontrolle:
| Workflow | Hotkey | LLM? | Beschreibung |
|---|---|---|---|
| Blitztext | Meta + H | ❌ | Standard: Nimmt auf, transkribiert und fügt den Text ein. |
| Blitztext Lokal | Meta + Shift + H | ❌ | Erzwingt eine reine Offline-Transkription. |
| Blitztext+ | Meta + Shift + T | ✅ | Formuliert deine Aufnahme professionell via LLM um. |
| Blitztext $%&! | Meta + Shift + D | ✅ | Emotionale Entladung: Wandelt Frust in eine sachliche Nachricht um. |
| Blitztext :) | Meta + Shift + E | ✅ | Ergänzt deine Nachricht passend mit Emojis. |
Note
LLM-Workflows (Blitztext+, Blitztext $%&!, Blitztext :)) setzen einen gültigen API-Key voraus. Lege ihn am einfachsten in ~/.config/blitztext-linux/secrets.env ab, indem du dort die Variable mit deinem Key als Wert setzt (Zeilenformat NAME=WERT, z. B. OPENAI_API_KEY mit deinem Key als Wert). ./run.sh und der systemd-Service laden diese Datei automatisch. Ohne diesen Key sind diese Funktionen im Menü und über die Hotkeys deaktiviert bzw. führen zu einer Fehlermeldung.
Die KI-Workflows helfen bei Formulierung, Ton und Emojis. Die passenden Einstellungen findest du unter Einstellungen → KI-Workflows:
Blitztext unterstützt drei Anbieter-Modi, wählbar unter Einstellungen → KI-Workflows → „LLM-Anbieter":
| Anbieter | Wann verwenden |
|---|---|
| OpenAI (Standard) | Standard-OpenAI-API mit gpt-4o-mini oder einem anderen Modell. |
| OpenRouter | Zugriff auf hunderte Modelle über einen einzigen API-Key (OPENROUTER_API_KEY). Base-URL: https://openrouter.ai/api/v1. |
| Eigener Endpunkt | Jede OpenAI-kompatible API — „Base-URL" und „LLM-Modell" auf den Anbieter anpassen. |
Für OpenRouter base_url auf https://openrouter.ai/api/v1 setzen und Modell wählen (z. B. openai/gpt-4o). Der Name der API-Key-Umgebungsvariable wird unter „API-Key-Umgebung" eingestellt.
Für den Workflow Blitztext+ (Text-Verbesserer) gibt es vorgefertigte Schreibstil-Vorlagen, die du unter Einstellungen → KI-Workflows → „Schreibstil-Vorlage" oder direkt im Compose-Fenster auswählst:
| Vorlage | Wirkung |
|---|---|
| Standard (Text verbessern) | Bisheriges Verhalten – sauber formatierter Text, der gewählte Tonfall greift. |
| E-Mail – formell | Höfliche E-Mail in der Sie-Form mit klarer Struktur. |
| E-Mail – locker | Freundliche E-Mail in der Du-Form. |
| Stichpunkte | Gliedert den Inhalt in prägnante Stichpunkte. |
| Zusammenfassung | Knappe, sachliche Zusammenfassung der Kernaussagen. |
| Persönlich (Du-Form) | Klarer Text in der persönlichen Du-Form. |
| Höflich (Sie-Form) | Klarer Text in der höflichen Sie-Form. |
| Kurz & präzise | Maximal knapp, ohne Füllwörter und Wiederholungen. |
| Eigenes Preset… | Ein freier System-Prompt, den du selbst unter Einstellungen → Allgemein → „Eigenes Preset (Compose)" festlegst. |
Bei Standard wird zusätzlich der eingestellte Tonfall angewendet. Jede andere Vorlage bringt ihren eigenen Schreibstil mit und überschreibt den Tonfall. Eigennamen/Begriffe bleiben in allen Vorlagen erhalten.
Das Compose-Fenster (✍ Compose… im Tray-Kontextmenü) ermöglicht das Umschreiben beliebiger Texte mit der KI — ganz ohne Sprachaufnahme. Es eignet sich ideal zum Überarbeiten fertiger Entwürfe, E-Mails oder Notizen.
Öffnen: Klick auf das Tray-Icon → ✍ Compose…
Was du im Compose-Fenster tun kannst:
| Element | Beschreibung |
|---|---|
| Entwurf (linkes Feld) | Text eintippen oder einfügen, der umgeschrieben werden soll. |
| Workflow | Wähle zwischen Blitztext+ (Text-Verbesserer), Blitztext $%&! (Dampfablassen) oder Blitztext :) (Emojis). |
| Schreibstil-Vorlage | Vorlage auswählen oder Eigenes Preset… für einen vollständig freien System-Prompt. |
| Tonfall | Locker, neutral oder professionell. Aktiv nur bei Standard-Preset + Blitztext+; bei allen anderen Vorlagen ausgegraut (Tooltip erklärt warum). |
| Verbessern | Sendet den Entwurf an die KI und zeigt das Ergebnis im rechten Feld. |
| Varianten-Verlauf | Die letzten 10 generierten Ergebnisse der aktuellen Sitzung werden als scrollbare Liste gespeichert — Klick auf einen Eintrag stellt ihn wieder her. |
| Signatur | Hängt deine gespeicherte Signatur an (konfiguriert unter Einstellungen → Allgemein). Ersetzt automatisch gängige KI-generierte Platzhalter wie [Your Name], [Ihr Name], [Vorname Nachname], [Signature] u. Ä. — kein verlorener Platzhalter bleibt zurück. |
| Kopieren | Kopiert das Ergebnis in die Zwischenablage. |
| Einfügen & Schließen | Fügt das Ergebnis direkt in die aktive Anwendung ein und schließt das Fenster. |
Note
Signatur und eigener Preset-Text werden unter Einstellungen → Allgemein konfiguriert. Setze dort „Signatur für das Compose-Fenster" und aktiviere „Nach jeder Generierung automatisch anhängen", wenn die Signatur bei jedem Ergebnis ergänzt werden soll.
Das Mikrofon im System-Tray ist dein Indikator für den aktuellen Zustand:
Das Tray-Kontextmenü gibt dir schnellen Zugriff auf alle Workflows, das Compose-Fenster, Schreibstil-Vorlagen, Diktat-Modus, Verlauf und Einstellungen:
Note
Steht im Desktop-Environment kein Tray-Bereich zur Verfügung, fällt das Icon auf das System-Theme audio-input-microphone zurück; die Farbkodierung greift dann ggf. nicht.
Das Hauptfenster ist dein grafisches Kontrollzentrum — nützlich, wenn Hotkeys blockiert sind oder du lieber mit der Maus arbeitest:
- Workflow-Dropdown: Alle 5 Aufnahmemodi zur Auswahl.
- Schreibstil-Vorlage: Sichtbar wenn Blitztext+ gewählt ist — Preset direkt im Hauptfenster wählen. Änderungen werden sofort mit dem Tray synchronisiert.
- Start/Stopp-Button: Klick zum Starten oder Beenden einer Aufnahme.
- Abbruch: Bricht die aktuelle Aufnahme ohne Transkription ab.
- Diktat / Verlauf: Schnellzugriff auf den Diktat-Modus und den Transkript-Verlauf.
- Vorlesen / Einstellungen: Öffnet das Vorlese-Fenster oder den Einstellungs-Dialog.
Das Fenster öffnet sich beim Start sowie über den Tray-Eintrag Fenster anzeigen oder einen Klick auf das Tray-Icon. Schließen versteckt das Fenster nur — die App läuft im Tray weiter.
Zusätzlich zu den Workflows bietet das Tool drei Komfort-Funktionen:
| Menüpunkt | Beschreibung |
|---|---|
| Diktat-Modus | Umschalter. Ist er aktiv, werden alle Transkripte als Diktat-Einträge gesammelt und einzeln als Markdown-Datei gespeichert. Im Verlauf erscheint dann eine Schaltfläche Zusammenführen, die alle Einträge kombiniert und in die Zwischenablage kopiert. |
| Verlauf… | Öffnet ein Fenster mit den letzten Transkripten. Pro Eintrag: In Zwischenablage kopieren oder löschen. |
| Vorlesen… | Lässt dir beliebigen Text vorlesen — lokal per Piper TTS (Standard) oder optional über OpenAI Cloud-TTS (inklusive Anbieter-, Stimmen- und Modellauswahl). Nutze die Schaltfläche Exportieren, um die Audioausgabe als Datei zu speichern. |
Note
Diktat-Notizen werden ausschließlich in einen Ordner innerhalb des Home-Verzeichnisses geschrieben (Schutz gegen Pfad-Ausbruch), mit Berechtigungen 0o600.
Important
Piper TTS muss für die Vorlesefunktion (sowie Stimmen) installiert sein:
.venv/bin/pip install piper-tts
# Stimmen (.onnx + .onnx.json) nach ~/.local/share/piper-voices/ legenFehlt Piper oder eine Stimme, zeigt das Vorlese-Fenster einen Installationshinweis; alle übrigen Funktionen bleiben nutzbar. Optionale Desktop-Benachrichtigungen nutzen notify-send (Paket libnotify-bin).
Note
OpenAI Cloud-TTS ist eine optionale Alternative zu Piper. Voraussetzung: das openai-Paket (.venv/bin/pip install openai) und ein gültiger Key in der Umgebungsvariable OPENAI_API_KEY (siehe secrets.env unten). Beim ersten Umschalten auf den Anbieter „OpenAI Cloud" fragt das Vorlese-Fenster einmalig nach Bestätigung, da der eingegebene Text zur Synthese an die OpenAI-Server gesendet wird. Piper bleibt Standard und arbeitet vollständig lokal.
Alles wird lokal und sicher unter ~/.config/blitztext-linux/config.json gespeichert. Der OpenAI-Schlüssel wird nicht mehr in dieser Datei abgelegt, sondern aus einer Umgebungsvariable gelesen. Die Konfigurationsdatei lässt sich für erweiterte Prompt- und Workflow-Anpassungen direkt aus den Einstellungen öffnen: Einstellungen → Allgemein → „Konfigurationsdatei öffnen".
Der Einstellungs-Dialog hat drei Tabs:
Spracherkennung — Whisper-Modell, Backend, Sprache, Hotkey-Modus und Aufnahmetaste.
KI-Workflows — LLM-Anbieter, API-Key, Base-URL, Modell, Tonfall und Schreibstil-Vorlage.
Allgemein — Auto-Paste, Diktat-Ordner, Verlaufsgröße, Sprache der Oberfläche und Signatur.
Important
Die Konfigurationsdatei wird automatisch mit restriktiven Dateiberechtigungen (0o600 / chmod 600) gespeichert. Der echte OpenAI-Key liegt stattdessen in ~/.config/blitztext-linux/secrets.env oder wird als Umgebungsvariable bereitgestellt.
Beispiel-Konfiguration & Felderklärung
{
"model": "base",
"language": "de",
"ui_language": "de",
"backend": "openai-whisper",
"hotkey_mode": "toggle",
"openai_api_key_env": "OPENAI_API_KEY",
"autopaste": true,
"audio_device": "@DEFAULT_SOURCE@",
"llm_provider": "openai",
"base_url": "",
"llm_model": "gpt-4o-mini",
"compose_signature": "",
"compose_signature_auto_append": false,
"compose_custom_preset_text": "",
"workflows": {
"text_improver_tone": "neutral",
"writing_preset": "standard",
"emoji_density": "medium",
"dampf_system_prompt": ""
}
}- model: Whisper-Modellgröße (
tiny,base,small,medium,large,large-v2,large-v3,large-v3-turbo). Standard:base. - language: Transkriptions-Sprache (
de,en) oderauto. - ui_language: Sprache der App-Oberfläche (
deoderen). Standard:de. Änderungen greifen nach einem Neustart. - backend:
openai-whisperoderfaster-whisper. - hotkey_mode:
toggle: Einmal drücken startet, erneutes Drücken beendet.hold: Aufnahme läuft solange der Hotkey gedrückt wird.
- openai_api_key_env: Name der Umgebungsvariable für den API-Key. Standard:
OPENAI_API_KEY. Für OpenRouter:OPENROUTER_API_KEY. - llm_provider:
openai(Standard),openrouterodercustom. - base_url: Eigene API-Base-URL. Leer = OpenAI-Standard. Für OpenRouter:
https://openrouter.ai/api/v1. - llm_model: Modellname beim Anbieter, z. B.
gpt-4o-mini(OpenAI) oderopenai/gpt-4o(OpenRouter). - autopaste: Fügt per
ydotoolein. - audio_device: Name der Audioquelle.
- compose_signature: Signaturtext, der im Compose-Fenster angehängt wird.
- compose_signature_auto_append: Signatur nach jeder Generierung im Compose-Fenster automatisch anhängen (
true/false). - compose_custom_preset_text: Freier System-Prompt für die Option „Eigenes Preset…" im Compose-Fenster.
- tts_provider: TTS-Anbieter für „Vorlesen" —
piper(lokal, Standard) oderopenai(Cloud). - tts_openai_model / tts_openai_voice: Modell und Stimme für OpenAI Cloud-TTS (Standard:
gpt-4o-mini-tts,nova). - tts_openai_consent:
true, sobald die einmalige Datenschutz-Bestätigung für Cloud-TTS erteilt wurde. Standard:false. - workflows: Feintuning von Tonalität (
text_improver_tone), Schreibstil-Vorlage (writing_preset), Emojis (emoji_density) und dem Dampf-Prompt (dampf_system_prompt).
Wir lieben Stabilität! Führe die Tests lokal aus:
pytestMit WHISPER_GUI_TESTS=1 QT_QPA_PLATFORM=offscreen pytest laufen zusätzlich die GUI-Tests (Hauptfenster, Compose-Fenster).
Verzeichnisüberblick
.
├── app/
│ ├── __init__.py
│ ├── audio_recorder.py # PulseAudio/PipeWire-Aufnahme via parec
│ ├── blitztext_linux.py # PyQt6-Hauptanwendung (System-Tray)
│ ├── compose_window.py # Compose-Fenster für textbasiertes KI-Umschreiben
│ ├── config.py # Konfigurations-Manager
│ ├── history_panel.py # Transkript-Verlauf-Panel
│ ├── hotkey_service.py # evdev-basierter Hotkey-Daemon
│ ├── i18n.py # Übersetzungen (DE/EN) für die Oberfläche
│ ├── llm_service.py # OpenAI / OpenRouter / eigene Endpunkte
│ ├── main_window.py # Hauptanwendungsfenster
│ ├── paste_service.py # Wayland-Clipboard-Integration
│ ├── transcribe.py # Whisper-Transkription
│ ├── tts_window.py # Vorlese-Fenster mit Audio-Export
│ ├── workflows.py # Workflow-Definitionen
│ └── writing_presets.py # Schreibstil-Vorlagen-Definitionen
├── tests/ # Test-Suite
└── README.md # Englische Fassung (diese Datei: README.de.md)
- Linux Exclusive: Nur für Linux-Systeme.
- Wayland Fokus: Entwickelt für Wayland (
wl-clipboard,ydotool). - Datenschutz: Lokale Workflows bleiben zu 100% auf deinem Rechner. OpenAI oder OpenRouter wird nur bei Bedarf für LLM- oder Cloud-TTS-Aufgaben kontaktiert.
- Sicherheit (
evdev&inputGruppe): Das Tool liest Input global über/dev/input/event*. Auf System-Ebene bedeutet dies, dass alle Prozesse des Benutzers Eingaben mitlesen könnten (Trade-off unter Wayland ohne XDG GlobalShortcuts). Nutzen Sie Blitztext nur in Umgebungen, denen Sie vertrauen! - Entwickler-Hinweis: Dieses Projekt wurde mit Unterstützung künstlicher Intelligenz (AI-assisted) entworfen. Architektur, Code und Tests wurden manuell gesichtet und auf Funktion/Sicherheit lokal verifiziert.
Dieses Projekt ist ein Linux-Port der macOS-Anwendung "Blitztext". Der Fairness halber und zur korrekten Attribution verweisen wir auf die rechtlichen Angaben des Original-Projekts:
Das Original-Projekt ist ein experimentelles, nicht-kommerzielles Open-Source-Projekt unter der MIT-Lizenz. Die zugehörige Website (blitztext.de) wird betrieben von der Blackboat Internet GmbH:
- Impressum: https://www.blackboat.com/impressum
- Datenschutz / Privacy: https://www.blackboat.com/datenschutz








