Raspberry Pi mit Rhasspy, ReSpeaker und IoBroker installieren

Referenz Hardware

  • Raspberry PI 4B (RPI4-MODBP-4GB)
  • SanDisk Ultra 16GB microSDHC
  • MakerHawk ReSpeaker 4 Mic Array for PI

Referenz Software

  • (Zur Konfiguration) Windows 10 2004 (Build 19041.746)
  • Raspberry PI Imager v1.4
  • Raspberry PI OS Lite (32-Bit) (Released: 2021-01-11)
  • Rhasspy 2.5.9
  • IoBroker 4.2.1

Bitte Lesen!:

  • Die Anleitung ist nach meinen Erfahrungen geschrieben und besitzt natürlich keine Allgemeingültigkeit.
  • Die von mir eingesetzte Hard- und Software ist meine Entscheidung gewesen, ich möchte damit keine Empfehlungen aussprechen.
  • Die Anleitung hat so wie sie hier steht, mit den oben genannten Spezifikationen bei mehrfachen Durchläufen funktioniert.
  • Solltet Ihr Probleme mit der Anleitung haben oder Fragen, schreibt mir gerne in den Kommentaren. 
  • Mit den Links möchte ich euch die Arbeit erleichtern. Die Nutzung ist selbstverständlich auf eigene Gefahr.

Ich hoffe Euch mit meiner Anleitung den Einstieg in das Thema Rhasspy und IoBroker erleichtern zu könne und euch den Frust von meinem ersten Versuch zu ersparen:)

Viel Erfolg!

Ziel der Anleitung

Ziel der Anleitung ist die absolute Grundinstallation und Konfiguration von Rhasspy und dem IoBroker auf einem Raspberry Pi mit Respeaker Mikrofon. Diese Anleitung soll als Basis für weitere, darauf aufbauende Anleitungen zum Thema Sprachassisten und Hausautomatisierung dienen.

Vorbereitung des Raspberry Pi

1. Image auf SD-Karte flashen:

  1. Raspberry Pi Imager installieren und ausführen:
    https://www.raspberrypi.org/software/
  2. Operating System => “Raspberry Pi OS Light (32-Bit)” auswählen
  3. SD Card => Zu verwendende Karte auswählen.
  4. “Write” drücken und bestätigen.
  5. Die folgenden Fenster mit “yes” und “continue” bestätigen.

2. SSH Zugang auf Raspberry aktivieren:

(Optional): Nachdem die SD-Karte im letzten Schritt ausgeworfen wurde, muss Sie eventuell nochmals aus- und wieder eingesteckt werden.

(Optional): Eventuell wird die SD-Karte als unformatiert erkannt. Diese Meldungen können abgebrochen werden.

  1. Im Explorer ist nun ein neues Volumen Namens “boot” mit ca 250MB größe.
  2. In diesem Volumen eine neue Textdatei mit dem Namen “ssh” anlegen. Die Endung “.txt” entfernen, die darauffolgende Warnung kann mit “Ja” bestätigt werden.

3. Verbindung zum Raspberry Pi herstellen:

  1. SD-Karte in Raspberry Pi einstecken und den Raspberry mit Strom versorgen.
  2. IP-Adresse über die DHCP-Adressvergabe des Routers auslesen oder mit dem Advanced IP Scanner herausfinden. Der Hostname des Geräts ist “raspberrypi”.
    https://www.advanced-ip-scanner.com/de/
  3. Per Putty, mit SSH/Port 22 auf die eben ausgelesene Ipv4-Adresse verbinden.

(Optional): Sollte ein “PuTTY Security Alert erscheinen”, kann dieser mit “Ja” bestätigt werden.

  1. Anmelden mit: (Nicht wundern, die Passworteingabe erfolgt ohne visuelle Darstellung)
    Benutzer: Pi
    Passwort: raspberry

(Optional): Mit “passwd” kannst du das Passwort für den Benutzer “Pi” ändern.

4. Raspberry Pi OS Updaten:

Egal wie neu die installierte Version ist, empfiehlt es sich nach Updates/Upgrades zu suchen.

1. In der Shell eingeben:

sudo apt-get update

2. In der Shell eingeben: (Auswahl mit Y bestätigen.)

sudo apt-get upgrade

IoBroker installieren

1. Folgendes in der Shell eingeben:

curl -sLf https://iobroker.net/install.sh | bash -

2. Sobald die Installation erfolgreich abgeschlossen ist (siehe Screenshot), kann sich über einem Browser mit der folgenden Adresse auf den IoBroker verbunden werden:

