29.01.2014 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!