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

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!