Fortgeschritten 15 minAudio

100 % lokal arbeitender Sprachassistent: Whisper + Ollama + Piper

Ein lokaler Sprachassistent hört zu, versteht und antwortet laut, ohne jemals ein einziges Byte in die Cloud zu senden. Dieser Leitfaden verbindet drei Open-Source-Bausteine – Whisper für die Spracherkennung, ein über Ollama bereitgestelltes LLM für das Schlussfolgern und Piper für eine natürliche französische Stimme – zu einer vollständigen Schleife, die auf Ihrem eigenen Rechner läuft. Wir erläutern die Verarbeitungskette STT → LLM → TTS, die empfohlene Hardware und die Latenz, mit der Sie tatsächlich rechnen können.

Von Samir K.·Aktualisierung 2026-08-27·Unter Windows, macOS und Linux getestet

#Warum ein lokaler Sprachassistent?

Alexa, Google Assistant und Siri haben denselben Nachteil: Jeder Satz, den Sie aussprechen, wird zur Transkription und Interpretation an entfernte Server gesendet. Ein lokaler Sprachassistent kehrt dieses Modell um. Mikrofon, Spracherkennung, Schlussfolgern und Sprachausgabe laufen vollständig auf Ihrer Hardware. Nichts wird über das Internet übertragen, und der Assistent funktioniert auch bei unterbrochener Verbindung weiter.

Neben dem Schutz der Privatsphäre liegt der Vorteil in der Kontrolle. Sie wählen das Sprachmodell, seine Persönlichkeit über den Systemprompt und die Ausgabestimme und können es mit Ihren eigenen Werkzeugen verbinden — Hausautomation, Kalender, Notizen —, ohne von einer API eines Drittanbieters abhängig zu sein, die von einem Tag auf den anderen eingestellt werden oder ihre Bedingungen ändern kann.

Datenschutz
Kein Sprachbefehl wird von Dritten aufgezeichnet oder analysiert. Ideal für sensible Anwendungen zu Hause oder im beruflichen Umfeld.
Offline
Die vollständige Kette funktioniert ohne Internet, sobald die Modelle heruntergeladen wurden.
Anpassbar
Systemprompt, Stimme, Sprache, Wake-Word und Werkzeuge sind alle unter Ihrer Kontrolle.
Ohne Abonnement
Alles ist Open Source. Kosten entstehen nur für Ihre Hardware und den Strom.

#Die Kette STT → LLM → TTS

Das Kit Lokale KI

Ihr privates, kostenloses ChatGPT auf Ihrem Rechner in einer Stunde – mit LM Studio, Ollama, Open WebUI und Ihren Dokumenten, ganz ohne Cloud.

  • Lebenslanger Online-Zugang
  • PDF + Dateien
  • Lebenslange Updates

Ein Sprachassistent besteht, so ausgefeilt er auch sein mag, lediglich aus einer Abfolge von drei Schritten. Diese Aufteilung zu verstehen, ist der Schlüssel dazu, die Latenz zu diagnostizieren und ein Glied der Kette zu ersetzen, ohne den Rest zu beeinträchtigen.

  1. 01
    STT — Speech To Text
    Das Mikrofon nimmt Ihre Stimme auf, und Whisper wandelt sie in Text um. Das ist Spracherkennung. Die Qualität hängt vom gewählten Whisper-Modell und von den Umgebungsgeräuschen ab.
  2. 02
    LLM — das Schlussfolgern
    Der transkribierte Text wird an ein von Ollama bereitgestelltes Sprachmodell gesendet, wobei ein Systemprompt die Rolle des Assistenten definiert. Das LLM erzeugt eine schriftliche Antwort.
  3. 03
    TTS — Text to Speech
    Die Textantwort wird an Piper weitergegeben und von Piper mit einer französischen Stimme laut vorgelesen. Das ist Sprachsynthese.
i
Drei unabhängige Prozesse
Jeder Baustein ist ein eigenständiges Programm, das über Audiodateien, Text oder HTTP-Aufrufe mit den anderen kommuniziert. Sie können jedes Glied der Kette einzeln testen, bevor Sie die Schleife zusammenschalten – das wird dringend empfohlen.