ACHTUNG: Zwischen dem gelben Text und Schritt 4 kann etwas mehr Zeit vergehen!

http://IP.DEINES:RASPBERRY.PI:8081

Quelle: https://www.iobroker.net/

Rhasspy installieren

1. Python3 installieren:

1. Folgendes in der Shell eingeben und mit Y bestätigen:

sudo apt-get install \
       python3 python3-dev python3-setuptools python3-pip python3-venv \
       git build-essential libatlas-base-dev swig portaudio19-dev \
       supervisor mosquitto sox alsa-utils libgfortran4 libopenblas-dev \
       espeak flite \
       perl curl patchelf ca-certificates

Sobald der Prompt wieder zu sehen ist, ist die Installation abgeschlossen.

2. Rhasspy herunterladen und installieren:

1. Benötigte Version auslesen:

1. Folgendes in der Shell eingeben:

dpkg-architecture | grep DEB_BUILD_ARCH=

Es sollte nun eine Ausgabe nach folgendem Muster geben:

2. Rhasspy herunterladen:

1. Folgendes in der Shell eingeben:

wget Hier_der_Pfad_für_deine_Version

Den Pfad bitte je nach Ausgabe von “DEB_BUILD_ARCH=” auswählen und nach wget einsetzen.

Links für alle Versionen sind auf dieser Seite zu finden: https://rhasspy.readthedocs.io/en/latest/installation/#debian

Hier die für uns relevanten Links (Stand: 13.02.2021):

  • armhf:
    https://github.com/rhasspy/rhasspy/releases/download/v2.5.9/rhasspy_2.5.9_armhf.deb
  • arm64:
    https://github.com/rhasspy/rhasspy/releases/download/v2.5.9/rhasspy_2.5.9_arm64.deb
  • armel:
    https://github.com/rhasspy/rhasspy/releases/download/v2.5.9/rhasspy_2.5.9_armel.deb
3. Rhasspy installieren (1.Versuch):
  1. Mit “ls” auslesen ob Rhasspy erfolgreich heruntergeladen wurde. Die Ausgabe sollte dann wie folgt aussehen:

2. Rhasspy mit folgendem Befehl installieren:

sudo dpkg -i /home/pi/rhasspy_2.5.9_VERSION.deb

Nicht wundern, die Installation wird mit hoher Wahrscheinlichkeit in einen Fehler laufen. Dann einfach mit Schritt 4. der Anleitung weiter machen.

4. Fehlende Abhängigkeiten herunterladen:
  1. Folgendes in der Shell eingeben und mit Y bestätigen:
sudo apt --fix-broken install
5. Rhasspy installieren (2.Versuch):

1. Rhasspy mit folgendem Befehl installieren:

sudo dpkg -i /home/pi/rhasspy_2.5.9_VERSION.deb
6. Rhasspy in den Autostart:

1. Die Datei rc.local im Editor öffnen:

sudo nano /etc/rc.local

2. Folgende Zeile zwischen dem bestehenden Code und “exit 0” eintragen:

rhasspy -p de

3. Datei speichern und schließen:

  • Datei mit STRG + X schließen
  • Änderungen mit Y speichern
  • Bei erscheinen der Zeile “File Name”, Enter drücken.

Treiber für ReSpeaker installieren

1. Treiber mit folgendem Befehl herunterladen:

git clone https://github.com/respeaker/seeed-voicecard

2. Mit folgendem Befehl den Ordner wechseln:

cd seeed-voicecard

3. Mit folgendem Befehl den Treiber installieren:

sudo ./install.sh --compat-kernel

Quelle: https://github.com/respeaker/seeed-voicecard

Installation abschließen und testen.

1. RaspberryPi neustarten:

sudo reboot

2. Die folgenden Adressen im Browser prüfen:

  • Rhasspy:
    http://IP.DEINES.RASPBERRY.PI:12101
  • IoBroker
    http://IP.DEINES.RASPBERRY.PI:8081

Bei beiden Adressen muss die entsprechende Oberfläche erscheinen.

3. Treiber für den Respeaker testen:

  • Weboberfläche von Rhasspy öffnen:
    http://IP.DEINES.RASPBERRY.PI:12101
  • Die Einstellungen für “Microphone” auswählen.
  • Die Einstellung für “Audio Recording” auf PyAudio stellen.
  • Den roten Button “Save and Restart Required” drücken und mit OK bestätigen.
  • Neben “Default Device” auf “Refresh”
  • Im Dropdown-Menü von “Default Device” auf  “seed-4mic-voicecard” stellen.
  • Bis zum Button “Save Settings” herunterscrollen und diesen betätigen.

