Anleitungen

So baust du einen lokalen, datenschutzfreundlichen sprachassistenten mit raspberry pi und open‑source‑modellen, der nicht in die cloud spricht

So baust du einen lokalen, datenschutzfreundlichen sprachassistenten mit raspberry pi und open‑source‑modellen, der nicht in die cloud spricht

Ich liebe Technik, die praktisch funktioniert — aber ich hasse, wenn jede Sprachabfrage in die Cloud wandert. Deshalb habe ich in den letzten Monaten einen lokalen Sprachassistenten aufgebaut, der komplett auf dem Raspberry Pi (oder in Kombination mit einem lokalen Mini‑PC) läuft und keine Daten in fremde Cloud‑Dienste schickt. In diesem Artikel beschreibe ich meine Herangehensweise, die Komponenten, die ich ausprobiert habe, und gebe eine Schritt‑für‑Schritt‑Anleitung, damit du das Projekt selbst nachbauen kannst.

Warum ein lokaler Sprachassistent?

Für mich sind zwei Dinge entscheidend: Privatsphäre und Offline‑Funktionalität. Viele kommerzielle Assistenten bieten zwar Komfort, speichern aber Sprachdaten und Analysen in der Cloud. Ein lokaler Assistent:

  • behält deine Sprachdaten zu Hause,
  • funktioniert ohne Internet (für lokale Steuerung),
  • ist anpassbar und transparent — du entscheidest, welche Module laufen.
  • Natürlich ist der Nachteil, dass lokale Modelle oft weniger leistungsfähig sind als große Cloud‑LLMs. Für die meisten alltäglichen Aufgaben (Timer, Smart‑Home, lokale Informationen, einfache Konversation) reicht aber eine lokale Lösung völlig aus.

    Hardware‑Übersicht: Was du brauchst

    Ich habe verschiedene Setups getestet. Hier eine kompakte Übersicht, die dir hilft, das richtige Hardwareprofil zu wählen.

    KomponenteMinimalEmpfohlen
    HauptgerätRaspberry Pi 4 (4GB)Raspberry Pi 5 oder Intel NUC / Mini‑PC
    AudioUSB‑Mikrofon (z. B. Fifine)USB‑Soundkarte + Kugelmikrofon / ReSpeaker 4‑Mic HAT
    Beschleuniger (optional)keinerUSB‑Edge‑TPU (Coral) oder NN‑Beschleuniger
    Speicher32 GB SD‑CardSSD über USB (für Modelle & Logs)

    Software‑Stack: Meine Wahl

    Für mein System verwende ich ausschließlich Open‑Source‑Komponenten, die lokal laufen:

  • Wake‑Word: Mycroft Precise (offline Wake‑Word Erkennung) oder Porcupine (lizenzbedingt, aber lokal ausführbar).
  • Speech‑to‑Text (STT): Vosk oder whisper.cpp (je nach Rechenleistung). Vosk ist leichter und genügsamer auf dem Pi, whisper.cpp bietet bessere Erkennung, benötigt aber mehr CPU.
  • Intent‑Handling: Einfache Regel‑Engine (eigene Python‑Skripte) oder Rasa (falls du komplexere Dialoge brauchst).
  • Text‑to‑Speech (TTS): PicoTTS für sehr leichtgewichtige Stimmen oder Coqui TTS für bessere Ergebnisse (lokal, GPU/CPU abhängig).
  • LLM (optional): llama.cpp mit quantisierten Modellen (z. B. Llama 2 7B quantisiert) — funktioniert auf stärkeren Mini‑PCs; auf einem Pi empfehle ich kleinere Modelle oder ein lokales Server‑Device.
  • Schritt‑für‑Schritt: Grundinstallation auf Raspberry Pi

    Ich beschreibe hier eine schlanke Installation mit Vosk + Mycroft Precise + PicoTTS. Du kannst später leicht whisper.cpp oder Coqui TTS ergänzen.

  • 1) Raspberry Pi OS installieren: Lade Raspberry Pi OS Lite, flash die SD‑Card mit Raspberry Pi Imager und update das System:

    sudo apt update && sudo apt upgrade -y

  • 2) Audio konfigurieren: Schließe ein USB‑Mikrofon an und prüfe mit arecord/alsamixer, ob es erkannt wird:

    arecord -l && arecord -D plughw:1,0 test.wav

  • 3) Python‑Umgebung anlegen:

    sudo apt install python3‑venv python3‑pip build‑essential
    python3 -m venv ~/voiceenv && source ~/voiceenv/bin/activate

  • 4) Vosk installieren:

    pip install vosk

    Lade ein kleines deutschsprachiges Vosk‑Modell herunter und entpacke es in /home/pi/models/vosk‑de.

  • 5) Wake‑Word mit Mycroft Precise:

    Precise ist etwas aufwändiger zum Trainieren; du kannst vorgefertigte Modelle nutzen oder ein vorhandenes Wake‑Word übernehmen. Installiere Precise und starte den Listener als Dienst.

  • 6) TTS: PicoTTS installieren:

    sudo apt install libttspico-utils

    Beispiel: pico2wave -w test.wav "Hallo, ich bin dein Assistent" && aplay test.wav

  • 7) Steuerungs‑Skript: Erstelle ein Python‑Skript, das Wake‑Word erkennt, dann mit Vosk STT durchführt, Intent parst und Antwort per TTS ausgibt. Ich verwende für Parsing einfache Schlüsselwort‑Regeln, z. B. "Licht an" → MQTT‑Befehl an Home Assistant.
  • Das Grundschema meines Skripts:

  • Precise → Aufnahme → Vosk STT → Intent‑Parser → Aktion (z. B. MQTT, GPIO, Antwort‑TTS)
  • LLM‑Integration (optional, lokal)

    Wenn du komplexere Antworten oder kontextbezogene Konversation willst, kannst du ein lokales LLM einsetzen. Ich habe llama.cpp getestet — mit quantisierten Varianten laufen 7B‑Modelle auf einem Faustregel‑Setup (Mini‑PC besser als Pi). Für den Pi ist ein sehr kleines Modell (z. B. 2GB quantisiert) sinnvoll oder du richtest einen lokalen Server auf einem anderen Gerät ein und kommunizierst per LAN.

    Wichtig: LLMs brauchen viel RAM/CPU. Plane entweder ein separates Gerät oder setze auf kleinere, spezialisierte Modelle (z. B. für Dialoge), um Latenz erträglich zu halten.

    Integration mit Smart‑Home und Privacy‑Tipps

    Ich habe meinen Assistenten an Home Assistant über MQTT angebunden. Das erlaubt lokale Automatisierungen ohne Cloud. Ein paar Regeln, die sich bewährt haben:

  • Verwende lokale Broker (Mosquitto) mit Benutzer/Passwort und TLS, wenn möglich.
  • Speichere Roh‑Audio standardmäßig nicht — nur erkannte Transkripte, die älter als X Tage automatisch gelöscht werden.
  • Logge Aktionen nur mit minimalen Metadaten (Zeit, Aktion), keine kompletten Gesprächsaufzeichnungen.
  • Fehlerbehebung & Performance‑Optimierung

    Bei mir traten häufig zwei Probleme auf: schlechte Erkennung bei Umgebungsgeräuschen und hohe CPU‑Auslastung. So bin ich vorgegangen:

  • Verbesserung der Mikrofonqualität (direktes Richtmikrofon / ReSpeaker HAT).
  • Noise‑Suppression: WebRTC‑Noise‑Suppression oder sox‑Filter vor STT schalten.
  • Outsourcen rechenintensiver Modelle auf ein lokales Gerät mit mehr Leistung oder auf ein USB‑TPU für inferenzbeschleunigte Modelle.
  • Praxisbeispiele, die ich nutze

    Ein paar Dinge, die bei mir im Alltag zuverlässig funktionieren:

  • „Hey Pi, Licht Küche an“ → MQTT an Home Assistant → Lampen einschalten.
  • „Erinnere mich in 30 Minuten an Brot aus dem Ofen“ → lokale Timer‑Queue, TTS‑Alarm.
  • Wetterabfrage (lokal gecached, Daten aus einem privaten Wetter‑API, nicht in Cloud).
  • Wenn du willst, kann ich dir mein einfaches Starter‑Script (Python) zur Verfügung stellen, das Precise, Vosk und PicoTTS verbindet. Ebenso kann ich Varianten für whisper.cpp oder Coqui TTS beschreiben, falls du bessere Erkennung/Stimmen brauchst und einen stärkeren Rechner hast.

    Sie sollten auch die folgenden Nachrichten lesen:

    Wie du das nvme‑laufwerk deines laptops sicher pflegst: firmware, overprovisioning und praktikable tools für mehr lebensdauer

    Wie du das nvme‑laufwerk deines laptops sicher pflegst: firmware, overprovisioning und praktikable tools für mehr lebensdauer

    NVMe‑SSDs sind heutzutage in fast jedem Laptop zu finden: schnell, kompakt und sehr...

    14. Jun
    So richtest du ein datenschutzfreundliches spotify‑backup ein und behältst playlists, metadaten und offline‑tracks lokal

    So richtest du ein datenschutzfreundliches spotify‑backup ein und behältst playlists, metadaten und offline‑tracks lokal

    Ich habe mir die Frage gestellt: Wie sichere ich meine Spotify‑Daten so, dass Playlists,...

    20. Jun