Blog Post

Kostengünstig & Cloud-unabhängig: Smart-Home-Sprachsteuerung mit Snips


Speaking machines don’t
Speaking machines can’t
They just howl around
Like the vultures and the crows
It’s so hard to say
It’s so hard to say
Something clever all the way

(Speaking Machines, We are Match)

Liebe Freunde – es wird euch kaum entgangen sein: Wir haben uns erst vor Kurzem mit der Sprachsteuerung im Smart-Home beschäftigt. Der erste Prototyp in diese Richtung war nicht sehr viel versprechend…

Wir geben allerdings nicht auf und verfolgen diese Spur mit dem nächsten DIY-Prototypen weiter. Die Schwiegermutter soll ja dadurch irgendwann Bauklötze staunen! Nun aber zur Sache:

HEY SNIPS! Erzähle uns über dich…

Grund-Aufbau

Die Hardware bleibt nach dem ersten Versuch unverändert:

Software

Die Software-seitige Umsetzung hat folgende Grundzüge, benötigt werden zunächst:

Snips.ai ist ein (derzeit kostenloser) Online-Service, der es mit relativ wenigen Eingaben erlaubt einen vollwertigen Sprach-Assistenten zu kreieren und ihn dann – und das ist die Krux – vollständig offline und autark, lokal zu betreiben! Mit wenigen Handgriffen lassen sich durch Definition einfacher Trainings-Satz-Formulierungen und Schlüssel-Begriffe die ersten Ergebnisse erzielen.

Die Idee der Sprach-Verarbeitung und -Steuerung ist immer-noch recht simpel gehalten – nehmen wir an, wir wollen die Beschattung im Raum/Haus auf etwa 80 % fahren:

  1. Wir aktivieren Snips mit einem (voreingestellten) Signalwort: “HEY, SNIPS!”
  2. In das Mikrofon gesprochene Sprache wird von der lokalen Snips-Instanz erkannt (STT = Speech-To-Text) [“Fahre die Beschattung im Bad auf 80 %!”]
  3. Ein Signal (JSON-String) über das ausgewertete Gesprochene wird von Snips über MQTT an Edomi übertragen [BESCHATTUNG-BAD-80 %]
  4. Edomi verarbeitet den stukturierten JSON-Payload und löst ggf. Aktionen aus [Jalousie-Aktor fährt die Beschattung auf 80 %]
  5. OPTIONAL: Snips empfängt eine Nachricht über MQTT von Edomi und gibt u. a. gesprochene Sprache aus (TTS = Text-To-Speech) [“Verstanden: Beschattung aktiviert!”]

Spracheingabe (STT) ➡ Snips Intent ➡ Edomi ➡ Snips Audioserver ➡ Sprachausgabe über Snips (TTS) und/oder (beliebige) Aktionen

Die Snips-Installation auf unserem Respeaker bringt alles Notwendige (inkl. eigenem MQTT-Broker) mit. Installiert wird dabei nach den Vorgaben der Snips-Väter/Mütter: https://docs.snips.ai/articles/other-platforms/respeaker-core-2.0.

Anschließend erstellen wir mit dem Online-Dienst (Snips Console) https://console.snips.ai unseren ersten Assistenten:

  1. Create Assistant ➡ “Edomi”
  2. Add an App, Create a new App ➡ “SetShutter”
  3. Create new Intent ➡ “SetShutterPositionIntent”
  4. Create new Slot ➡ “PositionValue”, Slot Type: snips/percentage
  5. Create new Slot ➡ “ShutterDesc”, Select: Create New Slot Type -> Gruppen/Synonyme anlegen
  6. Create new Slot ➡ “Location”, Select: Create New Slot Type -> Gruppen/Synonyme anlegen
  7. Mehrere Trainingssätze eingeben ➡ Doppelklick auf Schlüssel-Begriffe im Trainingssatz (z.B. Location “Bad”) -> Location-Slot zuordnen