Grundkonfiguration Rhasspy

Ergänzt am 22.02.2021

  • Über einen Browser deiner Wahl auf die Weboberfläche von Rhasspy mit folgender Adresse verbinden:
http://IP.DEINES.RASPBERRY.PI:12101/
  • Über das Dropdown-Menü “Home” (oben Links) zu den “Settings” wechseln.
  • Hier solltest du unbedingt die “SiteID” anpassen. Ich würde empfehlen hier einen Namen zu wählen der auf die Funktion als “Server oder Hauptstation” hindeutet. Dies hilft, sollten in Zukunft noch Rhasspy-Installation als Sateliten hinzukommen.
  • Alle Einstellungen auf die “(Recommended)” Werte stellen. Der Punkt “Intent Handling” bleibt deaktiviert!
  • Die Einstellungen mit dem Button “Save Settings” speichern und den Neustart von Rhasspy bestätigen.
  • Nun ist am oberen Ende des Menüs ein gelbes Feld mit Download Button erschienen, dies sind Abhängigkeiten der eben ausgewählten Einstellungen. Der Download muss ausgeführt werden um den Rhasspy funktionsfähig zu machen.

(Optional): Sollte die Meldung “There are 2 word(s) that Rhasspy isn’t sure how to pronounce” kommen, kann dies vorerst ignoriert werden. Es handelt sich dabei um Wörter aus den Beispielsätzen die Ihr vermutlich eh nicht brauchen werdet. 

  • Solltest du das Mikrofon noch nicht ausgewählt haben, wiederhole die Schritte aus “3. Treiber für den Respeaker testen”
  • Mit einem Klick auf die grüne Fläche “Wake Word”, die Einstellungen dazu ausklappen.
    => Unter “Available Keywords:” kannst du dir nun ein für Dich passendes Wake Word aussuchen.
    => Einstellungen mit “Save Settings” übernehmen.
  • (Optional aber sehr hilfreich): Steckt euch einen Kopfhörer am Raspberry Pi an, auf Dauer vielleicht auch einen Lautsprecher. Zum einrichten:
    => Klick auf die grüne Fläche “Audio Playing”
    => Auf Refresh klicken
    => “Default Audio Device (sysdefault:CARD=Headphones)” auswählen 
    => Einstellungen mit “Save Settings” übernehmen.

Test von Rhasspy (Das erste mal mit Rhasspy sprechen)

  • Über das Haus-Symbol im Linken Menü gelangst du zur Hauptseite.
  • Test 1 (Grundfunktion):
    => Klicke auf den Button “Wake Up”
    => Wenn das Fenster “Listening for Command” erscheint, sagst du “Wie spät ist es?”
    => Das Ergebnis sollte auch die Ausgabe “GetTime” sein.
  • Test 2 (Wake Word):
    => Sage das vorher eingestellte Wake Word, warte einen Moment (Mit Lautsprecher ertönt ein “Biep”) und sage “Wie spät ist es?”
    => Das Ergebnis sollte auch hier die Ausgabe “GetTime” sein.

Herzlichen Glückwunsch, damit ist die Grundinstallation abgeschlossen ! 🙂 

(Optional): WLAN am Raspberry Pi aktivieren

Ergänzt am 18.02.2021

  • Mit Putty auf den Raspberry Pi verbinden (Siehe Punkt 2)
  • Mit folgendem Befehl den Konfigurator öffnen:
sudo raspi-config
  • “System Options” auswählen und mit Enter bestätigen
  • “Wireless LAN” auswählen und mit Enter bestätigen
  • SSID und Passwort eintragen, jeweils mit Enter bestätigen.
