Raspberry Pi Sprachsteuerung mit Node-RED

Werbung
Hinweis: Diese Seite enthält Werbelinks

Raspberry Pi Sprachsteuerung mit Node-RED, voice2json und openHAB 2

In diesem Beitrag erstellen wir eine Raspberry Pi Sprachsteuerung mit Node-RED. Ihr erfahrt welche Hardware und Software benötigt wird. Viel Spaß mit dieser Schritt für Schritt Anleitung.

Solltet ihr mit einer bestehenden Node-RED Installation arbeiten, macht vorher ein Backup. Im Anschluss auf den neusten Stand aktualisieren. Ich gebe dennoch keine Gewähr. Startet sonst erstmal mit einer Neuinstallation wie in diesem Beitrag. Bei mir läuft dies seit Monaten stabil.

Raspberry Pi Sprachsteuerung mit Node-RED – Hardware

Als Hardware für die Steuerung empfehle ich ein Raspberry Pi 4 und ein Respeaker Mic 2.0 Mirkofon.

Werbung
Smarthome-Training-openHAB2-Kurs-de

Raspberry Pi Sprachsteuerung mit Node-RED – Software

Software – Node-RED installieren

Als erstes müsst ihr Node-RED auf dem Raspberry Pi installieren. Folgt hierzu einfach dem Beitrag Node-RED auf Raspberry Pi installieren.

Ich gehe davon aus, dass ihr weiterhin per ssh auf dem Raspberry Pi eingeloggt seid. Falls nicht loggt euch bitte ein.

Plant ihr den Raspberry Pi mittels WLAN einzubinden. Hierfür über den Befehl sudo raspi-config das Menü aufrufen und Network Options, Wireless LAN wählen. Dort durchläuft einfach die einzelnen Schritte. Ist im Grunde selbsterklärend.

Im nächsten Schritt stellt die Sprache ein. Wir benötigen dies für eine deutsche Sprachsteuerung.

  1. Wählt Punkt 4. „Localisation Options Set up language …“
  2. Nun den Unterpunkt I1 „Change Locale Set up language …“
  3. Hier müsst ihr eine ganze weile Pfeil nach unten drücken bis ihr den Eintrag „de_DE.UTF-8 UTF-8“ findet. Dies mit der Leertaste markieren, Tab drücken, Enter und einfach weiter durch navigieren.

Software – Voice2JSON installieren

Als weitere Komponeten benötigen wir Voice2JSON. Ruft die folgende Seite auf.

http://voice2json.org/install.html#debian-package

Hier wählt das entsprechende Paket und macht einen Rechtsklick (1) auf den Link. Im Kontextmenü (2) „Adresse des Links kopieren“ wählen. Und ja, armhf ist richtig, auch wenn arm64 den PI 3+,4 listet.

Nun auf dem Pi wget gefolgt von der kopierten Adresse eingeben. In unserem Fall (Pi4) sieht dies wie folgt aus.

Nun entpacken wir das Paket mit folgendem Befehl und beantwortet alle Fragen mit „Y“.

Sprache herunterladen unter folgendem Link. Da Kaldi aktuell die beste Kombination aus Erkennung und Performance bietet, laden wir das Paket de_kaldi-zamia-2.0.tar.gz herunter.

Entpacken der Sprachdateien.

Software – SoX installieren

Um mit Sound zu arbeiten benötigen wir noch Sox (Sound-Exchange). Dies könnt ihr bei Debian einfach über folgenden Befehl installieren.

Software – Node-RED Raspberry Pi Sprachsteuerung Nodes

Nun benötigen wir noch die Nodes der für die Sprachsteuerung. Installiert als erstes GIT

Zur Installation der Nodes wechselt in das Node-RED Verzeichnis

Im Anschluss installiert ihr die folgenden beiden nodes. Diese Nodes hat übrigens unser Mitglied Johannes von myfreelife e.V. erstellt. Danke Johannes für diese schlanke, hervorragende Lösung!

Startet node-RED per node-red-start und als bestes per Service.

Node-RED Sprachsteuerung Nodes

Verbindet nun das Respeaker USB Mirko per Kabel mit dem USB Port des Raspberry Pi. Alle LEDs sollten direkte anfangen zu leuchten und bereits auf Sprache reagieren.

Hinweis: Die folgenden Sprachsteuerung beruht auf openHAB 2 als Smarthome Server. Falls ihr andere Lösungen wie ioBroker, FHEM, Home Assistant und weiteres nutzt, müsst ihr den Flow entsprechend anpassen.

Bei der Erstellung des Flows hat mich Johannes unterstützt. Damit ihr es einfacher habt, kopiert euch einfach den Flow in den Zwischenspeicher.

Im Anschluss geht in die Node-RED Oberfläche und importiert den Flow. Klickt auf das Menü Icon (1) und wählt Import (2).

Fügt den kopierten Flow in die Box (1) ein und drückt Import (2).

Als nächstes müsst ihr einige wenige Einstellungen vornehmen.

Node-Red Sprachsteuerung Konfiguration

Nun müsst ihr die Konfiguration noch auf eure Bedürfnisse hin anpassen.

Node-Red Sprachsteuerung Konfiguration – openHAB Host

Wenn ihr wie ich openHAB nutzt, ersetzt als erstes den Hostnamen. Öffnet die Node (1), ändert den Host (2) auf euren Hostnamen und klickt Fertig (3). Im Anschluss werden die Befehle an die Rest API von openHAB 2 gesendet.

Node-Red Sprachsteuerung Konfiguration – Kaldi

Als erstes passt die Kaldi Konfiguration an. Klickt auf die Node (1) und im Anschluss auf den ändern Knopf (2).

Hier passt den Pfad zum Kaldi Verzeichnis (1) an. Hier könnt ihr weiterhin einzelne Intents anlegen und die Steuerung für die Sprachbefehle definieren (2).

Eine detaillierte Erklärung zur Syntax gibt es im voice2json whitepaper.

Nun ist es noch wichtig, dass ihr die Slots aufruft (1) und mit dem Bleistift (2) die Konfiguration aufruft und an eure Bedarfe anpasst (3). Zur Erklärung ein Beispiel anhand der Zeilen vorhanden Beispielzeilen. In den runden Klammern steht der Text wie ich das Gerät ansprechen möchte. Ich kann also dachboden lampe, licht auf dem dachboden usw. sagen. In eckigen Klarmmern steht ein optionales Wort. So ist es egal, ob ich das dachboden licht oder dachboden licht sage. In den geschweiften Klammern kommt der Item Namen rein.

Klickt nun oben rechts in der Node-RED UI auf deploy damit eure bisherigen Änderungen aktiviert werden.

Node-Red Sprachsteuerung Konfiguration – Training

Ein weitere wichtige Komponente ist das Training. Nach jeder Änderung der Kaldi Konfiguration müsst ihr ein Training durchführen und Node-RED neu starten. Ich habe den Flow daher so optimiert, dass die nötigen Schritte direkt ausgeführt werden. Klickt einfach auf train (1) und die Schritte laufen automatisiert ab.

Wartet einen Augenblick und ihr die Erkennung sollte funktionieren. Viel Spaß mit dem Ausbau eurer Konfiguration.

Es klappt was nicht? Lasst ein Kommentar da. Ich gebe die Kommentare manuell frei, daher nicht wundern, wenn es etwas dauert. 🙂

Ich bin Thomas. Ich bin hauptberuflich SAP Berater und Softwareentwickler. Das Thema Smart Home hat mich nach der Sanierung unseres 60er Jahre Hauses gepackt. Es wurde alles in Eingenleistung geplant und die Buskabel verlegt. Ich betreibe seit einiger Zeit einen openHAB 2 Praxis Blog. Hier schreibe ich Schritt für Schritt Anleitungen (Tutorials) zur Umsetzung des eigenen Smart Home. Weiterhin engagiere ich mich in unserem MyFreeLife e.V. und helfe bei der Erstellung barrierefreier Smart Homes. Nun wird es Zeit mein breites Wissen im Bereich Smart Home mit Euch zu teilen.

15 Comments
  1. Hallo, hab das ganze wie beschrieben installiert. Leider scheine ich was verkehrt zu machen. Also nachem ich die Nodes von Johannes Kropf installiert habe und nodered als Service gestartet ist – sehe ich leider keinen der voice-to-jason nodes. Auch nach dem importieren des Flows sehe ich als einzigen node ein OpenHab sonst nichts. Hast du irgendeine Idee, was ich verkehrt mache?

  2. Hallo, Ich hab den ganzen setup nochmal gemacht. Mit reboot. Dann gings. Vieleicht war der rebott was fehlte.

  3. Reply
    Christian-Alexander Hornburg 11. November 2020 at 17:04

    Hallo Thomas,
    erstmal vielen Dank für die Anleitung.
    Mir ist aufgefallen das der NodeRed Flow unvollständig ist.

    Könntest Du es bitte den vollständigen Flow einstellen?

    Vielen Dank.

    • Hallo Christian,

      danke für den Hinweis. Ich habe ihn nochmal exportiert und eingefügt. Hoffe es geht nun.

      Beste Grüße
      Thomas

  4. Hallo Thomas,
    ich habe mal weitergemacht. Allerdings erhalte ich beim Import des obigen flows nur ein paar wenige nodes.
    OpenHAB und Subflow RestitemOutBlank – RequestVars, HTTP ANforderung, Switch und Auslöser 1s (2 mal).

    Habs paarmal probiert. Immer geleich. Kann man da was flasch machen?

    • Hallo Uwe,

      hab leider den Flow scheinbar nicht ganz rüber kopiert. Versuche es einfach noch mal.

      Beste Grüße
      Thomas

  5. Ich will noch nachtragen:
    Bin erste zwei Tage „node red“ Benutzer und entsprechen unwissend. Hab sonst immer nur C, C++ und sowas gemacht. Das „node red“ ist ja gigantisch gut. Ich hab ne ganz andere Harware als hier beschrieben : homematic. Hab schon ein parr nodes geschrieben, die die Geräteliste lesen und parsen. Das geht soweit gut.

    Aber, bei der Sprachsteuerung wollte ich nicht gern das Rad neu erfinden.
    Hab voher SNIPS benutzt. Ging auch gut. Aber nach der Sonos Übernahme: ende.

  6. Hallo Thomas,

    sicher das der Flow nun komplett ist. Ich habe auch das Problem, dass ich nur die Node „openhab“ und den subflow sehe. Die anderen Nodes, die in den Screenshots angedeutet sind, kann ich in dem gelisteten Flow nicht finden.

    Danke für Deine Hilfe und auch diese tolle Seite.
    Burkhard

    • Hallo Burkhard,

      oh, man ich vermute den Webcache. Hab die Seite noch mal aus dem Cache genommen und den Import selbst getestet. Bitte versuche es noch mal.

      Danke und Grüße
      Thomas

  7. Jetzt sieht es besser aus; deutlich mehr als die 193 Zeilen, die es gestern noch waren. Probiere es heute Abend aus. Danke schonmal.

  8. Hallo,
    ich arbeite schon längere Zeit mit raspi + nodered für meine eigene Smarthomelösung.
    Leider funktioniert
    npm install johanneskropf/node-red-contrib-sox-utils
    nicht. Der raspi findet keine jason package.
    Und nicht nur das, jetzt startet node-red nicht mehr, weil es auch die Daten für voice2json wartet.
    Auch ein uninstall der beiden johanneskropf-nodes hat daran nichts geändert.
    Das sieht nicht so gut aus.
    War wohl nicht gut genug getestet.

    • Hallo Eberhard,

      das tut mir leid. Der Beitrag war für eine Neuinstallation gedacht. Ich habe oben einen Hinweis geschrieben. Hoffe du hast noch ein Backup gehabt. Es kann leider viele Ursachen haben. Hattst du dein System vorher aktualisiert bzw. welche Versionen (node…) waren bei dir installiert?

      Grüße
      Thomas

  9. Hallo,

    gibt es irgendwo zu dem Thema (voice2json) ein deutschsprachige Diskussionsplatform?

    Ich habe z.b. festgestellt, dass viele meiner Worte unter „unkown_words.txt“ aufgeführt werden, da ich sie mit einem großen Anfangsbuchstaben geschrieben habe.

    Über solche Dinge würde ich mich gerne austauschen.

  10. Hey Thomas,

    gibt es da jetzt einen Zaubertrick wie man das alte ReSpeaker 4Mic Array zum laufen bekommt. Hatte nur deine S.E.P.I.A. Anleitung gesehen und dann das 4Mic Array gekauft… jetzt benutzt ihr hier aber ein anderes Mic.

    Gibt es einen weg wie ich das 4Mic Array auf meinem Pi4 damit auch nutzen kann.

    Danke im Voraus.

    Grüße
    Andreas

    Hinterlasse einen Kommentar