Snips’ Nomenklatur ist in wenigen Worten beschrieben: Ein “Assistant” fasst unter einer gemeinsamen Sprache (hier “German”) und einem Spracherkennungsdienst (ASR = Automatic Speech Recognition) mehrere “Apps” zusammen.

Eine App umfasst alle Elemente für eine bestimmtes Ziel des Nutzers; z. B. Beschattungs-Steuerung.

Die “Intents” einer App bilden so die Absichten eines Nutzers ab: Beschattung in eine Position (80 %) fahren oder Beschattungs-Richtung (auf/ab) steuern – um nur einige Beispiele zu nennen.

Der “Slot (Type)” eines Intents hilft bei der Unterscheidung bestimmter Schlüssel-Begriffe. Der Slot “Location” in unserem Beispiel hilft uns einen bestimmen Raum/Lokalität eindeutig zu bestimmen und anschließend anzusteuern. Die Synonyme innerhalb des Slots bestimmen hierbei die möglichen Ausprägungen (“Bad”, “Badezimmer”, “Master-Bad”, usw.). Slot Types können auch wiederverwendet werden und so App-übergreifend eingesetzt werden.

Ist der Assistent fertig definiert – kann er nun lokal heruntergeladen und installiert (deployed) werden – dies wird gemäß Anleitung wie folgt erreicht:

sudo apt-get install unzip (optional, falls unzip fehlt)
sudo rm -rf /usr/share/snips/assistant/
sudo unzip {assistant.zip} -d /usr/share/snips/ ({assistant.zip} = Name der Datei)
sudo systemctl restart 'snips-*'

Somit ist Snips lokal einsatzbereit und veröffentlicht ab sofort über seinen MQTT-Broker die Ergebnisse der eigenen Spracherkennung und -Interpretation.

Die Auswertung in Edomi ist trivial: Der MQTT-JSON-Payload wird zerpflückt und mit wenigen Logik-Bausteinen verarbeitet. Der entsprechende Snips-Intent wird hierbei über ein MQTT-LBS abboniert. Der JSON-Inhalt liefert alle erkannten Slots, in unserem Fall zum Beispiel:

Location: Bad
ShutterDesc: Rollladen
PositionValue: 80 %

Die (Rück-)Meldung an Snips zur Sprachausgabe wird ebenfalls über eine JSON-MQTT-Nachricht abgewickelt:

Und so kann es ablaufen:

Fazit

Pro:
Kostengünstig!
Schnelle Ergebnisse!
Vollständig offline bzw. autark!
Gute Erkennungs-Qualität!
Weitreichend konfigurierbar (TTS, Hotword, etc.)!
Empfangs-Gerät/Instanz nicht auf einen einzigen Raum beschränkt, jeder weitere Raum kann über einen sog. “Satellite” angebunden werden!

Contra:
Standard-TTS (picotts) ist zwar brauchbar, aber stark verbesserungswürdig…
Verarbeitungslogik muss mühsam für alle möglichen Gewerke/Lokationen usw. manuell aufgebaut werden.
Software teilweise zu stark allein auf den Raspberry Pi ausgerichtet
Abhängigkeit zum Online-Dienst (Console) bei der Assistent-Erstellung/Anpassung.

Das macht Lust auf mehr! Unser bescheidener Aufbau muss sich kaum hinter den teuren, kommerziellen Lösungen verstecken. Während die käuflich erwerbbaren Produkten nur auf wenige, starre, fest definierte Funktionen (Licht, Beschattung, Heizung, Szenen) beschränkt sind, sind uns mit der Bastel-Lösung kaum Grenzen gesetzt!

Weitere Ausbau-Schritte

Welche Schritte planen wir also als Nächstes?

