Dieser Artikel befasst sich mit dem Einsatz des Spracherkennungsmoduls Say-it von Parallax zur Sprachsteuerung eines Boe-Bot
s. Denn die Spracherkennung ist ein wichtiger Vorteil für einen
und steigert seine Fähigkeit, mit dem Menschen zu interagieren, und zwar auf die für den Menschen natürlichste Art und Weise.
Das Say-It Modul ist eine von der Firma Veear (http://www.veear.eu) speziell für Parallax entwickelte Steckkarte. |
In diesem Artikel wird gezeigt, wie das Spracherkennungsmodul Say-It für Parallax , Boe-Bot installiert wird, wie das Say-It Modul mithilfe der mitgelieferten grafischen Schnittstelle zu parametrieren ist, wie man diese Parametrierung testet und schließlich, wie die BS2-Codegenerierung erfolgt, um anhand der erkannten Wörter Aktionen auszulösen. Denn darin besteht schließlich das Ziel. Der Artikel ist also logisch aufgebaut. Doch bevor wir näher auf das Spracherkennungsmodul Say-it eingehen, wollen wir uns zunächst die Grundlagen der Spracherkennung in Erinnerung rufen..
Grundlagen der Spracherkennung
Einführung und Funktionsweise
Die Spracherkennung (engl. Automatic Speech Recognition) zählt zusammen mit der Sprachsynthese (engl. Speech Synthesis) zur so genannten Sprachverarbeitung.
Die Spracherkennung zielt darauf ab, ein Wort oder einen Satz über ein Mikrophon zu erfassen und zu analysieren und anschließend in seine Textversion auf Computer (oder gleichwertige Geräte) zu transkribieren, um eine Weiterverwendung zu ermöglichen. Die wichtigsten Anwendungsgebiete der Spracherkennung sind automatische Diktiersysteme sowie Voice-Applikationen für Telefonanlagen.
Die Funktionsweise erfolgt in zwei Schritten:
- Extraktion des akustischen Signals und Ausschneiden von analysierbaren 30 ms-Fenstern („frames“). Für jedes dieser Fenster wird ein sog. akustisches Bild extrahiert, also ein Merkmalsvektor des Sprachsignals.
- Anschließend wird für jedes Fenster jenes Phonem bestimmt, das mit der größten Wahrscheinlichkeit diesem Signal entspricht. Das Phonem ist die kleinste Einheit der gesprochenen Sprache. Die deutsche Sprache zählt 36 Phoneme. Für jedes Fenster des Sprachsignals bestimmt das Programm die Wahrscheinlichkeit einer Entsprechung mit jedem Phonem und kombiniert diese Wahrscheinlichkeiten mit den Aussprachewahrscheinlichkeiten eines Worts (ein Wort ist eine Verkettung von Phonemen, manche Phonemfolgen sind daher wahrscheinlicher als andere, da sie Wörter bilden) und der Wahrscheinlichkeit des Vorkommens eines Wortes in einer Zielsprache (denn bestimmte Wörter sind häufiger als andere).
Mehr darüber erfahren Sie unter: :
http://de.wikipedia.org/wiki/Spracherkennung
Sphinx, eine Open Source-Spracherkennungssoftware http://cmusphinx.sourceforge.net
Anwendung in der Robotik
Die Einführung der Spracherkennung liegt in der Robotik nahe, da es sich hierbei um eine der häufigsten Kommunikationsformen beim Menschen handelt. Im Zusammenhang mit der menschlichen Sprache sprechen wir von natürlicher Sprache. Diese ist sehr hoch entwickelt, da sie vom Kontext, der Person, dem Moment usw. abhängt. Die heutige Robotik macht zwar große Fortschritte, hat jedoch längst noch nicht dieses Komplexitätsniveau erreicht.
Bei individuellen
n (einmal abgesehen von den sehr fortschrittlichen
n in Labors wie ICub oder überaus eindrucksvollen Errungenschaften im militärischen Bereich) sind die angetroffenen Probleme wesentlich prosaischer. Denn die Spracherkennung hängt bei einem mobilen
von der Qualität der Komponenten, aber auch – wie immer in der Robotik – von der Umwelt ab. Diese kann laut sein, ein Echo erzeugen oder die Tonwahrnehmung aufgrund ihrer Form verzerren (der Signalempfang kann unterschiedlich sein, wenn der
sich beispielsweise an einer Wand entlang bewegt). Wie wir später sehen werden, ist es wesentlich komplizierter, einen
mit der Stimme zu steuern, als einem Computer per Mikrophon einen Text zu diktieren.
Installation und Konfiguration des Say-it Moduls
Das Say-it Modul
Beim
">Spracherkennungsmodul Say-It handelt es sich um eine 6,3 cm lange, 1,3 cm starke Steckkarte, die an den Anwendungssteckverbinder (Application Connector) angeschlossen wird. Die Steckkarte enthält auf der Oberseite ein Mikrophon sowie eine praktische LED-Leuchte, die dem Anwender anzeigt, wann das Modul im Spracherkennungsmodus läuft. Es können bis zu 32 gesprochene Befehle (d.h. parametrierte Wörter) gespeichert werden.
Anschluss des Say-it Moduls am
Das Spracherkennungsmodul Say-it wird an den Application Connector angeschlossen (auf der untenstehenden Abbildung in Rot gekennzeichnet). Der Anschluss erfolgt über den Schalter, der in der 0-Stellung für eine Stromzufuhr sorgt.
Vorsicht auf die Ausrichtung des Steckers. Um Irrtümer zu vermeiden: Das Zeichen Vdd (Vdd ist der auf +5V regulierte Eingang) befindet sich unten links, an der Rückseite des Say-it Moduls. An der diesem Zeichen nächstliegenden Pinbuchse ist daher der mit Vdd gekennzeichnete Steckverbinder des Application Connectors (unten links auf der obenstehenden Abbildung) anzuschließen..
Nach dem Anschließen befindet sich das Say-it Modul in folgender Position:
Nach dem Einführen der Steckkarte muss die Anwendung „Say-it GUI“ heruntergeladen und installiert werden. Sie steht unter folgendem Link zum Download bereit: http://www.parallax.com/Portals/0/Downloads/docs/prod/comm/SayItGUI-1.1.5.zip
Im Anschluss an die Softwareinstallation die Say-it Steckkarte einschalten, indem der Hauptschalter des Boe-Bot auf 1 gestellt und die Software „Say-it GUI“ gestartet wird. Nun wird der COM-Port spezifiziert, an dem der Boe-Bot
angeschlossen ist. Klicken Sie anschließend auf die „Connect“-Schaltfläche (beide in der nachstehenden Abbildung rot umrandet). Achtung, der Debug-Terminal der Programmierumgebung BASIC Stamp Editor muss geschlossen werden, bevor Sie die Schaltfläche „Connect“ anklicken.
Wenn Sie das Say-it Modul zum ersten Mal anschließen, wird Ihnen automatisch angeboten, auf ihrem Basic Stamp eine sog. Bridge (Brücke) herunterzuladen. Dieses Add-on für das BASIC Stamp Mikroprogramm ist notwendig, damit das Say-it Modul funktioniert. Klicken Sie auf „Yes“ und warten Sie, bis der Bridge-Download abgeschlossen ist. Anschließend schaltet die Fortschrittsleiste oben rechts auf der „Say-it GUI“ Schnittstelle ganz auf Grün.
Fertig! Jetzt ist das Modul einsatzbereit.
Weitere Einzelheiten dazu finden Sie in den kompletten englischsprachischen Unterlagen des Say-it Moduls unter folgender Adresse: http://www.parallax.com/Portals/0/Downloads/docs/prod/comm/30080_SayItModulev1.2.pdf
Ein erster Test
Bevor wir die Parametrierung des Moduls verändern, wollen wir die (englischen) Wörter testen, die auf dem Modul vorparametriert sind, um uns mit seiner Verwendung und den verschiedenen Konzepten vertraut zu machen, auf die wir später zurückgreifen werden.
Bevor Sie die nachstehenden Tests durchführen, stellen Sie bitte sicher, dass Ihr
über das USB-Kabel an Ihren Computer angeschlossen ist und Sie den
in der Softwareschnittstelle „Say-it GUI“ wie oben beschrieben ordnungsgemäß installiert haben. Stellen Sie den Hauptschalter Ihres
s auf 1 (d.h. Steckkarte eingeschaltet, Motoren aus).
In der „Say-it GUI“ Schnittstelle wird die erste Zeile der links verfügbaren Liste ausgewählt („Trigger“), anschließend die Schaltfläche „Test Group“ wie in nachstehender Abbildung gezeigt anklicken.
Wenn Sie diese Schaltfläche betätigen, schaltet das Say-it Modul für einige Sekunden in den Abtastmodus und versucht das oder die Wörter einer ausgewählten Grupppe zu erkennen (hier ist das Wort „Robot“ das einzige parametrierte Wort der Gruppe „Trigger“. Sprechen Sie in unmittelbarer Nähe des Mikrophons der Say-it Steckkarte das Wort „Robot“ (mit englischem Akzent) aus. Wenn das Wort nicht erkannt wird, so erscheint ein kleiner Bildschirm mit der Angabe „Timeout“, d.h. das Programm war nicht in der Lage, in der Abtastphase das Wort „Robot“ zu identifizieren. Wenn Sie das Wort hingegen richtig ausgesprochen haben, wird es in Ihrer Schnittstelle hellgrün markiert (mehrere Sekunden andauerndes hellgrünes Blinklicht).
Wie Ihnen bereits aufgefallen ist, leuchtet die grüne LED auf der Say-it Steckkarte auf, so bald sich der
im Abtastmodus befindet. Diese Funktion wird später noch sehr nützlich sein.
VÜben Sie mit anderen Gruppen wie der Gruppe WordSet Nr. 1, die 8 Wörter enthält, oder zwei weiteren Wordsets mit jeweils 6 und 11 Wörtern.
Erläuterung der Konzepte
Im vorangegangenen Absatz haben wir das Konzept des Auslösers (Trigger) sowie weitere Konzepte wie Gruppen und WordSets kennen gelernt. Diese Konzepte sollen nachstehend definiert werden.
Trigger (Auslöser)
Wie der Name schon sagt, handelt es sich um jenes Wort, das eine Spracherkennung auslöst. Der
weiß, dass auf dieses Wort ein weiteres Wort folgt, das einem Befehl entspricht.
Gruppen
Parametrierte Wörter sind Befehle, da sie eine Aktion auslösen sollen (wir kommen später darauf zurück). Gesprochene Befehle sind in Gruppen zusammengefasst.
WordSets
WordSets sind vorparametrierte Gruppen, in denen keine Wörter gelöscht oder hinzugefügt werden können.
Parametrieren benutzerspezifischer Befehle
In folgenden Schritten wird ein neuer Befehl hinzugefügt:
- Die gewünschte Gruppe für den neuen Befehl auswählen
- Die Schaltfläche „Add command“ anklicken (Sprechblase mit grünem Kreuz)
- Namen des Befehls in der soeben im rechten Fenster hinzugefügten Zeile eingeben. Beim Namen kann es sich um eine beliebige Kette handeln.
- Die hinzugefügte Zeile durch Anklicken auswählen (sie muss blau markiert sein)
- Die Schaltfläche „Train Command“ (Sprechblase mit Zahnrad) anklicken. Es erscheint folgender Bildschirm:
- Die Schaltfläche „Phase 1“ anklicken und das gewünschte Wort, das gespeichert werden soll, einmal aussprechen.
- Die Schaltfläche „Phase 2“ (die jetzt anstelle der Schaltfläche „Phase 1“ erscheint) anklicken und das dem Befehl entsprechende Wort erneut aussprechen.
Jetzt ist Ihr Befehl konfiguriert. Um ihn zu testen, ist wie zuvor die Schaltfläche „Test Group“ zu verwenden. Sollte die Parametrierung nicht zufriedenstellend sein, noch einmal von vorn beginnen. Das Löschen eines Befehls erfolgt mithilfe der Schaltfläche „Remove Command“.
Jetzt wissen Sie, wie Sie einen Befehl hinzufügen, und können Ihre eigenen Gruppen erweitern.
Erzeugung eines BS2-Codes
Wie wir gesehen haben, kann das Say-it Modul gesprochene Befehle erkennen, und wir können weitere Befehle hinzufügen. Sehen wir uns nun an, wie man den
dazu bringt, auf diese Spracherkennung mit konkreten Aktionen zu reagieren.
Mit dem Say-it GUI kann BS2 (PBASIC)-Code erzeugt werden. Dazu dient die Schaltfläche „Generate Code“ (Zauberstab auf einem weißen Blatt Papier).
Generieren und Testen von Codes
In unserem Beispiel wurden der Gruppe 1 die nachstehenden 5 Befehle hinzugefügt :
- WEITER
- STOPP
- ZURÜCK
- RECHTS
- LINKS
Die Schnittstelle fragt, wie der Code benannt und wo er platziert werden soll. Anschließend kann das „Say-it GUI“ geschlossen und der BASIC Stamp Editor verwendet werden, die Programmierumgebung für den Boe-Bot.
Der erzeugte Code ist relativ lang. Bevor sie ihn testen können, muss jedoch ein Parameter bearbeitet werden, und zwar der Wert des Parameters VRGROUP. Der Standardwert beträgt 0, d.h. es werden gesprochene Befehle der Gruppe 0 erwartet. In unserem Beispiel wurden jedoch 5 Befehle in Gruppe 1 hinzugefügt, der Wert von VRGROUP muss demnach auf 1 lauten..
Ebenso empfiehlt es sich, für ein signifikanteres Testergebnis einen Teil des Codes wie folgt zu verändern. Diese Änderung ist zwar nicht unerlässlich, macht den Test jedoch aussagekräftiger.
Vorher | Nachher |
Starten Sie das solcherart bearbeitete Programm und testen Sie nacheinander die einzelnen Befehle. Der Debug Terminal muss der nachstehenden Abbildung entsprechen:
Die erste Zeile zeigt das Wort „error“ – das bedeutet, dass in dieser Abtastphase kein parametrierter Befehl erkannt wurde. Dadurch lässt sich die Funktionsweise des erzeugten Codes besser verstehen, d.h. die Abtastphase befindet sich in einer Schleife mit einer Dauer von jeweils 5 Sekunden. Um diesen Parameter zu verändern, muss der Wert des Parameters VRA1 auf Zeile 81 verändert werden.
Hinzufügen von
befehlen
Beim endgültigen Code wurden am Ende des Programms eine Reihe von Routinen hinzugefügt, mit denen der
sich vorwärts, rückwärts usw. bewegt. Außerdem haben wir den Aufruf dieser Routinen im bereits zuvor bearbeiteten Codeabschnitt hinzugefügt, wie die nachstehende Abbildung zeigt:
Mithilfe dieses Codes kann der
jetzt mit der Stimme gesteuert werden! Der vollständige Code steht unter diesem Link zum Download bereit
Einen Beispielcode finden Sie bei Parallax unter folgender Adresse: http://www.parallax.com/Portals/0/Downloads/docs/prod/comm/SayItExampleCode.zip. Damit kann insbesondere der Begriff des Triggers getestet werden.
Jetzt liegt es an Ihnen, dieses Spracherkennungsmodul selbst auszuprobieren!(">http://www.generationrobots.de)
Jegliche Verwendung oder Vervielfältigung bedarf der vorherigen ausdrücklichen Genehmigung.