Die wahrgenommene Latenz ist die Summe der Zeiten für die drei Schritte: die Transkription mit Whisper, die Generierung durch das LLM (deren Dauer am stärksten variiert) und die Synthese mit Piper. Darauf gehen wir weiter unten ausführlich ein.

#Voraussetzungen und Hardware

Ein lokaler Sprachassistent ist anspruchsvoller als ein einfacher Textchat: Whisper und das LLM teilen sich die GPU, und die Reaktionsgeschwindigkeit zählt. Hier finden Sie Hardware-Richtwerte je nach Anspruch.

Minimal (nur CPU)
Whisper base + ein kleines LLM in Q4_K_M (≈2 GB), etwa Qwen 3.5 2B oder Granite 4.2 3B. Funktioniert, aber rechnen Sie mit mehreren Sekunden Latenz pro Gesprächsrunde. Für Hausautomation, bei der nicht ununterbrochen gesprochen wird, akzeptabel.
Komfortabel
RTX 3060 12GB oder RTX 4070 12GB. Whisper small/medium auf der GPU + ein 8–9B-LLM in Q4_K_M (≈5–7 GB), beispielsweise Qwen 3.5 9B oder Granite 4.2 8B. Latenz in der Größenordnung von 1 bis 3 Sekunden pro Gesprächsrunde.
Flüssig
RTX 4080 16GB / RTX 4090 24GB oder ein Mac M4 Pro (24–48 GB vereinheitlichter Speicher). Whisper medium + ein leistungsfähigerer LLM (Gemma 4 12B ≈8 GB oder Qwen 3.8 27B ≈18 GB bei 24 GB Speicher), nahezu sofortige Antworten.
Mikrofon und Audio
Ein ordentliches USB-Mikrofon reicht aus. Unter Linux: PipeWire oder PulseAudio; unter macOS/Windows genügt die Standardkonfiguration.
→
GPU intelligent teilen
Whisper und das LLM arbeiten nie genau gleichzeitig: Whisper transkribiert, dann antwortet das LLM. Eine GPU mit 12 GB kann daher Whisper small und ein 7B-Modell beherbergen, ohne beide gleichzeitig unter Volllast auszuführen.

Softwareseitig setzen wir voraus, dass Ollama bereits installiert ist und funktioniert. Falls nicht, beginnen Sie mit der Installationsanleitung für Ollama, bevor Sie fortfahren. Prüfen Sie, ob der Daemon antwortet.

Ollama überprüfen
curl http://localhost:11434/api/tags
# doit renvoyer la liste JSON des modèles installés

#1. Hören und Transkription (Whisper)

Whisper ist das Spracherkennungsmodell von OpenAI und wird als Open Source bereitgestellt. Für den lokalen Einsatz in Echtzeit wird faster-whisper bevorzugt, eine optimierte Neuimplementierung, die CTranslate2 verwendet und sowohl auf der CPU als auch auf der GPU deutlich schneller läuft als die Referenzversion.

faster-whisper installieren
pip install faster-whisper sounddevice numpy

Die Whisper-Modelle existieren in verschiedenen Größen. Je größer das Modell ist, desto besser ist die Transkription – besonders im Französischen und in lauten Umgebungen –, aber desto langsamer ist es.

tiny / base
Sehr schnell, ideal für eine wenig leistungsstarke CPU oder für Smart-Home-Anwendungen. Ordentliche Transkription kurzer Befehle auf Französisch.
small
Guter Kompromiss zwischen Geschwindigkeit und Qualität für die meisten Assistenten. Empfohlen als Ausgangspunkt.
medium
Deutlich besser bei langen Sätzen und Akzenten, benötigt aber eine GPU, um flüssig zu arbeiten.
large-v3
Maximale Qualität, nur für GPUs mit ausreichendem Leistungsvermögen, wenn Latenz von Bedeutung ist.

Hier ist eine Funktion, die über das Mikrofon aufnimmt und den transkribierten Text zurückgibt. Wir legen Französisch als Sprache fest, um Fehler bei der Spracherkennung zu vermeiden.

ecoute.py
import sounddevice as sd
import numpy as np
from faster_whisper import WhisperModel

# device='cuda' + compute_type='float16' sur GPU ; 'cpu' + 'int8' sinon
model = WhisperModel('small', device='cuda', compute_type='float16')

def ecouter(duree=5, samplerate=16000):
    print('🎙️  Parlez...')
    audio = sd.rec(int(duree * samplerate),
                   samplerate=samplerate, channels=1, dtype='float32')
    sd.wait()
    audio = np.squeeze(audio)
    segments, _ = model.transcribe(audio, language='fr', beam_size=5)
    texte = ' '.join(seg.text for seg in segments).strip()
    print(f'📝 {texte}')
    return texte
→
Erkennung des Sprechendes
Für eine feste Dauer aufzunehmen ist einfach, aber wenig natürlich. Für einen echten Assistenten fügen Sie eine Sprachaktivitätserkennung (VAD) hinzu – die Bibliothek silero-vad oder die Option vad_filter von faster-whisper –, damit die Aufnahme endet, sobald Sie aufhören zu sprechen.

#2. Schlussfolgern (Ollama)

Der transkribierte Text wird nun an das LLM weitergeleitet. Ollama stellt unter http://localhost:11434 eine HTTP-API bereit, die mit Python abgefragt wird. Die Modellwahl hängt von Ihrer GPU ab: Ein kompaktes Modell wie Qwen 3.5 9B (6,6 GB, 256k Kontext, Apache 2.0) oder Granite 4.2 8B (5,3 GB) in Q4_K_M bietet eine hervorragende Balance für einen Dialogassistenten.

Ein Modell herunterladen
ollama pull qwen3.5:9b

Der Systemprompt verwandelt einen allgemeinen LLM in einen nützlichen Sprachassistenten. Für die Sprachausgabe ist eine Anweisung entscheidend: kurze Antworten verlangen. Ein langer Text wird beim Vorlesen endlos.

raisonner.py
import requests

SYSTEM = (
    "Tu es un assistant vocal domestique en français. "
    "Réponds toujours de façon brève et naturelle, en une ou deux phrases, "
    "comme à l'oral. Pas de listes, pas de markdown, pas d'emojis."
)

def repondre(question, historique):
    historique.append({'role': 'user', 'content': question})
    r = requests.post('http://localhost:11434/api/chat', json={
        'model': 'qwen3.5:9b',
        'messages': [{'role': 'system', 'content': SYSTEM}] + historique,
        'stream': False,
        'options': {'temperature': 0.6, 'num_predict': 120},
    })
    reponse = r.json()['message']['content'].strip()
    historique.append({'role': 'assistant', 'content': reponse})
    return reponse
i
Den Gesprächsfaden beibehalten
Der bei jedem Aufruf übergebene Gesprächsverlauf gibt dem Assistenten ein Gedächtnis: Er erinnert sich an die vorherige Frage. Begrenzen Sie den Umfang dieses Verlaufs (z. B. auf die letzten 10 Nachrichten), damit der Kontext nicht unnötig wächst und die Generierung nicht langsamer wird.

#3. Französische Sprachsynthese (Piper)

Piper ist eine schnelle, lokal laufende Engine für neuronale Sprachsynthese, die von der Home Assistant-Community (Projekt Rhasspy) entwickelt wurde. Sie erzeugt eine französische Stimme, die deutlich natürlicher klingt als die alter Engines wie espeak, und bleibt dabei schlank genug, um auf einem Raspberry Pi zu laufen.

Piper installieren
pip install piper-tts

Piper arbeitet mit vortrainierten Stimmen, jeweils einer pro Sprache und Stimmklang. Für Französisch sind mehrere Stimmen (fr_FR) in verschiedenen Qualitätsstufen verfügbar. Jede Stimme besteht aus zwei Dateien: dem Modell .onnx und seiner Konfiguration .onnx.json.

Eine französische Stimme herunterladen
# Voix fr_FR « siwis » en qualité medium
python -m piper.download_voices fr_FR-siwis-medium

Anschließend verwendet man es, um einen Satz in Audio umzuwandeln und direkt abzuspielen.

parler.py
import wave
import sounddevice as sd
import numpy as np
from piper import PiperVoice

voix = PiperVoice.load('fr_FR-siwis-medium.onnx')

def parler(texte):
    samples = []
    for chunk in voix.synthesize(texte):
        samples.append(np.frombuffer(chunk.audio_int16_bytes, dtype=np.int16))
    audio = np.concatenate(samples)
    sd.play(audio, samplerate=voix.config.sample_rate)
    sd.wait()
