Projekte

Amazon Alexa (Deutsch) auf dem Raspberry Pi installieren

Nachdem Amazon Alexa nun auch auf Deutsch verfügbar ist, können wir es endlich in vollem Umfang auf dem Raspberry Pi nutzen. Im Vergleich zu den Amazon Echo bzw. Amazon Echo Dot Geräten bietet die Installation auf einem Raspberry Pi nicht nur preislich große Vorteile, sondern kann auch noch weiter angepasst und individualisiert werden. Außerdem gestattet Amazon es eigene Programme / Apps für die Platform zu schreiben, womit man eigene Projekte, die eine Sprachsteuerung bekommen sollen, voranbringen kann.

In diesem Tutorial gibt es eine vollständige Anleitung zur Installation und Einrichtung von Amazons Sprachassistentin „Alexa“. Da die Einrichtung etwas umfangreicher ist, gehen wir detailiert durch alle Schritte.

Wer bereits einen Vorgeschmack auf den Alexa Voice Service haben möchte, kann sich bereits dieses Demovideo einer Präsentation ansehen.

 

Amazon Alexa Zubehör für den Raspberry Pi

Die vollvertige Amazon Echo Variante ist zwar um einiges schicker als ein einfacher Raspberry Pi, aber kostet eben auch dementsprechend. Selbst das kleinere Echo Dot kostet fast so viel wie zwei Raspberry Pi’s. Und ehrlich gesagt macht es doch auch mehr Spaß selber etwas zu schaffen, als nur zu konsumieren 🙂 Und selbst wenn man die Kosten des Zubehörs und sogar eine Raspberry Pi’s zusammenrechnet ist man in der selben Preisregion – nur eben, dass der Pi noch viel mehr kann.

Eine zwingende Vorraussetzung ist eine bestehende Internetverbindung. Außerdem muss mindestens ein Raspberry Pi 2 Model B verwendet werden. Der Vorteil eines Raspberry Pi 3 ist, dass bereits ein Wlan und Bluetooth Adapter eingebaut ist, wodurch man keinen externen kaufen muss.

Das folgende Zubehör wird jedoch in jedem Fall dem dem Raspberry Pi benötigt:

Optimal sind dazu außerdem:

Bis auf die Micro SD Karte kann bereits alles angeschlossen werden. Warte jedoch noch, bis du den Strom verbindest, denn vorher müssen wir das Betriebssystem aufspielen.

Zusätzlich gibt es schon einige mit Alexa kompatible Smart Home Geräte, welche sich steuern lassen. Diese reichen von Funksteckdosen über Philips Hue Light bis hin zu Thermostaten. In Zukunft werden sich hier sicherlich noch viele weitere Geräte mit einreihen.

 

Vorbereitung – Raspbian übertragen

Bevor wir mit dem eigentlichen Download von Amazon Alexa starten können, müssen wir unsere SD Karte mit einem entsprechenden Betriebssystem ausstatten. Hierzu bietet es sich an, die neuste Version des Raspbian OS (Jessie) zu laden. Diese bekommst du hier. Die enthaltene Datei ist im „.img“ Format und muss mit einem Programm wie WinRar, 7Zip o.ä. entpackt werden. Anschließend können wir das Abbild auf die MicroSD Karte übertragen. Ein Tutorial, wie dies am einfachsten über Windows geht, findest du hier:

Raspberry Pi Raspbian OS auf eine SD-Karte übertragen (Windows)

Bevor du die SD Karte in den Raspberry Pi steckst, empfehle ich noch SSH zu aktivieren, da dies inzwischen standardmäßig deaktiviert ist. Dazu erstellst du im Hauptverzeichnis der SD Karte (nachdem das Betriebssystem installiert wurde) eine Datei mit dem Namen ssh bzw. ssh.txt, wodurch du direkt per SSH auf den Pi zugreifen kannst, sofern er mit dem Netzwerk verbunden ist.

Im weiteren Verlauf wird es nötig, auf den Raspberry Pi Desktop zuzugreifen. Du kannst dies entweder, indem du Bildschirm, Tastatur und Maus direkt anschließt (in diesem Fall brauchst du SSH nicht zu aktivieren) oder aber z.B. per Remotedesktop arbeiten. Dies hat den Vorteil, dass du auf die graphische Oberfläche des Pi’s von deinem eigentlichen PC zugreifen kannst. Eine einfache Anleitung dazu findest du hier:

Raspberry Pi Remotedesktop Verbindung einrichten

