{"id":791,"date":"2026-05-30T23:05:23","date_gmt":"2026-05-30T21:05:23","guid":{"rendered":"https:\/\/www.coremind.ch\/wordpress\/?p=791"},"modified":"2026-05-30T23:05:23","modified_gmt":"2026-05-30T21:05:23","slug":"ha-voice-pe-lokale-sprachsteuerung-ohne-cloud","status":"publish","type":"post","link":"https:\/\/www.coremind.ch\/wordpress\/ha-voice-pe-lokale-sprachsteuerung-ohne-cloud\/","title":{"rendered":"HA Voice PE: Lokale Sprachsteuerung ohne Cloud"},"content":{"rendered":"<p>Mit dem <strong>Home Assistant Voice Preview Edition<\/strong> (Voice PE) hat Nabu Casa Ende 2024 die erste eigene Hardware f\u00fcr Sprachsteuerung gelauncht \u2013 und seither l\u00e4uft sie bei mir als <code>assist_satellite.home_assistant_voice_0a204b_assist_satellit<\/code> im B\u00fcro. Die Voice PE ist die direkte Alternative zu Alexa, Google und HomePod: kompakt, etwa CHF 70, und mit dem grossen Unterschied, dass <strong>alles lokal verarbeitet<\/strong> werden kann. Kein Wake Word, das Amazon h\u00f6rt. Keine Befehle, die in der Cloud landen. F\u00fcr HA-Nutzer mit Privacy-Fokus ist sie 2026 das interessanteste St\u00fcck Hardware seit dem Skyconnect-Stick.<\/p>\n<h2>Was die Voice PE ist (und was nicht)<\/h2>\n<p>Die Voice PE ist ein Wyoming-Protokoll-Satellit mit ESP32-S3, eingebautem Lautsprecher und Mikrofon-Array. Sie macht selbst <strong>kein<\/strong> Speech-to-Text und kein Text-to-Speech \u2013 sie streamt nur Audio zur HA-Instanz, die dann eine sogenannte <strong>Voice Pipeline<\/strong> abarbeitet. Diese Pipeline besteht aus vier Stufen: Wake Word \u2192 STT (Speech-to-Text) \u2192 Intent (Conversation Agent) \u2192 TTS.<\/p>\n<p>Out of the box reagiert die Voice PE auf \u00abOkay Nabu\u00bb, \u00abHey Jarvis\u00bb oder \u00abHey Mycroft\u00bb \u2013 das Wake-Word l\u00e4uft on-device via <strong>microWakeWord<\/strong>, einer optimierten Variante von <strong>openWakeWord<\/strong> f\u00fcr Mikrocontroller. Der Rest der Pipeline ist konfigurierbar und genau hier wird es interessant.<\/p>\n<h2>Lokale Pipeline aufsetzen<\/h2>\n<p>Wer keine Cloud will, installiert drei Add-ons: <strong>Whisper<\/strong> (STT), <strong>Piper<\/strong> (TTS) und <strong>openWakeWord<\/strong> (f\u00fcr custom Wake Words). Auf einem <strong>Raspberry Pi 5<\/strong> mit 8 GB l\u00e4uft das <strong>Whisper-Modell <\/strong><code>tiny-int8<\/code> fl\u00fcssig (~1.5 s Latenz), das <code>base-int8<\/code> mit etwas mehr Druck (~3 s). F\u00fcr deutsche Sprache empfehle ich den <code>base<\/code>-Tier, weil <code>tiny<\/code> bei Eigennamen wie Hue-Szenen versagt.<\/p>\n<p>Die Konfiguration der Pipeline l\u00e4uft komplett \u00fcber die UI unter \u00abEinstellungen \u2192 Sprachassistenten \u2192 Assistent hinzuf\u00fcgen\u00bb. Wer es deklarativ haben will, kann die Wyoming-Endpoints in <code>configuration.yaml<\/code> deklarieren:<\/p>\n<pre><code>\u2029wyoming:\u2029  - name: Whisper Local\u2029    host: a0d7b954-whisper.local.hass.io\u2029    port: 10300\u2029  - name: Piper Local\u2029    host: a0d7b954-piper.local.hass.io\u2029    port: 10200\u2029\u2029assist_pipeline:\u2029  - name: Local Pipeline\u2029    language: de\u2029    stt_engine: wyoming.whisper_local\u2029    tts_engine: wyoming.piper_local\u2029    wake_word_entity: wake_word.openwakeword_okay_nabu\u2029<\/code><\/pre>\n<p>Die Voice PE selber wird der Pipeline \u00fcber die Ger\u00e4te-Einstellungen zugewiesen: Ger\u00e4t ausw\u00e4hlen \u2192 \u00abSprachassistent\u00bb \u2192 die definierte Pipeline setzen.<\/p>\n<h2>LLM als Conversation Agent<\/h2>\n<p>Spannend wird es, wenn die Intent-Stufe nicht der eingebaute HA-Parser ist, sondern ein <strong>LLM<\/strong>. Mit der <strong>OpenAI Conversation Integration<\/strong> (oder Anthropic, Ollama, Google) lassen sich offene Befehle wie \u00abMach es in der K\u00fcche etwas gem\u00fctlicher\u00bb interpretieren, die der klassische Sentence-Parser nie verstehen w\u00fcrde.<\/p>\n<p>In meiner Config l\u00e4uft der Agent mit einer Prompt-Direktive, die jeden Befehl gegen die exposed Entities matcht. Eine minimale Automation, die den Voice-PE-Button als Trigger nutzt:<\/p>\n<pre><code>\u2029automation:\u2029  - alias: \"Voice PE Button = Szene zyklus\"\u2029    triggers:\u2029      - trigger: state\u2029        entity_id: event.home_assistant_voice_0a204b_button_press\u2029    actions:\u2029      - action: input_select.select_next\u2029        target:\u2029          entity_id: input_select.buero_szenen_zyklus\u2029      - action: scene.turn_on\u2029        target:\u2029          entity_id: \"{{ states('input_select.buero_szenen_zyklus') }}\"\u2029<\/code><\/pre>\n<h2>Custom Wake Word trainieren<\/h2>\n<p>Mit <strong>openWakeWord<\/strong> l\u00e4sst sich ein eigenes Wake Word in rund 20 Minuten trainieren. Die Anleitung von David Scripka (openWakeWord-Projekt) l\u00e4uft \u00fcber ein Google Colab Notebook: 100 positive und 100 negative Audio-Samples reichen f\u00fcr eine brauchbare Erkennungsrate. Das fertige Modell (<code>.tflite<\/code>) kommt in das openWakeWord-Add-on und steht in der Pipeline-Konfiguration sofort zur Verf\u00fcgung.<\/p>\n<p>Tipp: Wake Words mit <strong>drei Silben<\/strong> (z.B. \u00abHey Coremind\u00bb) haben eine deutlich tiefere Fehlausl\u00f6sungsrate als zweisilbige. Wer die Voice PE im Schlafzimmer einsetzt, sollte das ber\u00fccksichtigen.<\/p>\n<h2>Multi-Room-Setup<\/h2>\n<p>Mehrere Voice PEs lassen sich pro Raum zuweisen und mit raumspezifischen Pipelines kombinieren. Die LED-Ring-Entit\u00e4t (<code>light.home_assistant_voice_0a204b_led_ring<\/code>) zeigt den Pipeline-Status farblich an \u2013 blaue Animation beim Listening, gr\u00fcner Puls beim Verstehen, rote Pulse bei Fehler. Wer das mit der <strong>Adaptive Lighting<\/strong> Integration kombiniert, kann den LED-Ring abends automatisch dimmen.<\/p>\n<p>Wer den Pipeline-Stack lieber auf einem dedizierten Satelliten testen will, findet im Artikel zu <a href=\"https:\/\/www.coremind.ch\/wordpress\/\">Raspiaudio Muse Luxe als Voice-Satellit<\/a> eine g\u00fcnstigere ESPHome-Variante \u2013 die allerdings beim Mikrofon-Array klar hinter der Voice PE liegt.<\/p>\n<h2>Fazit<\/h2>\n<p>Die Voice PE ist die erste lokale Sprachsteuerung, die im Alltag tats\u00e4chlich funktioniert, ohne dass man im Ger\u00e4teequivalent eines Stockholmer Datenzentrums landet. Wer schon HA-User ist und einen Pi 5 stehen hat, bekommt f\u00fcr CHF 70 das fehlende St\u00fcck Hardware. Drei Stolperfallen: Erstens, Whisper auf einem Pi 3 l\u00e4uft nicht \u2013 mindestens N100\/Pi 5. Zweitens, das ESPHome-Update der Voice PE l\u00e4uft \u00fcber die OTA-Pipeline von Nabu Casa, hier hilft kein lokales Manifest. Drittens, der LLM-Conversation-Agent verbraucht pro Befehl 200\u2013500 Tokens \u2013 wer auf Anthropic oder OpenAI setzt, sollte die Kosten im Auge behalten. F\u00fcr reine lokale Setups lohnt sich der Schritt zu <strong>Ollama mit Llama 3.2<\/strong> parallel.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit dem Home Assistant Voice Preview Edition (Voice PE) hat Nabu Casa Ende 2024 die erste eigene Hardware f\u00fcr Sprachsteuerung gelauncht \u2013 und seither l\u00e4uft sie bei mir als assist_satellite.home_assistant_voice_0a204b_assist_satellit im B\u00fcro. Die Voice PE ist die direkte Alternative zu Alexa, Google und HomePod: kompakt, etwa CHF 70, und mit dem grossen Unterschied, dass alles &#8230; <a title=\"HA Voice PE: Lokale Sprachsteuerung ohne Cloud\" class=\"read-more\" href=\"https:\/\/www.coremind.ch\/wordpress\/ha-voice-pe-lokale-sprachsteuerung-ohne-cloud\/\" aria-label=\"Mehr Informationen \u00fcber HA Voice PE: Lokale Sprachsteuerung ohne Cloud\">Weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-791","post","type-post","status-publish","format-standard","hentry","category-ha"],"_links":{"self":[{"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts\/791","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/comments?post=791"}],"version-history":[{"count":1,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts\/791\/revisions"}],"predecessor-version":[{"id":808,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/posts\/791\/revisions\/808"}],"wp:attachment":[{"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/media?parent=791"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/categories?post=791"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.coremind.ch\/wordpress\/wp-json\/wp\/v2\/tags?post=791"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}