17 Kommentare
  1. michl
    michl sagte:

    Hey Wirklich gute Anleitung, ich hab mir mal ein mic2 geholt und auch die treiber installiert hier aber die soundkarte wird mir nicht angezeigt im Rhasspy. dennoch wird sie mir im terminal angezigt und sobald ich auf refresh auf dem Rhasspy starte kommt die Fehlermeldung TimeoutError.

    Antworten
    • Simon
      Simon sagte:

      Hallo Michl,
      freut mich wenn wir wir (soweit erstmal) helfen konnten.
      So ein ähnliches Problem hatte ich am Anfang glaube ich auch einmal, bei der nächsten Neuinstallation (Musste ja die Anleitung immer wieder mal testen) war es weg.
      Ich denke mal irgendeine der Installation davor, vielleicht die Abhängigkeiten hatten gefehlt.
      Was ich aber auf jeden Fall mal versuchen würde ist, einmal ein anderen Audio Recording Engine auszuwählen und dann wieder zurück zu deinem gehen.
      Und einen Neustart natürlich .. 😉

      Was für eine Installationsumgebung hast du denn?

      Gruß,
      Simon

      Antworten
      • Michl
        Michl sagte:

        Hey ich Probiere es später nochmal aus. Als Umgebung hab ich das Rasbian Jessie Lite. Aber als ich das mic installiert habe musste ja der Kernel geändert werden, und Rhasspy hat automatisch ein Update gemacht kann es davon kommen ?

        Antworten
        • Simon
          Simon sagte:

          Hallo Michl,

          ja mit den Kernel Versionen gab es in der Tat Problem.
          Hast du den Treiber vor dem Rhasspy installiert? Wenn ja und es in der anderen Reihenfolge funktioniert .. sag bescheid. Dann schreibe ich das als Warnung in die Anleitung.

          Gruß,
          Simon

          Antworten
  2. Dominik
    Dominik sagte:

    Hi!
    Ich hab jetzt rhasspy am Laufen und kann mit nem Wakeword und Befehl einen Lichtschalter betätigen. Vielen lieben Dank! Ich muss aber sagen, dass ich mit deiner Installationsanleitung für rhasspy gescheitert bin und bin dann über n dockerimage gegangen (waren zwei Befehle und super einfach…) Die Treiberinstallation und Inbetriebnahme von Rhasspy war dann hier wieder super beschrieben. Auch die Integration über nodered in iobroker hat (mit Hilfe Deiner Anleitung) hingehauen! Das Schalten eines Schalters war allerdings eine ziemliche Bastelei, falls Du hier mehr Infos haben willst (hab im anderen Beitrag gesehen, dass Du bei einer Frage nicht weiterhelfen konntest), kannst Du mir gerne über meine E-Mail schreiben. Danke nochmal!!

    Viele Grüße

    Dominik

    Antworten
    • Simon
      Simon sagte:

      Hallo Dominik,

      Super 🙂
      Was hat denn bei der Installation von Rhasspy nicht geklappt? Vielleicht habe ich ja einen Fehler drin und was für Hard-/Software hast Du verwandt?

      Was meinst du mit Schalter? Einen Licht(kipp)schalter oder einen virtuellen in Node-Red?

      Du erinnerst mich, dass ich noch eine Anleitung zu meiner Lichtschaltung erstellen wollte.. 😀

      Gruß, Simon

      Antworten
      • Dominik
        Dominik sagte:

        An dieser Stelle habe ich keine passenden Informationen als Antwort erhalten..

        dpkg-architecture | grep DEB_BUILD_ARCH=

        Dementsprechend hab ich meinen Versuch dort abgebrochen.
        Man kann ja von rhasspy zu iobroker per mqtt-Server recht problemlos json-Strings übertragen. Vorteil von nodered ist in meinen Augen aber die einfache Rückmeldung per Sprachausgabe! Problematisch war für es dann nur für mich, einen Schaltbefehl von rhasspy über nodered an iobroker zurückzubringen. Hat dann aber letztlich geklappt.
        Vielleicht hast Du noch einen Tipp für mich… In Nodered kann ich bspw. problemlos eine Temperatur von einen Sensor in iobroker als payload value auslesen. Die Sprachausgabe gibt mir dann z.B. “10 Punkt 56” aus. Wie muss denn ein Funktionnode in nodered aussehen, dass ich daraus “Es ist 10 (Komma?) 56 Grad warm” machen kann?
        Danke Dir! Viele Grüße

        Antworten
        • Simon
          Simon sagte:

          Hallo Dominik,

          bitte entschuldige die sehr sehr späte Antwort.

          Was für eine Antwort hast du denn erhalten? Was für Hardware nutzt du denn?

          Das kommt denke ich immer ein wenig darauf an was du erreichen willst, wenn du zum Beispiel eine Phillips Hue Lampe schalten willst, kannst du dir auch einfach das entsprechend Package in Node-Red herunterladen und es direkt darüber laufen lassen. (So mache ich das und ja die Anleitung fehlt immer noch :D). An IoBroker selbst habe ich bisher tatsächlich noch keine Informationen zurückgegeben, nur geholt. Spätestens aber über die Script Module bzw. die HTTP oder MQTT-Ausgaben im Node-Red sollte “alles” möglich sein.

          Verstehe ich das richtig? Du hast aktuell die Ausgabe: 10 PUNKT 56 und willst den Punkt durch ein Komma ersetzen?
          Also erstmal würde ich versuchen an dem Datensatz zu drehen und ein Komma anstelle eines Punktes einzusetzen.. (wenn möglich)
          Sonst wäre es vielleicht eine Option den Payload in ein vor dem Punkt und ein nach dem Punkt zu zerlegen und dann den Payload so weiterzugeben:
          payload= vordempunkt + “,” + nachdempunkt

          Gruß,
          Simon

          Antworten
  3. Dominik
    Dominik sagte:

    Hi Simon, danke für Deine Anleitung! Wird es auch noch nachträglich mit der rhasspy Installation klappen, oder zerschieß ich mir damit den iobroker? Wie kann ich die Kommunikation zwischen den beiden hinbekommen? Vielen Dank für Deine Anwort! Gruß, Dominik

    Antworten
    • Simon
      Simon sagte:

      Hallo Dominik,

      also ich habe bisher beide Reihenfolgen versucht und kein Problem damit gehabt. Ich würde mir aber vorher lieber mal die SD-Karte vom Raspberry auf den PC sichern …
      Zur Kommunikation zwischen dem Rhasspy und IoBroker (bzw. all der IOT-Geräte im Haus) nutze ich aktuell Node-Red, damit habe ich bisher auch ganz gute Erfahrungen gemacht.

      Ich arbeite im Moment an der weiterführenden Anleitung zur Verbindung von Rhasspy mit IoBroker via Node-Red. Die Anleitung incl. Test ob die denn so auch klappt, dürfte allerdings noch 1-2 Tage in Anspruch nehmen.

      Ich kommentiere Dir dann hier nochmal, sobald die Anleitung fertig ist.

      Gruß,
      Simon

      Antworten
      • Dominik
        Dominik sagte:

        Das wäre wirklich super. Würde mich sehr freuen, wenn du den Artikel hier noch weiter ergänzt! Danke schon Mal. VG

        Antworten
          • Dominik
            Dominik sagte:

            Wow, das ging schnell, danke! Mein Mikro ist noch nicht da und ich bin aktuell auch ein wenig eingespannt, aber ich geb auf jeden Fall Rückmeldung! Danke!

          • Simon
            Simon sagte:

            Super, Dank!

            Welches Mikro hast du dir bestellt?

            Ich habe es jetzt auch schon geschafft meine Hue-Lichter mit Rhasspy anzusteuern.
            Damit hat der Echo endlich seinen Weg in die Kiste deaktivierter Geräte gefunden 🙂

            Wenn ich jetzt noch einen vernünftige Timer/Wecker hinbekomme, die LEDs am Respeaker nutzen kann und/oder einen vernünftigen Mini-Lautsprecher finde .. dann ist das Geräte glaube ich ein echt guter Ersatz für namenhafte Sprachassistenten.

            Gruß,
            Simon

          • Dominik
            Dominik sagte:

            Das wäre auch mein Ziel… Hab das von dir empfohlene mic über Ali bestellt (weil ich auch keine Erfahrung auf dem Gebiet hab). Dauert also noch länger 😉 viele Grüße

  4. Sven
    Sven sagte:

    Hi. Danke für die Anleitung!

    Hast du für deinen ReSpeaker irgendwo ein gescheites Gehäuse gefunden? Ich kann mir das ja nicht so, wie es ist, in die Bude stellen.

    Antworten
    • Simon
      Simon sagte:

      Hallo Sven,

      leider nein. Aktuell habe ich den Raspberry auch noch ohne Gehäuse auf einem Lautsprecher liegen.

      Vielleicht versuche ich mal selbst eines zu basteln, allerdings habe ich für mich auch noch nicht den finalen Ort für das Gerät gefunden. Da muss ich erst noch ein bisschen mit der Qualität des Mikrofons experimentieren.

      Ach und den Empfang des Mikrofons sollte man sich vielleicht auch nicht verbauen.

      Gruß,
      Simon

      Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar zu Simon Antworten abbrechen

Die E-Mail-Adresse muss nur angegeben werden, wenn Du über eine Antwort informiert werden willst.
Deine E-Mail-Adresse wird nicht veröffentlicht.