Spracherkennung mit Google Speech API
25.07.2014, 02.01.2020 - Sebastian Pech - ~2 Minuten
Mit dem Raspberry Pi sprechen ist eine spannende Sache. Die Google Speech API v2 ist eine einfache Möglichkeit dafür.
In einem älteren Artikel hatte ich bereits die API erwähnt. Dort hatte ich die Nutzung aber aufgrund der Situation, Daten an Google zu schicken, ausgeschlossen. Mittlerweile kamen jedoch ein paar Anfragen zu dem Thema, so dass ich dies hier noch einmal aufgreifen möchte. Viele Artikel im Internet sind leider veraltet und greifen auf Version 1 zurück. Daher gibt es hier eine vollständige Beschreibung für V2 inklusive Key Generierung.
UPDATE Juni 2018: Leider ist auch die v2 API mittlerweile veraltet. Grundsätzlich funktioniert der Ansatz hier noch. Lediglich das Ziel ist etwas anders. Siehe die Kommentare unten oder die Beispiele auf der Google Speech API Webseite .
ALSA und co
Die Einrichtung der Soundkarte funktioniert wie im anderen [Artikel][1] beschrieben.
Zusätzliche Module
$ sudo apt-get install flac
$ sudo apt-get install python-pycurl
API Key generieren
Zuerst muss die chromium-dev@chromium.org subscribed werden. Dies ist nötig, damit in der Google Clound Console die Option für die Speech API erscheint. Bei dem subscriben ist es aber möglich das Benachrichtigen per E-Mail zu deaktivieren! Anschließend auf der Developer Console ein Projekt erstellen und unter API die „Speech API“ aktivieren. Danach im Bereich „public key access“ den „Key for browser applications“ erstellen.
Das Skript
Den folgenden Inhalt in eine Datei „text2speech.sh“ kopieren und mittels „$ chmod +x text2speech.sh“ ausführbar machen.
#!/bin/bash
KEY="DEN_KEY_HIER_EINTRAGEN"
URL="https://www.google.com/speech-api/v2/recognize?output=json&lang=en-us&key=$KEY"
echo "Recording... Press Ctrl+C once to Stop and WAIT."
arecord -D plughw:0,0 -f cd -t wav -d 0 -q -r 16000 | flac - -s -f --best --sample-rate 16000 -o file.flac;
echo "Processing..."
wget -q -U "Mozilla/5.0" --post-file file.flac --header "Content-Type: audio/x-flac; rate=16000" -O - "$URL" >stt.txt
echo -n "Google reply: "
cat stt.txt
rm file.flac > /dev/null 2>&1
Output
Die Ausgabe erfolgt im JSON Format. Dieser kann weiter verarbeitet werden. Das Projekt Pi Translate bietet ein Python Skript mit Textoutput an. Hier muss aber in der Datei „text-to-translate.py“ die letzte Zeile auskommentiert werden, andernfalls werden noch Übersetzungsprogramme durchgeführt. Am Anfang der Datei ist ein Feld für den Key.
Update: Zum parsen der JSON Datei in dem Skripte die Zeile „cat stt.txt“ mit dem folgenden Aufruf ersetzen:
cat stt.txt | sed -e 's/[{}]/''/g' | awk -F":" '{print $4}' | awk -F"," '{print $1}' | tr -d 'n'
Referenzen: Raspberry Pi Voice Recognition Works Like Siri