lokale Sprachsteuerung mit openHAB 2 und Snips.ai

Lokale Sprachsteuerung mit Snips.ai und openHAB 2

Habt ihr auch Vorbehalte gegenüber Amazon Alexa und Google Home und wolltet schon immer eine lokale Sprachsteuerung? Ich schon, denn wie ihr vielleicht wisst bin ich kein Freund von Cloud Services für die Spracherkennung.  Snips.ai bietet nun allen eine lokale Sprachsteuerung umzusetzen, die allein auf einem Raspberry Pi 3 läuft. Das Konzept finde ich sehr gut, denn ihr könnt Eure Assistenten Online konfigurieren und lokal für die lokale Sprachsteuerung im Smart Home nutzen. So können z.B. auch Verbesserungen durch andere Smart Home Nutzer in die lokale Spracherkennung einfließen.

In folgendem Video ein paar einleitende Worte und eine Demonstration.

 

Lokale Spracherkennung – benötigte Hardware

Auch wenn ihr bereits einen Raspberry Pi mit laufender Smart Home Software habt, empfehle ich einen eigenen Raspberry für die lokale Spracherkennung. Der Grund ist einfach. Falls mal etwas auf einem der Raspberry schief geht, braucht ihr nur einen Pi neu aufsetzen. So läuft euer Smart Home mit openHAB, FHEM, io Broker oder wie sie alle heißen immer noch und ihr müsst nur den Snips Raspberry neu aufsetzen.

Ich empfehle euch für die Umsetzung die folgenden Komponenten:

Last update was on: 19. November 2018 14:14

 

Werbung
IA0KPHNjcmlwdCBhc3luYyBzcmM9Ii8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2pzL2Fkc2J5Z29vZ2xlLmpzIj48L3NjcmlwdD4NCjwhLS0gT25lU21hcnRIb21lIC0tPg0KPGlucyBjbGFzcz0iYWRzYnlnb29nbGUiDQogICAgIHN0eWxlPSJkaXNwbGF5OmJsb2NrIg0KICAgICBkYXRhLWFkLWNsaWVudD0iY2EtcHViLTY4ODcwMjQzNzgwMDQzMjEiDQogICAgIGRhdGEtYWQtc2xvdD0iNzcxMjIyOTQ0MCINCiAgICAgZGF0YS1hZC1mb3JtYXQ9ImF1dG8iPjwvaW5zPg0KPHNjcmlwdD4NCihhZHNieWdvb2dsZSA9IHdpbmRvdy5hZHNieWdvb2dsZSB8fCBbXSkucHVzaCh7fSk7DQo8L3NjcmlwdD4NCg==

Lokale Spracherkennung – Snips.ai auf Raspberry Pi 3 installieren

  1. Ladet Euch Rasbian Stretch Lite herunter
  2. Entpackt die ZIP Datei
  3. Installiert das Image auf eine mindestens 4 GB, besser 8 GB Micro SD Karte mittels Etcher.
  4. Nach dem Flash vorgang legt eine Datei „ssh“ im Boot Verzeichnis an. Dies ist wichtig, da ihr sonst nicht per SSH auf Euren Pi Zugrifen könnt.
  5. Legt die Micro SD Karte in den Raspberry Pi 3
  6. Verbindet Euren Raspberry Pi mit einem LAN Kabel
  7. Verbindet den RPi 3 mit dem Stromkabel
  8. Ihr könnt euch nun direkt per Putty (unter Windows) auf dem Pi einloggen. User pi, Passwort raspberry
  9. Nach dem einloggen gebt sudo raspi-config
  10. Wählt den ersten Punkt und ändert das Passwort
  11. Nun wählt den Punkt Inteface Options und aktiviert den SSH Server

NodeJs und NPM

Als Grundvoraussetzung  wird NPM und NodeJs benötigt. Zur Installation gebt bitte folgende Befehl nacheinander ein.

Prüft nun die Installation mit

Die Version muss mindestens Node v7.5.0 entsprechen.

Snips Installieren per Sam Assistant Manager (SAM)

Der Snips Assistant Manager (SAM) erleichtert euch die Installation, da so lange Befehl abgekürzt werden. SAM wird durch folgenden Befehl installiert.

Verbindet nun SAM mit euren Raspberry Pi. Wenn ihr den Hostname geändert habt, ändert bitte raspberrypi.local entsprechend ab.

Ihr könnt nun bereits den Status  mit folgendem Kommando prüfen

Installiert nun Snips mit folgendem Befehl.

smart-home-openhab-2-snips-lokale-sprachsteuerung-SAM-installieren

Steckt einen Lautsprecher mit 3,5″ Klinke in den RPi. Kopfhörer tun es zur Not auch. Weiterhin steckt die PS3 Eye Kamera in einen USB Port. Im Anschluss könnt ihr das Audio Setup vornehmen und gebt den Befehl ein.

Die Frage nach dem Maker Kit mit n beantworten. Die Kamera sollte als CameraB409241 [USB Camera-B4.09.24.1], device 0: USB Audio [USB Audio] oder ähnliches erkannt werden.  Falls mehr als ein Gerät für die Audio Ausgabe gefunden wurde. Wählt den Eintrag ohne HDMI mittels der Pfeiltasten auf der Tastatur.

Im Anschluss sollte folgende Meldung erscheinen

Testet mit folgenden Befehl den Lautsprecher.

Die Ansage könnt ihr mit STRG + C unterbrechen

Nun testet das Mikro mit dem Befehl.

Wartet einen Augenblick bis die folgende Zeile erscheint

Sagt was und drückt eine Taste. Der Lautsprecher sollte nun genau das gesagte ausgeben.

