Belegarbeit (.pdf - 2.3 MB) - Technische Universität Dresden
Belegarbeit (.pdf - 2.3 MB) - Technische Universität Dresden
Belegarbeit (.pdf - 2.3 MB) - Technische Universität Dresden
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
8. ENTWICKLUNG EINER SCHNITTSTELLE AUF BASIS DER MICROSOFT SPEECH API 59<br />
8.3.3.2 ExecuteCommand()<br />
Die Abbildung 8.6 stellt die Funktion ExecuteCommand() dar. Um die Funktionsweise besser zu zeigen,<br />
ist nur die Behandlung aller Befehle des Hauptmenüs abgebildet. Die Behandlung von Befehlen<br />
in den anderen Menüs läuft analog dazu ab. Sobald die Funktion aufgerufen wurde, werden zu dem soeben<br />
erkannt Befehl, der Name sowie die ID des Befehls selbst sowie der zugehörigen Regel abgefragt.<br />
Dies geschieht über die Funktionen get_menu_index(), get_command_index(), get_menu_name() und<br />
get_command_name(). Einige davon werden allerdings nicht für die Navigation im Hauptmenü genutzt.<br />
Die darauf folgende Abfrage der ’vocnumber’ dient nur dazu, zu unterscheiden ob das richtige Vokabular<br />
geladen ist oder ob sich die Anwendung im Fehlermenü befindet. Wenn nun das original Vokabular geladen<br />
wurde und sich die Anwendung im Hauptmenü befindet, nimmt die Variable ’rule_name’ den Wert<br />
’main’ an. Auf Grund dessen wird die Regel für das Hauptmenü ausgeführt und nun überprüft, welcher<br />
der Befehle des Hauptmenüs soeben eingegeben wurde. Dies geschieht entweder über den Namen des<br />
Befehls oder seine ID. Danach werden die entsprechenden Anweisungen für diesen Befehl ausgeführt.<br />
Im Fall der Beispielanwendung erfolgt entweder eine einfache Bildschirmausgabe, eine weitere Funktion<br />
wird ausgeführt oder ein Untermenü wird geöffnet, das entsprechende Menü in der Grammatik wird<br />
aktiviert und das momentane Menü deaktiviert.<br />
8.3.3.3 exit()<br />
Die Funktion exit() wird in Abbildung 8.7 gezeigt. Sie ist nur dafür zuständig die Ressourcen des Spracherkenners<br />
wieder frei zu geben. Dazu wird die Funktion close() der Schnittstelle aufgerufen. Auf das<br />
Beenden der Anwendung hat sie insofern Einfluss, als dass beim nächsten Aufruf der Erkennungsschleife<br />
die Funktion is_recognizer_active() den Wert ’false’ zurück gibt. Dies hat den Ausstieg aus der Schleife<br />
und damit das Ende der Anwendung zur Folge.<br />
8.4 Test der Schnittstelle mit Hilfe der Beispielanwendung<br />
Um die Schnittstelle auch mit den früheren Testergebnissen vergleichen zu können, wurde die Beispielanwendung<br />
entsprechend der Sphinx-4 Dialog Demo erstellt. Somit enthält die Testanwendung<br />
insgesamt fünf Menüs. Diese wiederum beinhalten zwischen elf und 31 Kommandos. Wie in den vorangegangenen<br />
Tests wurde auch hier jedes Kommando fünf mal wiederholt. Das Gesamtergebnis der<br />
Testanwendung wird in Tabelle 8.1 dargestellt. In der darauf folgenden Tabelle 8.2 werden diese neuen<br />
Ergebnisse den früheren Testergebnissen von SAPI, jlab und Sphinx gegenüber gestellt.