Steuerung:

  • Steuerung (gedimmtes) Licht (+ evtl. Lichtfarbe)
  • Steuerung Beschattungs-Richtung (Ab/Auf/Stop)
  • Steuerung Tür-Entriegelung
  • Steuerung Automatiken (Status, Start/Stop)

Auskunft:

  • Zeit/Datum (“Wie spät ist es? ➡ Es ist 17 Uhr 35.”)
  • Wetter (“Wie ist das Wetter? ➡ Sonnenschein mit 25° C.”)
  • Nachrichten (“Was gibt es Neues? ➡ Im Westen nichts Neues.”)
  • Zugfahrplan, inkl. Verspätungs-Ansage (“Wann fährt der nächste Zug nach Buxtehude? ➡ Der nächste Zug nach Buxtehude geht um 12:45 Uhr, mit 7 Minuten Verspätung.”)
  • Geo-Position (“Wo ist Walter? ➡ “Walter war vor 11 Minuten in Holzweg 47, 12345 Buxtehude.”
  • Termine (“Nenne mir meine Termine heute! ➡ 12 Uhr 30: Zahnarzt!”)
  • Abfall-Termine (“Wann wird der Bio-Abfall geholt? ➡ Der Bio-Abfall wird – in 7 Tagen – am Donnerstag, den 7. November abgeholt.”)
  • etc.

Szenen:

  • TV-Szene (Licht aus, Beschattung ab, Kodi an, usw.)
  • Aufwachen-Szene (Rollladen auf, Licht gedimmt, gedämpfte Musik, usw.)
  • etc.

Musik-Steuerung:

  • Sonos
  • Spotify
  • etc.

Weitere Überlegungen (Zukunftsmusik):

Ein ansehnliches Gehäuse (inklusive Lautsprecher) für die Hardware wird gesucht.
Optische Rückmeldung bei der Verarbeitung über die eingebauten LEDs des Respeaker Core V2 wären ganz nett.
Satelliten-Setup für weitere Räume im Gebäude sollten eingerichtet werden.

Testen eines alternativen/angenehmeren TTS: Mycroft AI (mimic)scheint eine gute Option zu sein.

Nicht schlecht, oder! Dann baue es nach! Oder sprich uns auf’s Band… 🎤

*Beitragsbild: Cristian Cristian

Comments (2)

  1. Ein schwedisches Heim für einen toten Franzosen | smarthomebau.de Freitag, 13UTCFri, 13 Dec 2019 14:48:56 +0000 13. Dezember 2019 at 14:48 Antworten

    […] nun obsolet. Ihr ahnt es vielleicht es schon, es geht um die Fortführung des Aufbaus für einen Sprachassistenten mit Snips. Wir haben nämlich ein ansehnliches praktisches Gehäuse für den Assistenten […]

  2. Unser Haus | smarthomebau.de Sonntag, 23UTCSun, 23 Feb 2020 17:22:15 +0000 23. Februar 2020 at 17:22 Antworten

    […] Sprachassistent […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

PV-Überschussladen noch besser! ☀

Wie kann das Smarthome uns dabei helfen, den selbst-erzeugten Sonnenstrom effizient zu nutzen? Wir…

Energie Management System im Smart Home + §14a EnWG

Die “Energiewende” im Land treibt uns weg von fossilen Energieträgern hin zu erneuerbaren Alternativen.
Das…

In 4 Schritten zum eigenen Smart-Home – Schritt 4.: Optimierung

Nach mehreren Jahren im jungen Smart Home wird es Zeit ein Fazit zu ziehen…

LED-Matrix als vielseitiges Info-Display im Smart-Home

Die Tatsache, dass die (Haus-)Technik Zuhause viel zu berichten hat, macht es notwendig eine…

KNX Sprachsteuerung – Der Vergleich: 1Home KNX Bridge vs. Thinka for KNX

Versprochen ist versprochen und wird nicht gebrochen: Wir wurden mehrfach darauf angesprochen, welche KNX-Sprachsteuerung…

ETS5 Home – Die günstige Lösung für den Otto-Normalverbraucher?

Wer in der KNX-Welt unterwegs ist, weiss: Man kommt ohne das Programmier- und Provisions-Tool…

Kurzrezension: Heimautomation mit Arduino, ESP8266 und Raspberry Pi

Der Markt für Smart-Home-Geräte ist leider derzeit noch nicht soweit etwwickelt, dass er sämtlich…

Im Test: Thinka – Sprachsteuerung für KNX (Siri + Alexa + Google)

Unser Ruf über wertvolle Expertise u. a. im Zusammenhang mit der Sprachsteuerung im KNX-Umfeld…

Automatische Tür(-Schließung)

Man unterschätzt oft die Tatsache, dass es auch nicht-elektronische/elektrische Dinge gibt, die automatisiert werden…

Smart Watch + Smart Home = Super Home!

Die digitalen, tragbaren Helferlein haben sich wohl leider noch nicht überall durchgesetzt. Überraschenderweise nutzen…

Smart-Home-Intelligenz auf Reisen: Geofencing ganz einfach!

Die Intelligenz deines smarten Zuhauses muss nicht an der eigenen Grundstücksgrenze enden. Wie wäre…

VPN-Tunnel: Sicherer Fernzugang zu unserem Smart Home

Wer kennt das nicht? Du bist unterwegs, (weit) weg von deinem smarten Zuhause. Wie…

Unsere smarte Kaffee-Maschine

“Deutschland liegt mit rund 6 Kilogramm Kaffee Pro-Kopf-Absatz (2019) im oberen Mittelfeld der Konsum-stärksten…

Smart mit KNX: Automatische Gartenbewässerung mit Hunter-Ventilen

Nichts hat mich Anfang dieses Sommers mehr genervt als den frisch gesäten Rasen mehrmals…

Im Test: 1HOME KNX Bridge – Smart Home Sprachsteuerung leicht gemacht

Im Rahmen einer Vorab-Vorführ-Aktion hat 1HOME Inc. aus Slovenien das neu entwickelte 1HOME Bridge…

KNX Secure in a Nutshell: Fragen & Antworten

Seien wir ehrlich: Das ursprüngliche Design zu Übertragungszwecken im KNX-Standard war schlicht und einfach…

#Corona – Intermezzo

Wir erleben alle derzeit bewegte Zeiten. Wir hoffen euch und eure Nächsten bei…

KNX: ETS 5 – Tipps & Tricks & FAQs (Demo/Lite/Professional)

Yeah bitches! Was KNX/ETS-Know-How angeht, sind wir the hottest shit on the internetz™®©!11!! Nur…

Speedtest Chart
UPDATE | Raspberry Pi: Internet-Geschwindigkeit-Tests automatisieren (quick & dirty)

Unser Erster Beitrag zur Internet-Geschwindigkeitsmessung ist auf sehr viel Zuspruch gestoßen – die dort…

Schicksalsschlag: Unser Plan zur Notfall-/Nachlass-Vorsorge

“Das einzig Gute am eigenen Tod ist es, dass man ihn selbst verpasst.” So…

KNX: “ETS Inside” – UPDATE – Endlich brauchbare Alternative zu “ETS Professional”?

Wir wollen uns heute erneut in aller Kürze mit der neuesten Version des KNX…

Ein schwedisches Heim für einen toten Franzosen

Liebe Freunde, es gibt eine gute und eine schlechte Nachricht. Die Gute ist: Ein…

Roborock S50
Automatischer Staubsauger ohne Cloud-Zwang: Roborock S5 im KNX-Smarthome

Sehr lange schlummerte das folgende Projekt auf unserer TODO-Liste. Das Ziel: Integration eines Staubsaugerroboters…

Elektrischer Türöffner im Heimnetzwerk

Nicht selten hat man (in einem Smart-Home) den Wunsch sich selbst oder einem Gast…

Die Sprachsteuerung des “Kleinen Mannes” (Respeaker Core V2 + Kalliope + Edomi)

Liebe Freunde der Sonne! Ihr habt ein Smart Home mit erlesensten Technik-Spielereien vom Feinsten,…

(Fast) Jedes Haushaltsgerät ins (KNX-)Smart-Home direkt einbinden!

Leider kann man im Leben zum Einen nicht alles vorplanen und berücksichtigen, zum Anderen…

“Visu Porn”: Visualisierung in unserem Smart-Home

Ich schaue mir gerne förmlich recht voyeuristisch andere Visus an. Eine sehr gute Inspirationsquelle…

Magic Mirror im KNX-Smart-Home

Wenn es eine Sache im Internet gibt, die das Pornografie-Angebot übersteigt, dann sind es…

KNX Visualisierung – Erste Gehversuche

Liebe Freunde der optischen Leckerlies – das hier könnte hässlich werden… Denn heute geht…

Heim-LAN: Netzwerkschrank, Switch, Patchpanel & Co.

Das Netzwerk-Thema ist doch größer, als man es anfangs einschätzt: Nachdem wir die Netzwerkverkabelung…

KNX: ETS-Gruppenadressen – Die geordnete Struktur im Einfamilienhaus

Jedes ernsthaft betriebene KNX-Projekt benötigt eine geordnete Gruppenadressen-Struktur. Es sei denn ihr setzt die…

KNX: “ETS Inside” – Heilsbringer oder Mogelpackung?

Wir wollen uns heute in aller Kürze mit dem neuen KNX Inbetriebnahme-Tool ETS Inside…

ETS5 Professional (fast) kostenlos? KNX kostengünstig konfigurieren

Liebe KNX-Freunde, ich muss es euch eigentlich nicht erklären: Jede KNX-Installation benötigt zur (initialen)…

Netzwerkleitung verlegen: Schritt-für-Schritt-Anleitung

Letzes Mal sprachen wir über die theoretischen Grundlagen der Netzwerk-Vekabelung (LAN). Wie versprochen beschäftigen…

Taster ohne Abdeckung
Taster-Konzept: Praktischer Versuchsaufbau (Hands-On)

So, Freunde der Sonne: Wir haben ja bereits vor langer Zeit versprochen das Taster-Konzept…

Intelligenter Briefkasten: Version 2.0 – „Arduino-Edition“

Wer unseren bescheidenen Blog verfolgt, kennt unser Lieblings-Projekt: Den “Intelligenten Briefkasten”. Wir haben schon…

Berührungslos Schalten – Kapazitive Sensoren

Liebe Freunde der beeindruckenden Features, heute haben etwas Bemerkenswertes für euch, das nicht jeder…

KNX-Testaufbau (Mini-Testboard) mit Raspberry Pi und knxd

Verwandte Themen

Wie ihr vielleicht in einem früheren Beitrag schon gelesen habt, haben wir uns für…

Raspberry Pi: Internet-Geschwindigkeit-Tests automatisieren (kurz & gut)

Der kostengünstige Einplatinen-Rechner Raspberry Pi lässt sich für viele Dinge (miss-)brauchen. Mitunter messen wir…

Smarter Briefkasten
Intelligenter Briefkasten: Version 1.5 – “RED-Edition”

Liebe Freunde und verehrte Briefträger, gebt es zu: Gibt es etwas schöneres als eine…

Smart E-Mailbox
Schatz, du hast Post! Intelligenter Briefkasten 1.0 [TEIL 2/2]

Bereits im ersten Teil des Posts haben wir den ersten Prototypen des Smarten Briefkastens…

Smart Mail Box
Schatz, du hast Post! Intelligenter Briefkasten 1.0 [TEIL 1/2]

Heute gibt es eine Weltpremiere! Wir stellen heute einen vernetzten Briefkasten vor, der selbständig…