→
Qualität der Stimme wählen
Die Piper-Stimmen gibt es in x_low, low, medium und high. medium ist der beste Kompromiss für einen Assistenten: überzeugend natürlicher Klang ohne übermäßige CPU-Belastung. high ist langsamer und bietet nur auf guten Lautsprechern einen hörbaren Vorteil.

#4. Die vollständige Schleife zusammenbauen

Nachdem die drei Bausteine einzeln getestet wurden, müssen sie nur noch in einer Schleife miteinander verknüpft werden: zuhören, nachdenken, sprechen, von vorn beginnen. Hier ist der vollständige, minimal gehaltene Assistent, der die vorherigen Funktionen zusammenführt.

assistant.py
# On suppose importées : ecouter(), repondre(), parler()
historique = []

print('Assistant vocal prêt. Ctrl+C pour quitter.')
parler("Bonjour, je vous écoute.")

try:
    while True:
        question = ecouter(duree=5)
        if not question:
            continue
        if 'au revoir' in question.lower():
            parler('À bientôt !')
            break
        reponse = repondre(question, historique)
        parler(reponse)
except KeyboardInterrupt:
    print('\nArrêt.')

Das ist alles: etwa hundert Zeilen, verteilt auf drei Dateien, und Sie haben einen Sprachassistenten, der auf Französisch zuhört, mit einem lokalen LLM nachdenkt und laut antwortet – ohne einen einzigen ausgehenden Netzwerkaufruf. Darauf aufbauend lässt sich mit openWakeWord ein Aktivierungswort („Ok maison“) hinzufügen, eine VAD für kontinuierliches Zuhören einbauen oder eine Anbindung an Tools ergänzen.

#Tatsächliche Latenz und Optimierungen

Die Frage, die über Erfolg oder Misserfolg eines Sprachassistenten entscheidet: Wie viel Zeit vergeht zwischen dem Ende Ihres Satzes und dem Beginn der gesprochenen Antwort? Hier sind beobachtete Größenordnungen auf einer RTX 4070 mit Whisper small und einem Modell mit 8–9 Milliarden Parametern in Q4_K_M (etwa Qwen 3.5 9B).

Transkription mit Whisper
≈ 0,3 bis 0,8 s für einen 5 s langen Satz mit dem Modell small auf der GPU. Auf der CPU sollten Sie mit 2 bis 4 s rechnen.
LLM-Generierung
Der Schritt mit der größten Schwankungsbreite. Ein Modell mit 8–9 Milliarden Parametern erzeugt auf der GPU je nach Länge die erste Antwort in ≈ 0,5 bis 1,5 s. Hier sind ein niedriger Wert für num_predict und ein schnelles Modell am wichtigsten.
Piper-Synthese
≈ 0,2 bis 0,5 s für ein oder zwei Sätze mit einer Stimme der Qualitätsstufe medium. Sehr schnell, selten der Engpass.
Wahrgenommene Gesamtdauer
Etwa 1 bis 3 Sekunden pro Gesprächsrunde auf einer Mittelklasse-GPU. Für weniger als eine Sekunde braucht es High-End-Hardware oder Streaming.
→
Der effektivste Hebel: Streaming
Statt vor der Sprachsynthese auf die vollständige LLM-Antwort zu warten, streamen Sie die Ausgabe Satz für Satz und senden Sie jeden fertigen Satz an Piper, während das LLM weitergeneriert. Die Sprachausgabe beginnt deutlich früher und die wahrgenommene Latenz sinkt erheblich.
Die Modelle geladen halten
Stellen Sie OLLAMA_KEEP_ALIVE ein, um sicherzustellen, dass Ollama zwischen zwei Fragen nicht das Modell entlädt – das Wiederladen dauert mehrere Sekunden.
Kurze Antworten
Ein niedriger Wert für num_predict und ein Systemprompt, der knappe Antworten verlangt, reduzieren unmittelbar die Generierungszeit und die Vorlesedauer.
Passendes Whisper-Modell
Verwenden Sie nicht large-v3, wenn small für Ihre akustischen Bedingungen ausreicht: So sparen Sie bei jedem Durchlauf Hunderte von Millisekunden.