In der Regel schließe ich zunächst ein LAN Kabel an und richte dann das Wlan entweder per Konsole oder per Desktopoberfläche ein.

 

Vorbereitung – Entwickleraccount

Legen wir nun den benötigten Amazon Developer Account an. Dazu rufen wir developer.amazon.com auf und erstellen einen neuen Account, sofern nicht bereits ein bestehender Account auf amazon.com besteht. Die AGBs müssen aktiviert werden.

Um gleich alles auf dem Raspberry Pi einrichten zu können, müssen wir ein sog. Security Profile erstellen. Dazu klicken wir nach dem Login in der oberen Menüleiste auf „Alexa“ und anschließend auf Alexa Voice Service auf „Get Started“.

Anschließend drücken wir auf den Button „Register a Product Type“ und darunter „Device„.

Nun werden einige Fragen zum Typ des Geräts (Device Type Info) gemacht. Ich habe hierbei folgendes gewählt:

  • Device Type ID: RaspberryPiAlexa
  • Display Name: Raspberry Pi Alexa

Solltest du auf mehreren Raspberry Pi’s Amazon Alexa installieren, so müssen die ID’s natürlich unterschiedlich sein.

Weiter geht es mit dem nächsten Menüpunkt auf der linken Seite (Security Profile). Auf der Seite wählst du unter „Security Profile“ -> „Create a new Profile“ und füllst die folgenden beiden Eingabefelder darunter z.B. folgend aus:

  • Security Profile Name: Alexa Voice Service Sample App Security Profile
  • Security Profile Description: Alexa Voice Service Sample App Security Profile Description

Drücke folgend auf Next.

 

Anschließend werden dir Client ID und Client Secret angezeigt. Notiere diese, da wir sie gleich brauchen werden.

Klicke nun oben auf Edit und anschließend auf Web Settings. Durch das Klicken von Add Another erscheinen Textfelder, in welche zusätzliche Daten kommen:

  • Allowed Origin: https://localhost:3000
  • Allowed Return URLs: https://localhost:3000/authresponse

Drücke anschließend wieder auf Next, womit die Daten gespeichert werden.

Nun werden einige Details zur Nutzung gefragt. Diese habe ich folgend ausgefüllt:

  1. Image: leer (optional kannst du hier ein Icon der Größe 142×130 px hochladen. Muss aber nicht.)
  2. Category: other
  3. Description: Mein Raspberry Pi Alexa
  4. Do you have plans to make your product available to the general public? No
  5. Is your device a children’s product or is it otherwise directed to children under the age of 13? No

Anschließend auf Next.

Nun wirst du noch gefragt, ob du Amazon Music aktivieren willst. Falls du ein Abonnement hast kannst du Yes wählen und die weiteren Angaben eintragen. Allerdings ist es nicht zwingend erforderlich und kann daher auch mit No übersprungen werden.

Als letztes drückst du nun Submit und die Einrichtung ist vollendet. Du wirst zur ursprünglichen Übersichtsseite zurückgeleitet, wo das angelegte Gerät nun aufgelistet ist.

 

Installation der Beispiel Amazon Alexa App

Zunächst laden wir das Projekt von Github in unser Homeverzeichnis. Dazu starten wir den Pi, öffnen ein Terminal-Fenster und geben folgendes ein:

git clone https://github.com/alexa/alexa-avs-sample-app.git

Anschließend müssen wir die vorher aufgeschrieben Daten (Product ID, Client ID und Client Secret) im automated_install.sh Skript innerhalb des Verzeichnisses angeben. Die Bearbeitung kann entweder über einen Editor mit GUI oder dem Editor auf der Kommandozeile stattfinden. Wir wechseln also in den Ordner und bearbeiten die Datei:

cd ~/alexa-avs-sample-app
sudo nano automated_install.sh

Hierin befinden sich 3 Zeilen, in welche wir die notierten Werte ersetzen. Achte darauf, dass nach dem Gleichheitszeichen sowie am Ende der Zeile sich kein Leerzeichen eingeschlichen hat.

 

Drücke STRG+O, um die Datei zu speichern und anschließend STRG+X um den Terminal-Editor zu beenden.

 

Nun können wir das Skript starten. Sofern du noch in dem Ordner bist, kannst du es direkt ausführen, ansonsten wechseln wir vorher wieder in diesen Ordner:

cd ~/alexa-avs-sample-app
. automated_install.sh

