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
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
8. ENTWICKLUNG EINER SCHNITTSTELLE AUF BASIS DER MICROSOFT SPEECH API 53<br />
durchaus mehrere Spracheingaben mit unterschiedlichen Befehlsnamen zuordnen. Das heißt, dass der<br />
Befehlsindex einen Befehl innerhalb eines Menüs eindeutig identifiziert und dass der Befehlsname dazu<br />
genutzt werden kann, verschiedene Spracheingaben eines Befehls auseinander zu halten. Im folgenden<br />
Beispiel wir gezeigt wie man sich diese Eigenart der SAPI zu nutze machen kann. Man erstellt eine<br />
Grammatik wie folgt:<br />
add_menu(1, true, ’exit’);<br />
add_command(1, ’exit program’, 0, ’ep’);<br />
add_command(1, ’close window’, 0, ’cw’);<br />
Die Regel ’exit’ ist während der gesamten Laufzeit der Anwendung aktiv. Die zwei Spracheingaben<br />
’exit program’ und ’close window’ führen zum selben Befehlsindex (0) aber zu den unterschiedlichen<br />
Befehlsnamen ’ep’ und ’cw’. In einer fiktiven Anwendung existiert nun ein Hauptfenster und zusätzliche<br />
Fenster abhängig von der momentanen Aufgabe. Befindet sich die Anwendung nun in einem Fenster<br />
für eine der zusätzlichen Aufgaben, wird der Name des Befehls abgefragt. Ist er ’ep’ wird die gesamte<br />
Anwendung geschlossen, wohingegen ’cw’ nur das einzelne Fenster schließt. Sollte sich die Anwendung<br />
allerdings im Hauptfenster befinden wird der Index des Befehls erfragt. Beide Spracheingaben führen<br />
dann dazu, dass die Anwendung beendet wird.<br />
8.2.4 Das Vokabular<br />
Abgesehen von den Funktionen clear_grammar, add_menu, add_rule und finalize_grammar gibt es auch<br />
die Möglichkeit, die gesamte Grammatik in einem Schritt zu erstellen. Dazu kann sie aus einem vorgegebenen<br />
Vokabular eingelesen werden.<br />
Es bestehen zwei Möglichkeiten, wie ein Vokabular angegeben werden kann. Zunächst ist da das anwendungsinterne<br />
Vokabular. Es ist in einer Zeichenkette fest in die Anwendung integriert und wird<br />
mittels read_grammar_string eingelesen. Bei dieser Variante kann das Vokabular nicht von außen manipuliert<br />
werden. Der Funktionsaufruf kann bei größeren Vokabularen allerdings schnell unübersichtlich<br />
werden. Das externe Vokabular wird in einer txt-Datei gespeichert. Auf sie wird durch die Funktion<br />
read_grammar_file zugegriffen. Eine externes Vokabular hat den Vorteil, dass der geübte Nutzer das<br />
Vokabular bei Bedarf auch an seine eigenen Vorlieben anpassen kann.<br />
Das gesamte Vokabular besteht aus abwechselnd Menü-Zeilen und Befehls-Zeilen. Diese Vorgabe macht<br />
es notwendig, dass auch in einem String alle Zeilenumbrüche angezeigt werden.<br />
Menü-Zeilen:<br />
Das Schlüsselwort ’Menu’ leitet eine neue Menü-Zeile ein. Ihm folgen der Name des Menüs und optional<br />
der Startzustand. Er kann ’active’ oder ’inactive’ sein. Wird kein Startzustand angegeben, wird er