Falls ihr eine Audiofeedback wünscht, gebt folgenden Befehl ein. Dies installiert auch den Mosquitto client.

Snips Assistenten installieren

Falls ihr noch kein Snips Account habt, legt diesen unter folgender Adressse an.

Im Anschluss legt den ersten Assistenten an und wählt die App Lichtsteuerung.

smart-home-openhab-2-snips-app-installieren-1

Nun geht wieder in euren SSH Client und gebt den folgenden Befehl ein.

Gebt entsprechend User und Passwort ein. Nach erfolgreichem Login gebt den folgenden Befehl ein

Falls ihr mehrere Assistenten haben solltet, wählt den entsprechenden Assistenten. Bei einem sollte es direkt losgehen. Es dauert nun eine Weile. Gerade der Punkt ASR training wird einige Zeit in Anspruch nehmen. Auch die nachfolgende Installation der packages wird etwas dauern. Wenn alles durch ist, solltet ihr folgendes Ergebnis sehen.

Im Anschluss könnt ihr nun mit mit „Hey Snips, mach Licht im Klo an“ die Spracherkennung starten. Wollt ihr parallel beobachten was sich in Snips tut, führt den folgenden Befehl aus.

Das Ergebnis ist eine JSONPath Zeichenkette:

 

Um auf diese Werte in eurem Smart Home zuzugreifen wird nun eine Plattform benötigt, die sich mit MQTT auf den Snips Raspberry Pi verbinden kann. Wie ich das mit openHAB 2 mache, lest ihr im folgenden Kapitel.

Lokale Sprachsteuerung – Snips mit openHAB 2 verbinden

Für die lokale Sprachsteuerung braucht ihr nun natürlich noch ein System, welches die Inhalte des MQTT Topic aus Snips entgegennimmt und die Steuerung übernimmt. Hierfür könnt ihr wie ich  openHAB 2 oder Home Assistant nutzen. Es geht sicher auch mit Systemen wie FHEM oder ioBroker. So lange ihr die Möglichkeit habt MQTT auf euer System zu bringen und einen JSON Path String zerlegen könnt, steht der lokalen Sprachsteuerung nichts mehr im Wege.

Snips mit openHAB 2 verbinden – MQTT Binding installieren und Item erstellen

Installiert über die Paper UI das MQTT Binding und tragt in die mqtt.cfg folgendes ein. hostname müsst ihr dabei durch euren Hostnamen ersetzen.

Nun legt eine Items Datei snips.items an.

Snips mit openHAB 2 verbinden – Snips MQTT Topic per Regel verarbeiten

Damit ihr nun die unterschiedlichen Sprachansagen in eurem Smart Home Server verarbeiten könnt, müsst ihr das Topic bei jeder Änderung abgreifen. In openHAB 2 geht dies wie folgt. Hier wird weiterhin der Inhalt im Logviewer ausgegeben. Dies ist sehr sinnvoll um die Logik zu analysieren.

Snips mit openHAB 2 verbinden – MQTT Topic per JSONPath Transformation aufteilen

Nun installiert noch die JSON Path Transformation über die Paper UI. Die Regel könnt ihr nun so erweitern, dass ihr den Inhalt des MQTT Topic aufteilt.

Die folgende Regel bewirkt folgendes:

  • Das Intent wird aufgeteilt und in pureIntent steht der Name des Intent ohne den Nutzernamen. Für unsere App oben steht also LampenAusSchalten, LampenEinSchalten, LampenDimmen usw in dieser Variable.
  • In der Variable device_val übergeben wir den Wert aus dem ersten Slot. In unserem Beispiel steht dort Toilette.
  • Über eine globale Variable oh2ONOFF belegen wir anhand des Intent Namen den Zustand vor. ON oder OFF
  • Als letztes fragen wir den vorher abgegriffenen Wert der Variable device_val ab. Steht hier Toilette, schalten wir das entsprechende Item mit der globalen Variable an oder aus.

Lokale Sprachsteuerung – Online Kurs zum weiteren Ausbau

Für alle, die die Sprachsteuerung wesentlich ausbauen möchten, habe ich einen Online Kurs entwickelt.

 

Zum aktuellen Zeitpunkt umfasst der Kurs 2 Stunden und bietet folgendene Inhalte:

  • Installation von Raspian
  • Konfiguration von Raspian
  • Installation von Snips
  • Konfiguration von Snips (Mikrofon und Lautsprecher)
  • Erstellung eines eigenen Assistenten in Snips.ai
  • Erstellung einer generischen Regel in openHAB 2

Der Kurs zur lokalen Sprachsteuerung kann entweder einzeln für 25 € oder in Kombination mit dem openHAB 2 Kurs gebucht werden. Dies kann ich allen interessierten empfehlen, für die openHAB 2 komplettes Neuland ist. Ihr erhaltet nach Buchung des openHAB 2 Kurses einen Gutschein für den Kurs zur lokalen Sprachsteuerung.

Ihr könnt euch natürlich auch durch die einleitenden Beiträge  openHAB 2 Installation und openHAB 2 Konfiguration lesen. Fragen stellt ihr dann hier auf dem Blog.

Und nun wünsche ich euch viel Spaß mit eurer lokalen Sprachsteuerung.

Werbung
2 Comments
  1. Ist es möglich das Audio von Snips immer über einen Sonos auszugeben und den Sonos zusätzlich über OpenHab zu steuern?

    • Hallo,

      sollte möglich sein Sonos als Audio Ausgabe zu nutzen. Habe selbst kein Sonos aber ein wenig googeln zeigt, dass es geht. Die Regel musst du dir entsprechend anpassen mit eigenen Texten oder nimmst die Infos aus dem MQTT Text.

      Beste Grüße
      Thomas

    Hinterlasse einen Kommentar