- 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.