Es werden nun einige Fragen gestellt. Überprüfe die Antworten und bestätige entsprechend mit y.

  • Als viertes wird nach der Spracheinstellung gefragt. Wähle (3) de-DE, um Alexa auf Deutsch nutzen zu können!
  • Wähle 3.5mm Audio Jack als Audioausgabe
  • Wähle, ob das „Wake Word“ aktiviert werden soll (ich kann verstehen, wenn man nicht möchte, dass dauerhaft zugehört wird, allerdings habe ich es testweise aktiviert)

Danach läuft die Installation durch und dauert ca. eine halbe Stunde. Zwischendrin kommt eine Infomeldung, welche man lesen muss und mit q bestätigen (Achte also hin und wieder darauf).

 

Starten von Amazon Alexa auf dem Raspberry Pi

Um die Beispielanwendung zu starten, werden mehrere Terminal Fenster benötigt:

  1. Zum Starten des Authentifikation Webservices.
  2. Zur Kommunikation der Anwendung mit AVS.
  3. Damit das Wort „Alexa“ automatisch erkannt wird und die Spracheingabe beginnt.

Starten wir also mit Terminal 1. Öffne eine neue Instanz und gib folgende Kommandos ein:

cd ~/alexa-avs-sample-app/samples/companionService && npm start

 

Wir öffnen nun eine weitere Instanz und führen folgendes in Terminal 2 aus:

cd ~/alexa-avs-sample-app/samples/javaclient && mvn exec:exec

Folgende Fenster erscheinen:

Drücke im unteren Popup Yes und warte einen Augenblick. Der Browser sollte sich öffnen (falls nach 30 Sekunden sich nichts geöffnet hat, starte einen Browser manuell und kopiere die bei dir angezeigte URL). Der Browser wird eine Warnung anzeigen („Your connection is not private“).

Drücke unten auf Advanced und anschließend auf Proceed to localhost (unsafe). Du wirst nun zur amazon.com Seite weitergeleitet, unter der du dich mit deinen Amazon.com Developer Account Daten anmeldest. Es folgt eine Abfrage, ob du dieser App auch wirklich Zugriff gewähren willst. Drücke Okay.Du wirst anschließend zurückgeleitet und die Nachricht „device tokens ready“ wird angezeigt. Minimiere den Browser und kehre zurück in das Popup, welches sich vorhin geöffnet hat. Drücke OK, wodurch der Authentifizierungtoken kopiert wird. Ist im anderen Fenster nun der „Bearer Token“ vorhanden, kannst du den Browser wieder schließen.

Soweit so gut: Im Grunde genommen können wir Alexa nun bereits testen, indem wir den Listen Button drücken und nach dem Gong etwas sagen, wie z.B.

  • „Wie wird das Wetter morgen in Berlin?“
  • „Wie viel ist eine Meile in Kilometern?“
  • „Was ist die Wurzel aus 16?“
  • „Wie weit ist es von Hamburg nach Frankfurt?“
  • usw.

Dabei kann die Aufnahme durch erneutes Drücken des Buttons gestoppt werden bzw. nach kurzer Zeit ohne Stimmenklang wird automatisch gestoppt und eine Antwort gesucht. Übrigens: Die Play/Pause und Vor/Zurück Buttons sind für Musik (falls welche abgespielt wird), damit man die Wiedergabe auch manuell verändern kann.

 

Der letzte Schritt ist nur für jene, die eine automatische Befehlserkennung möchten, indem man „Alexa“, gefolgt von der Frage/Befehl, aufsagt. Möchtest du dies nicht, kannst du es überspringen.

Wir öffnen also ein weiteres Terminal 3 Fenster. Für die Erkennung gibt es zwei Möglichkeiten: Zum einen Sensory sowie KITT.AI. Beides sind Sprachengines und können sog. Wake Words erkennen. Führe dazu folgenden Befehl aus (für Sensory ersetze -e kitt_ai mit -e sensory):

cd ~/alexa-avs-sample-app/samples/wakeWordAgent/src && ./wakeWordAgent -e kitt_ai

Nun wird die Spracheingabe automatisch nach dem Wort „Alexa“ aktiviert (nach dem Beep sprechen).

 

Man muss allerdings erwähnen, dass (noch) nicht alle Aktionen, die auf dem normalen Amazon Echo (Dot) verfügbar sind, auch auf der Raspberry Pi Variante aufrufbar sind. Um künftige News nicht zu verpassen, lohnt ein Blick in den Developer Blog von Amazon. Wer außerdem darüber nachdenkt eigene Anwendungen zu schreiben, sollte einen Blick in die API Dokumentation werfen. Für weitere Fragen (zu Features und/oder dem Projekt) ist das Support-Forum der Anwendung der richtige Ort zum nachsehen.

