Hiermit möchte ich ein Tutorial zu diesem Forum beitragen und einigen die nicht ganz so einfache Installation bzw. Einrichtung von VoiceCommand (von Steven Hickson), einer Sprachsteuerung etwas erläutern und auf Besonderheiten hinweisen. 
Zu erst für alle, die es noch nicht kennen: Voicecommand (von Steven Hickson) erlaubt es (Bash-)Befehle abhängig von der gesprochen Textphrase auszuführen. Dabei wird die Google Voice API verwendet. Voicecommand findet man im Internet per Suche nach "PiAUISuite", das ein Paket von mehreren Paketen, darunter eben auch VoiceCommand darstellt.
Vorerst sollte man sich natürlich ein USB-Mikrofon oder eine USB-Soundkarte mit Mikrofon besorgen. Es geht beides, wichtig ist, dass es kompatibel ist. Ich habe von Amazon eine Soundkarte mit dem Namen "USB Audio Adapter" von "plugable". Sie tut einwandfrei ihren Dienst.
Zuerst muss das PiAUISuite-Paket aus dem Internet geladen werden.
Dies geschieht wie folgt:
sudo apt-get install git-core
git clone git://github.com/StevenHickson/PiAUISuite.git
->wobei git-core schon vorinstalliert sein sollte
Dann folgt die Installation:
cd PiAUISuite/Install/
./InstallAUISuite.sh
Das Script bietet allerlei Programme zur Installation an, wobei nur "Install dependencies?" und später dann "VoiceCommand" mit [y] bestätigt werden sollte.
Bei der Frage nach dem Selbst-Aufsetzen kann man nun [y] oder [n] eingeben, je nachdem wann man die Einrichtung vornehmen möchte.
Wenn später gewählt wir kann und MUSS die Einrichtung über "voicecomand -s" ablaufen, vorher funktioniert das Programm noch nicht.
In diesem Einrichtungsassistent werden einige Fragen zur Einrichtung gestellt, je nachdem wie es gewollt ist beantwortet man mit [y] oder [n].
Nach den Fragen ist die Einrichtung abgeschlossen.
Das Programm kann nun über den Befehl "voicecommand" oder "voicecommand -c" (für kontinuierlichen Modus) in der Bash aufgerufen werden (siehe unten->Benutzung).
ACHTUNG! : Eventuell kann bei der Einrichtung (am Ende beim Test) oder beim Starten des Programms über den oberen Befehl folgende Fehlermeldung kommen:
voicecommand: error while loading shared libraries: libboost_regex.so.1.49.0: cannot open shared object file: No such file or directory
Lösung: Ausführen des Befehls
ln -s /usr/lib/arm-linux-gnueabihf/libboost_regex.so.1.55.0 /usr/lib/arm-linux-gnueabihf/libboost_regex.so.1.49.0
Kommen wir nun zum nächsten Problem:
Google hat die Script-automatisierte Sprachausgabe blockiert und so muss ein anderer Dienst namens "Pico2Wave" verwendet werden.
Auf Github haben ein paar kluge Köpfe eine Art Wrapper geschrieben und Google mit "Pico2Wave" ersetzt.
Dazu öffnet man mit
das Text-to-Speech-File (im heruntergeladenen PiAuiSuite-Ordner unter "Voicecommand") und ersetzt den Inhalt durch folgenden:
#!/bin/bash
#since google ended TTS, this script replaces tts with pico2wave.
if [ $# -lt 1 ]
then #an argument was not entered - pico2wave needs something to say
/usr/bin/pico2wave -w /tmp/tempsound.wav "I have nothing to say."
/usr/bin/aplay -q /tmp/tempsound.wav
rm /tmp/tempsound.wav
exit 0
fi
speech=$@
/usr/bin/pico2wave -w /tmp/tempsound.wav "$speech"
/usr/bin/aplay -q /tmp/tempsound.wav
rm /tmp/tempsound.wav
Display More
Natürlich sollte "Pico2Wave" installiert werden, das kann man über den Befehl
sudo apt-get install libttspico-utils
tun.
Nun sollte erneut "./InstallAuiSuite.sh" (im Install-Ordner des PiAUiSuite-Ordners) ausgeführt werden, damit die Änderungen übertragen werden.
Es sollte nun mit dem Befehl
über die Lautsprecher (oder HDMI, je nachdem welche Audio-Quelle gewählt ist) "This is a test" zu hören sein. (Die Sprache kann auch noch umgestellt werden, ich habe es jedoch auf Englisch gelassen, da es auch besser klingt)
Falls nicht sollte man nochmal den Audioausgang testen und z.B. eine Audio-Datei mal wiedergeben.
Das nächste Problem:
Google lässt keine mehreren Kanäle (geliefert von den meisten Mikrofonen) durchgehen. Das wird nicht in Text umgewandelt, was benötigt wird um spezifische Befehle auszuführen.
Dank ein paar Leuten auf Github (hier) gibt es auch da Abhilfe:
- Einmal muss in der Datei speech-recog.sh (auch im PiAuiSuite-Ordner unter Voicecommand) folgende Änderung vorgenommen werden:
- Folgende Zeile einfach durch die letzte unauskommentierte Zeile mit arecord ersetzen bzw. die alte auskommentieren und diese neue einfügen:
-
arecord -D $hardware -f S16_LE -d $duration -r 16000 | flac - -f --best --sample-rate 16000 -o /dev/shm/out.flac 1>/dev/shm/voice.log 2>/dev/shm/voice.log; curl -X POST --data-binary @/dev/shm/out.flac --user-agent 'Mozilla/5.0' --header 'Content-Type: audio/x-flac; rate=16000;' "https://www.google.com/speech-api/v2/recognize?output=json&lang=$lang&key=AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw&client=Mozilla/5.0" | sed -e 's/[{}]/''/g' | awk -F":" '{print $4}' | awk -F"," '{print $1}' | tr -d '\n'
Zum Test und zur Benutzung:
Quellen:[https://www.raspberrypi.org/forums/viewtopic.php?t=72570&p=522791 https://github.com/StevenHickson/PiAUISuite/issues/56]