Raspberry Pi Sprachsteuerung

Update 13.06.2015: Hier wurde das Thema Sprachsteuerung neu in Angriff genommen!


Hey,

als ich meinen ersten Raspberry Pi bekommen habe fragte ich mich: "was machst du jetzt damit?". Und ich muss gestehen, dass das Pi Tage-, wenn nicht sogar Wochenlang ohne Funktion bei mir rumlag.
Ich wollte natürlich klein mit der Pi Programmierung anfangen, es sollte aber trotzdem seinen Nutzen haben.
Dann bin ich auf diesen Artikel gestoßen LINK.
Und ich dachte mir "Das wäre doch super. Den Pi per Sprache Steuern!"
Nun muss ich nur sagen "Mach das Licht an" und die Kaltlichtkathode, die ich vor einigen Jahren mal in meinen Gitarrenverstärker eingebaut habe, leuchtet.


Das Prinzip ist eigentlich ziemlich einfach.

Sobald am Mikrofon ein bestimmter Schwellwert überschritten wird, also wenn ich dort rein spreche, wird eine Audio Aufnahme gestartet. Diese ist bei mir 2 Sekunden lang. Länger sind meine Sprachbefehle auch nicht. Gespeichert wird die Aufnahme als .flac Datei. Diese Datei wird zur Google Speech-to-Text API gesendet. Die Google Speech-to-Text API sendet mir kurz darauf eine Text Datei zurück in der mein gesprochener Befehl steht.
In dieser Datei lasse ich nun die Worte "Licht" und "ein" suchen. Wenn beide Wörter gefunden werden, wird ein GPIO Pin auf 1 gesetzt, welches ein Relais einschaltet, an dem die Kaltlichtkathode angeschlossen ist.


Andere Einsatzmöglichkeiten

Ich habe, neben dem einschalten meiner Kaltlichtkathode noch eingebaut, dass die Kaltlichtkathode ausgeschaltet wird, dass eine VNC Session gestartet oder beendet wird und dass mir die Dateien des jeweiligen Ordners angezeigt wird.


Benötigte Hardware
  • 4er Relais (gibt es auch in einer 2er Version)
  • Jumperkabel (es reichen 3, aber wer weiß was man noch so bauen will?)
  • Ein USB Mikrofon (ich habe das eingebaute Mikrofon einer Webcam verwendet)

Wie ihr seht, kostet die Hardware nicht viel. Und mit dem Relais könnte man auch sein Licht im Wohnzimmer steuern.


Die Verkabelung

Rechts sehr ihr eine Abbildung der GPIO Pins vom Pi (Modell B, Quelle).
Die Zählweise ist oben links Pin 1, oben rechts Pin 2, unten links Pin 25 und unten rechts Pin 26.
Es werden 3 der Jumperkabel benötigt.
Das erste Kabel steckt ihr am Pi auf Pin 2 (5V Power) und am Relais auf VCC (ganz rechts).
Das zweite Kabel kommt auf Pin 6 (Ground) und am Relais auf GND (ganz links).
Somit hat das Relais jetzt eine Betriebsspannung von 5V. Nun zum eigentlichen Schalten des Relais.
Das dritte Kabel kommt auf Pin 8 (GPIO 14 TXD) und am Relais auf IN4.
Das dritte Kabel kann man am Pi auch woanders platzieren, aber so ist es in meinen Scripten eingerichtet. Am Relais kann man sich den Eingang aussuchen, den man möchte.

Als letztes verkabelt ihr euer zu steuerndes Gerät am Relais und schraubt es fest. Hier muss eine Ader in der mittleren der 3 Klemmen sein und die andere Ader links oder rechts daneben. Bei dem einen wäre euer zu steuerndes Gerät an, wenn der GPIO Port auf 1 gesetzt wird, beim anderen wäre das Gerät aus und würde angehen, wenn der GPIO Port auf 0 ist. In meinem Fall möchte ich, dass das Licht aus ist, wenn der GPIO Port auf 0 ist.
Aus Sicherheitsgründen solltet ihr am Relais den Minuspol verschrauben.
Hier ein künstlerisches Meisterwerk wie die Verkabelung aussieht:



Benötigte Software

Ich stelle euch hier meine Scripts zur Verfügung. Vieles davon ist zusammenkopiert von anderen Webseiten und ich habe es nur auf meine Wünsche angepasst.
Dem stt.sh Script muss man noch ausführbare Rechte geben:

chmod +x stt.sh

Damit das Script im Hintergrund ununterbrochen durch läuft, muss der Befehl wie Folgt eingegeben werden:

nohup ./stt.sh &

Hier die Scripte: LINK
(edit: der Link hat nicht funktioniert. Sollte jetzt aber gehen)


Mögliche Probleme

Manchmal reagiert das Pi nicht schnell genug und startet die Aufnahme mitten im Satz. Ich habe mir also angewöhnt zu sagen "ok... mach das licht an"

Und hier mal ein paar Foto wie es bei mir aussieht:

Terminal:



Gitarrenverstärker:






Kommentare

  1. Hi kann es sein das die Verarbeitung mit der URL in dem stt.sh Script nicht mehr funktioniert? wenn ich die URL direkt in Google eingebe dann bekomm ich ein 404 Error das diese Resource nicht mehr verfügbar ist.
    Funktioniert es bei dir noch oder hattest du es mal gefixed.

    AntwortenLöschen
    Antworten
    1. Hi. ja das kann gut sein. Google hat die Speech-to-Text API auf Version 2 geändert.
      Dafür muss man sich jetzt einen API Key generieren.
      Hier wird das Thema mit der neuen Version aufgegriffen. http://www.spech.de/blog/article/spracherkennung-mit-google-speech-api

      Ich hoffe du kommst damit weiter.

      Gruß,
      Christopher

      Löschen

Kommentar veröffentlichen