, , , , , , , ,


21 Kommentare

  1. Michael sagt:

    Hallo, mit einem Raspberry PI 1 Model B geht es nicht? Von der Leistung?

  2. Daniel F. sagt:

    Servus,

    Was mich interessieren würde. Beim Original Echo hört das Teil ja nur im 3 Sekunden Rhythmus zu ob das Signal Wort kommt. Erst beim Signal Wort wird ins Internet übertragen.

    Wie ist das mit der Software? Überträgt die ständig?

    Grüße

    • Felix sagt:

      Der Teil, bei dem auf das Wake Word gehört wird, ist ja optimal: Du kannst also auch darauf verzichten.
      Meines Wissens wird bei aktiviertem WakeWord erst nachdem du „Alexa“ gesagt hast, übertragen (müsste man allerdings mal mit Wireshark o.ä. überprüfen).

  3. Mike sagt:

    Zusammen mit der Einrichtung des RPi als Internetradio mit Webinterface wäre Alexa die coole Variante für die Steuerung vor Ort…also quasi Fernsteuerung via Webinterface und vor Ort mit Alexa…die Frage, die sich mir stellt: Ist der RPi3 von der Performance in der Lage diese Menge an Prozessen zu verarbeiten..

    Vielen Dank für die Hilfe!!

  4. Clemenz sagt:

    Hey,

    ich bekomme jedesmal bei der Ausführung des installationskripts einige Fehlermeldungen. Zudem muss ich nie, wie von dir beschrieben mit q eine info bestätigen. Fehlermeldungen sind unten angefügt. Weisst du vielleicht weiter?
    http://pastebin.com/ZMrPr7xF

  5. hamic sagt:

    Kann man auch eine USB-Soundkarte mit Mikrofon-Eingang verwenden und ein Mikrofon anschließen?

  6. Flügel sagt:

    Hallo,

    Danke für das Tutorial. Mit einem Zweiten Account beim großen Fluss (bgF), der leidlichen Schreibfehlerbeseitigung und üblichen fummelei, funktioniert das alles recht lustig. Da ich laut Alexa in den USA wohne (wird wohl mit der Anmelderei bei bgF zu tun haben) und so das wecken mit einigen Umrechnungen zu bewerkstelligen ist, frage ich mal in die Runde ob man das irgendwie berichtigen könnte oder ob das bgF erledigen muss, soll, darf… Hat sich schon jemand an die Einstellungen für Amazon Musik gewagt? Toll wär noch gewesen mein Music Man per BT zu verwenden. Prinzipiell funktioniert es aber bei den Einstellungen wird ja auch nur Klinke oder HDMI angezeigt. Man darf weiter gespannt sein…

    Meine HW:
    renkforce UM-80
    Bluetooth® Lautsprecher Technaxx MusicMan Nano BT-X7 (aber mit Klinke)
    Raspi 3
    16 GB Sandisk

  7. Daniel Rodriguez Lafuente sagt:

    Tolle Anleitung, nach kleineren Fehlern habe ich auch alles zum Laufen gebracht.

    Ich frage mich nur gerade, wie ich die Einheiten auf Celsius und Meter umstellen kann?

  8. hamic sagt:

    Habe ich überhaupt die Möglichkeit Musik zu hören mit der Kombination Raspberry und Echo?

  9. Waldi sagt:

    Danke für die Super-Anleitung.
    Alles hat auf Anhieb funktioniert.
    Hat schon jemand die 3 Terminals in ein Script zusammengefasst
    und mit einem Aufruf in Crontab gestartet ?

    Übrigens
    „./wakeWordAgent -e kitt_ai“ hängt sich bei mit auf
    „./wakeWordAgent -e sensory“ funktioniert einwandfrei.

    Nochmal danke für die Anleitung

  10. Udo sagt:

    Hallo die Runde,

    habe das ganze gerade Installiert ,die Anleitung ist super ,habe einen Raspberry 3 mit raspian
    drauf ,die amazon Alexa wartet schon drauf. Die Installation sieht auf jedenfall gut
    Bin mal gespannt wie das ganze funzt.

    Udo

Schreibe einen Kommentar

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

Blog abonnieren

Abonniere Tutorials-RaspberryPi, um kein Tutorial mehr zu verpassen!