#5. In Home Assistant integrieren

Wenn Sie ein Smart Home per Sprache steuern möchten, müssen Sie nicht alles neu programmieren. Home Assistant integriert die „Assist“-Pipeline nativ, und sowohl Whisper als auch Piper lassen sich über offizielle Add-ons daran anbinden – sie wurden übrigens in diesem Ökosystem entwickelt.

  1. 01
    Die Add-Ons für Sprache installieren
    Fügen Sie unter Einstellungen → Add-ons „Whisper“ und „Piper“ hinzu. Home Assistant führt sie lokal als STT- und TTS-Dienste aus.
  2. 02
    Eine Assist-Pipeline erstellen
    In Einstellungen → Stimme erstellen Sie einen Assistenten: Wählen Sie Whisper für die Erkennung und Piper (Stimme fr_FR) für die Synthese.
  3. 03
    Das LLM über Ollama anbinden
    Home Assistant bietet eine „Ollama“-Integration als Konversationsagent an. Geben Sie die URL http://localhost:11434 und Ihr Modell an, um die standardmäßige Absichtserkennung zu ersetzen.
  4. 04
    Einen Zugang für die Spracheingabe wählen
    Ein ESP32-Satellit (Voice PE), ein altes Telefon oder die mobile App dienen in den Räumen als Mikrofon/Lautsprecher.
i
Zwei ergänzende Ansätze
Das Python-Skript aus diesem Leitfaden gibt Ihnen die volle Kontrolle und dient als Lernumgebung. Home Assistant bietet eine sofort einsatzbereite Integration für die Hausautomatisierung. Viele beginnen mit dem Skript, um die Verarbeitungskette zu verstehen, und wechseln dann für den Einsatz zu Hause zu Assist.

#Fehlerbehebung

Whisper transkriptiert in der falschen Sprache
Setzen Sie language='fr' in transcribe(). Andernfalls kann eine kurze Aussage als Englisch erkannt werden.
Keine Tonausgabe
Prüfen Sie das Ausgabegerät von sounddevice (sd.query_devices()) und stellen Sie sicher, dass die Sample-Rate, die an sd.play übergeben wird, der Sample-Rate in voix.config.sample_rate entspricht.
Das Mikrofon nimmt nichts auf
Testen Sie sd.query_devices(), um den richtigen Index für den Audioeingang zu finden, und überprüfen Sie die Mikrofonberechtigungen (macOS) oder die PipeWire-/PulseAudio-Quelle (Linux).
Zu lange und unlesbare Antworten
Formulieren Sie die Anweisung zu kurzen Antworten im Systemprompt nachdrücklicher und reduzieren Sie num_predict. Ein zu wortreiches LLM ruiniert das Nutzungserlebnis eines Sprachassistenten.
Latenz, die sich während der Konversation erhöht
Der Gesprächsverlauf vergrößert den Kontext. Begrenzen Sie ihn auf die letzten N Nachrichten.
Ollama lädt das Modell mit jeder Frage neu
Erhöhen Sie OLLAMA_KEEP_ALIVE (z. B. auf 30m), damit das Modell zwischen den Gesprächsrunden im VRAM bleibt.

#Weiterführende Informationen

Ihr Sprachassistent basiert auf einem gut ausgewählten und gut eingestellten lokalen LLM. Diese Anleitungen auf unserer Website ergänzen die Einrichtung:

Whisper + Ollama : Transkription und Zusammenfassung
Um sich eingehender mit dem Audiobereich zu befassen und lange Dateien zu verarbeiten statt Audio in Echtzeit.
Lokaler LLM für die Hausautomation
Um Ihren Assistenten mit Home Assistant zu verbinden und die Hausautomatisierung per Sprache zu steuern, während die Privatsphäre erhalten bleibt.
Q4, Q5, Q8: Welche Quantisierung wählen?
Um je nach Ihrer GPU zwischen Antwortqualität, Geschwindigkeit und VRAM-Bedarf abzuwägen.
Hat Ihnen dieser Guide geholfen?

Haben Sie Feedback, einen Fehler entdeckt oder möchten Sie etwas präzisieren? Geben Sie uns Bescheid – so wird der Guide für alle besser.