Raspberry Pi 3 als Google Assistant

Vor einigen Wochen zeigte ich Euch, wie man einen Raspberry Pi als Amazon Alexa laufen lassen kann. Das brauchte 3 Terminal-Fenster und eine VNC Verbindung, war aber schon ziemlich cool. Die guten Leute bei Google haben sich nicht lumpen lassen und nun eine Raspberry Pi Version des eigenen Google Assistant herausgebracht. Natürlich musste ich das einfach für Euch testen. Das Ergebnis: Das Raspberry Pi Projekt von Google ist super cool :)

Alles, was Ihr braucht finet Ihr auch in der Developer Documentation bei Google, dennoch hier die kurzen Schritte, die bei mir gut und reibungslos funktioniert haben.

Hardware & Co

  1. Raspberry Pi 3 (ab €39,99)
  2. Ein USB-Mikrofon mit ordentlicher Qualität (unter €10)
  3. Lautspecher mit 3.5mm Klinkenstecker (oder zu mindestens Kopfhörer)

Voraussetzungen

Ich gehe davon aus, dass du den Raspberry Pi 3 vollständig installiert hast, dieser bereits mit deinem Heimnetzwerk verbunden ist und du weißt, wie man eine SSH Verbindung aufbaut. Für Google Assistant ist es weiterhin ganz wichtig, dass du das Datum und die Uhrzeit richtig eingestellt hast. Der Raspberry Pi 3 holt sich das normalerweise direkt von einem Time-Server. Dennoch überprüfe kurz mit  date , dass Datum und Uhrzeit stimmen.

Wenn du alle Voraussetzungen erfüllt hast, können wir loslegen!

Ein Entwickler-Projekt anlegen und Konfigurieren

  1. Gehe zur Google Developer Project Seite und lege ein neues Projekt an, indem du „Create Project“ auswählst und den Anweisungen auf dem Bildschirm folgst
  2. Aktiviere die Google Assistant API indem du diesen Link anklickst, die Terms of Service sollte man natürlich gelesen haben
  3. Richte einen OAuth Client ein, das ist nicht ganz so „logisch“, wenn du jedoch diesen Unterpunkten folgst, sollte es recht reibungslos klappen
    • Erstelle eine Client ID über diesen Link
    • In der Registerkarte OAuth Consent Screen gibst du dem Projekt bitte einen Namen (z.B. GA on RPi) und klickst auf Speichern
    • Klick auf Other und gibt der Client ID einen Namen
    • Klicke nun auf Create. Eine Dialogbox erscheint, die Daten hier musst du dir nicht merken und du kannst die Dialogbox einfach schließen
    • Ganz rechts finest du nun einen „Download-Pfeil ⬇„, diesen bitte anklicken, damit du eine JSON-Datei mit dem Client Secret herunterladen kannst. Die Datei hat einen schrecklich langen Namen, nach dem Muster client_secret_<client-id>.json
  4. Kopiere nun die JSON-Datei mit dem Client-Secret auf deinen Raspberry Pi 3. Am einfachsten gehst du in den Downloads-Ordner und nutzt ⌘+i, um dir den Namen aus dem Dialog zu kopieren und dann nutzt du folgenden Befehl, um die Datei zu kopieren. Natürlich musst du den Dateinamen noch ersetzen.
  5. Fast Fertig! Jetzt noch über die Activity Controls deinem Projekt eine ganze Menge an Rechten geben. Die folgenden werden auf jeden Fall benötigt und waren bei mir alle auf Englisch angezeigt und erst mal deaktiviert:
    • Web & App Activity
    • Location History
    • Device Information
    • Voice & Audio Activity

Ich selbst muss zugeben, dass die ganzen Rechte, die man hier freigibt schon ein wenig Unwohlsein hervorrufen könnte. Die Voice & Audio Activity speichert z.B. nicht nur, was du gesagt hast, sondern das von Google gehörte Voice Sample – du kannst dir also später selbst zuhören. Für Entwickler spannend, bei Amazon ist es nicht anders, aber unter Umständen willst du ein eigenes Google Konto für solche Projekte anlegen und pflegen, damit du nicht zu viel deiner Privatsphäre opfern musst

Aufnahme & Wiedergabe am Raspberry Pi 3 testen

Da wir ja nur mit SSH mit unserem Pi verbunden sind, müssen wir jetzt noch schauen, dass unser Mikrofon und die Lautsprecher funktionieren. Im besten Fall geht das ganz schnell in drei Schritten:

  1. Wiedergabe testen, mit:  speaker-test -t wav – du hörst eine Stimme, mit ctrl+c wirst du diese wieder los
  2. Aufnahme testen, mit:  arecord --format=S16_LE --duration=5 --rate=16k --file-type=raw out.raw  – du nimmst hier 5 Sekunden etwas auf, also sag auch was ;)
    1. Aufname mit  aplay --format=S16_LE --rate=16k out.raw abspielen
  3. Unter Umständen, die Lautstärke anpassen (das war bei mir nötig):  alsamixer

Wenn die Wiedergabe und/oder Aufnahme nicht funktioniert hat, dann hat Google hier eine sehr gute Anleitung, was zu tun ist!

Quelltext laden, installieren und endlich mit dem Google Assistant sprechen!

Das Google SDK läuft nur unter Python 3 und es wird eine virtuelle Umgebung genutzt, um das Google Assistant Projekt von der restlichen System-Umgebung zu isolieren. Mit folgenden Befehlen legst Du los. Was hier so kurz aussieht, dauert eine ganze Weile und führt zu vielen, langen Anzeigen im Terminal.

