Lokales KI-Diktat auf Linux: Whisper, Datenschutz und kein Cloud-Zwang

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

KomponenteDetails
GPUNVIDIA RTX 3070 Ti (8 GB VRAM)
MikrofonTurtle Beach Stream Mic
BetriebssystemLinux Mint (Cinnamon, X11)
Modellwhisper-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 / ToolSpracheAufgabe
faster-whisperPython/C++Whisper-Inferenz, optimiert
CTranslate2C++Transformer-Inferenz-Engine
sounddevicePythonMikrofon-Aufnahme
PortAudioCPlattformübergr. Audio-I/O
PipeWireCAudio-Routing, Resampling
NumPyPython/CAudio-Puffer, RMS-Berechnung
xdotoolCX11 Text-Injektion
OllamaGoLokaler LLM-Runner
Qwen3LLM für Textbereinigung
CUDA / cuBLASC++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.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert