1 Punkte von GN⁺ 2026-03-18 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Eine schrittweise Fallstudie zum Aufbau eines vollständig lokalen, auf Home Assistant basierenden Sprachassistenten als Ablösung von Google Home
  • Mit llama.cpp und einer Local-First-Konfiguration werden schnelle Antworten und Datenschutz ohne Cloud-Abhängigkeit erreicht
  • Verschiedene Kombinationen aus GPU, Modell, STT und TTS wurden getestet, um Leistung und Qualität zu vergleichen und die optimale Konfiguration zu finden
  • Durch Prompt-Design und Automatisierungsskripte wurden alltagsnahe Funktionen wie Wetter, Suche und Musikwiedergabe umgesetzt
  • Das Ergebnis ist eine lokale Sprachassistenten-Umgebung mit hohem Datenschutz und hoher Zuverlässigkeit

Hardware-Konfiguration

  • Home Assistant läuft auf einem UnRaid NAS, der Sprachserver nutzt einen Beelink MiniPC mit USB4-Unterstützung und ein eGPU-Gehäuse
    • Als GPU wurden verschiedene Modelle getestet, darunter RTX 3050 bis 3090 sowie RX 7900XTX
    • RTX 3090 und RX 7900XTX liefern Antworten in 1 bis 2 Sekunden, die RTX 3050 in etwa 3 Sekunden
  • Die Sprachhardware besteht aus HA Voice Preview Satellite, zwei Satellite1 Small Squircle Enclosures und einem Pixel 7a

Modelle und Leistung

  • Getestet wurden mehrere Modelle wie GGML GPT-OSS:20B, die Unsloth Qwen3-Serie und GLM 4.7 Flash (30B)
  • Alle Modelle unterstützen grundlegende Tool Calling-Funktionen
  • Die Bewertung umfasste Steuerung mehrerer Geräte, Kontextverständnis, Umgang mit falsch erkannten Befehlen und die Fähigkeit, fehlerhafte Eingaben zu ignorieren

Sprachserver-Software

  • Als Model Runner wird llama.cpp empfohlen
  • Spracheingabe (STT)
    • Wyoming ONNX ASR (Nvidia Parakeet V2, OpenVINO-Branch): CPU-Inferenzzeit von etwa 0,3 Sekunden
    • Rhasspy Faster Whisper: ONNX-basiert auf der CPU und entsprechend langsamer
  • Sprachausgabe (TTS)
    • Kokoro TTS: mehrere Stimmkombinationen möglich, sehr gute Textverarbeitung
    • Piper (CPU): unterstützt viele Stimmen, hat aber Schwächen bei Zahlen und Adressen
  • Home-Assistant-LLM-Integration
    • LLM Conversation: verbessert die grundlegende Gesprächsqualität
    • LLM Intents: stellt Tools für Websuche, Ortssuche, Wettervorhersagen usw. bereit

Wechsel von Google Assistant zum lokalen Assistenten

  • Bei Google Assistant nahmen Antwortgenauigkeit und Funktionsumfang zunehmend ab, wodurch der Bedarf an einer Alternative entstand
  • Auch Datenschutzbedenken und die fehlende Steuerbarkeit bei Cloud-Ausfällen waren wichtige Gründe für den Wechsel

Erste Versuche und Modellverbesserungen

  • Anfangs wurden Standardmodelle von Ollama verwendet, doch Tool Calling schlug häufig fehl
  • Mit hochpräzisen GGUF-Modellen von HuggingFace verbesserte sich die Leistung deutlich
  • Wegen instabilem WLAN wurden Streaming-Einstellungen und ein dediziertes IoT-Netzwerk eingerichtet, um die Sprachausgabe unterbrechungsfrei zu halten

Funktionserweiterung und LLM-Prompt-Design

  • Der Sprachassistent wurde so aufgebaut, dass er Wetter, Öffnungszeiten, Allgemeinwissen und Musikwiedergabe abdecken kann
  • Die Funktionalität wurde durch die Integration von llm-intents erweitert, die ersten Ergebnisse blieben jedoch begrenzt
  • Prompt-Design erwies sich als entscheidender Faktor
    • Durch #-Abschnitte pro Dienst und konkrete Anweisungslisten wurde die Genauigkeit des Tool Calling des LLM verbessert
    • Durch das Entfernen unnötiger Ausrufe und Emojis wurde ein TTS-freundliches Antwortformat erreicht
    • Zur iterativen Verbesserung der Prompts wurde ChatGPT genutzt

Problemlösung durch Automatisierung

  • Die Musikwiedergabe konnte das LLM nicht direkt ausführen und wurde daher durch Home-Assistant-Automatisierungsskripte ergänzt
    • Der Befehl „Play {music}“ dient als Trigger und startet Musik auf dem passenden media_player des angefragten Satellite-Geräts
    • Mit dem Befehl „Stop playing“ kann die Wiedergabe beendet werden
  • Spätere Updates ermöglichten dem LLM eine natürlichere Musiksuche und -wiedergabe, die Automatisierung bleibt aber weiterhin ein nützlicher Ansatz

Training eines benutzerdefinierten Wake-Words

  • Statt des Standard-Wake-Words wird „Hey Robot“ verwendet
  • Das Training erfolgte etwa 30 Minuten lang mit microWakeWord-Trainer-Nvidia-Docker
  • Die Fehlaktivierungsrate liegt auf Google-Home-Niveau und kann durch eine automatische Stummschaltfunktion weiter verbessert werden

Endergebnis

  • Für durchschnittliche Nutzer ist die Lösung zwar etwas komplex, es wurde jedoch eine lokale Sprachassistenten-Umgebung mit fein abstimmbaren Einstellungen fertiggestellt
  • Möglich sind Datenschutz, stabile Steuerung und benutzerspezifische Leistungsanpassung
  • Als vollständig Cloud-unabhängiger Sprachassistent vereint die Lösung Zuverlässigkeit und Freude an der Nutzung

Noch keine Kommentare.

Noch keine Kommentare.