Spracherkennung mit Google Speech API

Erstellt von Sebastian am Fr, 25.07.2014 - 20:00
Text2Speech

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.

ALSA und co

Die Einrichtung der Soundkarte funktioniert wie im anderen Artikel 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

 

Einige Produktlinks sind Amazon Affiliate Links und unterstützen den Ausbau der Webseite. Vielen Dank für deinen Einkauf über einen der Links! Ich freue mich auch über eine kleine Spende mittels PayPal.Me/SPech.