Ich diktiere jetzt diesen Blogbeitrag – und zwar komplett lokal auf meinem Rechner, ohne dass ein einziges Wort meine eigene Hardware verlässt. Kein Google, kein Microsoft, kein Abhören durch Dritte. Wie das geht und was man dafür braucht, erkläre ich hier.
Das Problem: Diktiersoftware und Datenschutz
Wer viel schreibt, kennt das: Tippen kostet Zeit. Diktiersoftware wie Google Docs Voice oder Windows Diktat funktionieren zwar gut – aber alles, was man spricht, landet auf fremden Servern. Für private Notizen, geschäftliche Texte oder persönliche Gedanken ist das keine Option.
Die Lösung: WhisperWolf + faster-whisper
OpenAIs Whisper-Modell läuft komplett offline auf der eigenen GPU. Mit dem Tool WhisperWolf wird daraus ein systemweiter Diktierdienst unter Linux (Cinnamon/X11):
- F10 → Aufnahme starten
- Sprechen, kurze Pause → Text erscheint automatisch im fokussierten Fenster
- F10 → Stoppen
- Win+F10 → Markierten Rohtext per lokalem KI-Modell bereinigen
WhisperWolf tippt den erkannten Text direkt in jede Anwendung – Browser, Texteditor, E-Mail, Terminal. Alles über xdotool, kein Copy-Paste nötig.
Hardware und Modell
| Komponente | Details |
|---|---|
| GPU | NVIDIA RTX 3070 Ti (8 GB VRAM) |
| Mikrofon | Turtle Beach Stream Mic |
| Betriebssystem | Linux Mint (Cinnamon, X11) |
| Modell | whisper-large-v3 via faster-whisper |
| VRAM-Verbrauch | ~3 GB von 8 GB |
Deutsch mit englischen Fachbegriffen
Whisper ist multilingual. Da im Alltag oft englische Begriffe wie „GPU“, „Commit“ oder „Prompt“ vorkommen, war ein rein auf Deutsch getrimmtes Modell keine Option. Der large-v3 handhabt diesen Mix sehr gut – Sprache auf de gesetzt, englische Einschübe werden trotzdem korrekt erkannt.
Die Refine-Funktion: KI korrigiert den Rohtext
Gesprochene Sprache ist kein perfektes Schriftdeutsch. Doppelte Wörter, Satzabbrüche, kleine Erkennungsfehler gehören dazu. Deshalb gibt es Win+F10: markierten Text auswählen, Taste drücken, ein lokales Sprachmodell (qwen3 via Ollama) bereinigt den Text in Sekunden – ebenfalls komplett offline.
Herausforderungen bei der Einrichtung
CUDA-Bibliotheken fehlten
Faster-Whisper braucht libcublas.so.12. Da kein System-CUDA installiert war, aber Ollama bereits läuft und dessen Bibliotheken mitbringt, reichte ein einziger Eintrag im Launcher-Script:
export LD_LIBRARY_PATH="/usr/local/lib/ollama/cuda_v12"
Mikrofon-Routing via PipeWire
Das Turtle Beach Mikrofon unterstützt nativ nur 48 kHz, Whisper braucht 16 kHz. Lösung: Mikrofon über PipeWire ansprechen statt direkt über ALSA – PipeWire übernimmt die Konvertierung automatisch.
Modellwahl
Kleinere oder auf Deutsch spezialisierte Modelle klangen verlockend – in der Praxis halluzinierten sie (nur Kommata als Ausgabe) oder erkannten kein Englisch. Der Standard large-v3 war am Ende die zuverlässigste Wahl für den Alltag.
Technischer Aufbau – wie es unter der Haube funktioniert
WhisperWolf ist eine in Python geschriebene Anwendung, die mehrere spezialisierte Bibliotheken zu einem durchgängigen Pipeline zusammenfügt. Hier ein Blick auf die einzelnen Schichten:
1. Audio-Aufnahme: sounddevice + PipeWire
Die Mikrofoneingabe läuft über die Python-Bibliothek sounddevice, die intern auf PortAudio aufsetzt. PortAudio ist eine plattformübergreifende C-Bibliothek für Audio-I/O. Unter Linux leitet PipeWire das Signal durch – es übernimmt dabei automatisch die Resampling von 48 kHz (Mikrofon-Hardware) auf die von Whisper benötigten 16 kHz.
Das Audio wird in einem gleitenden Ring-Buffer gehalten (konfigurierbar, Standard 4 Sekunden). Ein einfacher RMS-Schwellwert (Root Mean Square) erkennt Stille – liegt das Signal darunter, wird nach einer kurzen Wartezeit der erkannte Text committed und eingetippt.
2. Spracherkennung: faster-whisper + CTranslate2
Das Herzstück ist faster-whisper, eine Portierung von OpenAIs Whisper-Modell auf die CTranslate2-Inferenz-Engine. CTranslate2 ist eine in C++ geschriebene, hochoptimierte Laufzeitumgebung für Transformer-Modelle – sie nutzt quantisierte Gewichte (int8_float16) und CUDA direkt, was gegenüber dem originalen PyTorch-Whisper eine 4–6× höhere Geschwindigkeit bei deutlich geringerem VRAM-Verbrauch bringt.
Die GPU-Beschleunigung erfolgt über CUDA und cuBLAS (NVIDIA’s Bibliothek für lineare Algebra auf der GPU). Da auf diesem System kein vollständiges CUDA-Toolkit installiert ist, werden die Bibliotheken aus der Ollama-Installation genutzt – ein Beispiel dafür, wie sich bestehende Komponenten geschickt wiederverwenden lassen.
3. Live-Streaming: der gleitende Fenster-Ansatz
Whisper ist ursprünglich kein Echtzeit-System – es wurde für die Transkription kompletter Audio-Dateien entwickelt. WhisperWolf simuliert Echtzeit durch einen Sliding-Window-Ansatz: alle 0,7 Sekunden wird der aktuelle Ring-Buffer als temporäre WAV-Datei an Whisper übergeben. Die Hypothese wird mit dem bereits committeten Text verglichen; nur echte neue Wörter werden eingetippt.
Ein eigener LiveCommitter (Python-Klasse) verwaltet dabei, was bereits ausgegeben wurde, und verhindert Doppelungen durch Überlapp-Erkennung, N-Gramm-Vergleiche und Deduplizierungslogik.
4. Text-Injektion: xdotool
Erkannter Text wird über xdotool in das aktuell fokussierte Fenster getippt. xdotool ist ein Kommandozeilen-Tool, das X11-Tastatur- und Mausereignisse synthetisch erzeugt. Es funktioniert mit nahezu jeder Anwendung – Browser, Texteditor, Terminal, IDE – ohne dass diese speziell angepasst werden müsste.
5. Refine-Funktion: Ollama + qwen3
Die Bereinigungsfunktion (Win+F10) liest den markierten Text über die X11-Primary-Selection aus und sendet ihn per HTTP-API an Ollama, einen lokalen LLM-Runner. Dort läuft Qwen3, ein großes Sprachmodell von Alibaba mit starker Deutsch-Kompetenz. Ein präzise formulierter System-Prompt stellt sicher, dass das Modell ausschließlich den Text bereinigt – ohne Kommentare, Erklärungen oder Formatierung hinzuzufügen. Der bereinigte Text ersetzt anschließend die ursprüngliche Markierung.
6. Konfiguration: TOML + Drei-Schicht-Merge
Die Konfiguration nutzt das TOML-Format (Tom’s Obvious Minimal Language) und funktioniert in drei Schichten: Repo-Defaults → nutzerspezifische Overrides → maschinenspezifische Host-Config. Die Host-Config gewinnt immer. So kann dasselbe Programm auf verschiedenen Rechnern (hier: bone-mint und mint-burgi) mit unterschiedlichen Mikrofon-Indizes, Modellen und Schwellwerten laufen, ohne den gemeinsamen Code anzufassen. Versioniert wird alles über Gitea, einen selbst gehosteten Git-Server.
Übersicht: verwendete Bibliotheken
| Bibliothek / Tool | Sprache | Aufgabe |
|---|---|---|
| faster-whisper | Python/C++ | Whisper-Inferenz, optimiert |
| CTranslate2 | C++ | Transformer-Inferenz-Engine |
| sounddevice | Python | Mikrofon-Aufnahme |
| PortAudio | C | Plattformübergr. Audio-I/O |
| PipeWire | C | Audio-Routing, Resampling |
| NumPy | Python/C | Audio-Puffer, RMS-Berechnung |
| xdotool | C | X11 Text-Injektion |
| Ollama | Go | Lokaler LLM-Runner |
| Qwen3 | – | LLM für Textbereinigung |
| CUDA / cuBLAS | C++ | GPU-Beschleunigung |
Fazit
Lokales Diktat auf Linux funktioniert – und es wird besser. Die Latenz liegt noch merklich über Cloud-Diensten wie Google Gemini Live, aber die Qualität ist für den Alltag sehr gut. Der entscheidende Vorteil: Was ich spreche, bleibt auf meinem Rechner.
Dieser Beitrag wurde überwiegend per Spracheingabe diktiert und anschließend mit der eingebauten Refine-Funktion bereinigt. Konzept, technische Umsetzung und Texterstellung entstanden im Dialog mit Claude (Anthropic) – das ist der Weg, wie man heute mit KI produktiv arbeitet: nicht als Ersatz, sondern als Werkzeug das mitdenkt.

Schreibe einen Kommentar