Jetzt solltest Du bereits in der virtuellen Python Umgebung sein. Das erkennst Du daran, dass (env) $ am Anfang der Zeile steht. Die Umgebung passt also, jetzt brauchen wir den Quelltext für das Projekt und diesen kannst du mit pip installieren

Das Projekt nutzt OAuth, um deine Zugangsberechtigung zu überprüfen, ein gutes OAuth Tool stellt Google natürlich zur Verfügung. Besonders wertvoll, es unterstützt einen „Headless Mode“, damit du nicht per VNC verbunden sein musst:

Mit folgendem Befehl, kannst du den OAuth Flow starten – natürlich den Namen deiner .json Datei einfügen:

In deinem Terminal erscheint jetzt eine URL. Die kopierst du aus dem Terminal und gehst zu Safari / Chrome / Firefox und schickst die URL dort ab. Du bekommst eine Antwot von Google, die du im Terminal eingibst, um den OAuth Flow abzuschliessen. Bei mir sah das so aus:

ENDLICH! Du kannst Das Projekt starten!

Alles was du jetzt tun musst, ist „Hey Google“ oder „OK Google“ zu sagen und dann deine Frage zu stellen. Der Terminal gibt dir ein wenig Feedback, was genau geschieht

Claus Wolf

Seit 1994 im Netz unterwegs und seit 2004 eingefleischter Mac-Nutzer. 21.5" iMac - 2.9GHz Intel Core i5, 16GB RAM, 1TB Fusion Drive HDD / 128GB iPhone 7 / 128GB iPad 9,7" (2017) / 15" MacBook Pro (Mitte 2014) in der Firma...

Das könnte Dich auch interessieren...

14 Antworten

  1. Orhan sagt:

    Hallo Claus ein wirklich guter Anleitung. Dennoch habe ich da ein paar Fragen. Aber bevor ich die eigentliche Frage stelle, läuft der Google Assistent auf Englisch?
    Wenn ja hat sich das schon für mich erledigt…

    Gruß

  2. Martin Fenk sagt:

    Ich hab deine Anleitung nicht ausprobiert werde ich aber bald mal machen dennoch stellt sich mir die frage wie ich einen eigenen befehl zu meinen Google home auf dem raspberry hinzufügen kann

  3. Katsche sagt:

    Hallo Claus,
    muss es zwindend ein RPi3 sein wegen der Google SDK oder kann man auch einen RPi zero W verwenden?

    Gruß Katsche

    • Claus Wolf sagt:

      Gute Frage. der Zero ist was schwach auf der Brust ;) muss5 du also mal ausprobieren…

      • Katsche sagt:

        Hi Claus,

        ich habe versucht deiner Anleitung zu folgen und habe noch zwei Fragen dazu:

        1. bei dem Befehl um den OAuth Flow zu starten steht am Ende der Zeile „–headless“…. bei mir wird dort ein Fehler in der Konsole angezeigt und wenn ich headless kurzerhand weglasse komme ich weiter. Ist vermutlich nicht richtig oder?

        2. wie genau kann ich das Projekt starten? Nach dem Reboot bin ich nicht mehr in der virtuellen Umgebung!

        PS! nach wie vor benutze ich den RPi zero w
        Gruß Katsche

    • Martin Fenk sagt:

      Ich habe einen raspberry b+ nicht übertaktet und es funktioniert

      • Katsche sagt:

        Hallo Martin,
        kannst Du mir bei meinen oberen Problem helfen?

        * wie genau startest Du das Skript?
        * wie komme ich in der virtuellen Umgebung?
        Gruß Katsche

        • Martin Fenk sagt:

          Ich starte das Script immer von Hand mit diesen befehl

          /home/pi/bin/voice-recognizer-shell.sh

          src/main.py

          Den unteren Befehl kannst du auch durch diesen eretzen

          python3 src/main.py -T clap

          Der bewirkt das du nicht auf den Knopf drücken musst sondern klatschen und dann reden

          Das ganze lässt sich auch über Autostart Scripte regeln ich hab es noch nicht ausprobiert da der Assistent auf englisch ist und ich ihn nicht auf deutsch kriege

          Mit virtueller Umgebung meist du sicherlich das (env) pi@raspberry kein plan wie dies jetzt heißt die startest du mit diesem befehl

          /home/pi/bin/voice-recognizer-shell.sh

          Ich hoffe das ich dir weiter helfen konnte

  4. soobi sagt:

    Hey super Anleitung.
    Funktioniert der Assistent auch offline? Bzw Reagiert er auf Ok Google ohne internet?

  5. Simon sagt:

    Hallo,bei mirgibt es einen Fehler beim Starten. es heißt:

    „google-assistant-demo
    usage: google-assistant-demo [-h] [–credentials OAUTH2_CREDENTIALS_FILE]
    –device_model_id DEVICE_MODEL_ID
    [–project_id PROJECT_ID] [-v]
    google-assistant-demo: error: the following arguments are required: –device_model_id“

    Hat jemand eine Lösung für mich?
    Schonmal im Vorraus danke

  1. 11. Februar 2018

    […] Leben fand. Danach bastelte ich mir aus einem Raspberry Pi einen Amazon Echo und später einen Google Assistant, aber auch diese Nachbauten konnten mich nicht ganz überzeugen. Nette Spielereien, aber leider […]

Schreibe einen Kommentar

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.