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 52<br />
Nur Befehle die zu Regeln gehören deren Status ’aktiv’ ist können erkannt werden. Um ein Regel zu<br />
aktivieren können die Funktion activate_menu_index und activate_menu_name verwendet werden. Es<br />
ist allerdings nicht vorteilhaft immer alle Menüs aktiv zu lassen. Damit man ein Menü also auch wieder<br />
deaktivieren kann stehen die Funktionen deactivate_menu_index und deactivate_menu_name zur Verfügung.<br />
Dadurch wird Wahrscheinlichkeit reduziert, dass Spracheingaben verwechselt werden.<br />
Falls nötig können aus einer Regel auch alle Befehle gelöscht werden indem man erneut die Funktion<br />
add_menu mit dem entsprechenden Index aufruft. Der Name der Regel hat darauf allerdings keinen<br />
Einfluss und ändert sich auch dann nicht, wenn man beim Aufruf der Funktion einen neuen Namen<br />
angibt.<br />
8.<strong>2.3</strong> Der Befehl<br />
Jede Spracheingabe, die erkannt werden kann, wird als Befehl bezeichnet. Der Begriff umfasst dabei<br />
sowohl Befehle die nur aus einem einzigen Wort bestehen als auch Befehlswortgruppen.<br />
Mittels der Funktion add_command wird der Grammatik ein neuer Befehl hinzugefügt. Bei den übergebenen<br />
Parametern handelt es sich um den Menüindex, die Spracheingabe, den Befehlsindex sowie<br />
den Name des Befehls. Der Menüindex gibt an zu welchem Menü der neue Befehl hinzugefügt werden<br />
soll. Der Name und der Index eines Befehls identifizieren ihn innerhalb seines Menüs eindeutig. Die<br />
Spracheingabe gibt an, was gesagt werden muss um den entsprechenden Befehl auszulösen. Natürlich<br />
kann es vorkommen das verschiedene Spracheingaben den selben Befehl auslösen sollen. Zum Beispiel<br />
könnten die Eingaben ’exit program’, ’close program’ und ’end program’ alle die gleiche Wirkung verfolgen.<br />
Um dies zu realisieren muss für jede Spracheingabe erneut die Funktion add_command, mit dem<br />
gleichen Menü- und Befehlsindex aufgerufen werden.<br />
Um heraus zu bekommen welcher Befehl in der letzten Spracheingabe aufgerufen wurde, können die<br />
Funktionen get_menu_name und get_command_index aufgerufen werden. Falls nur eine Regel existieren<br />
sollte ist das ausreichend. Wenn mehrere Regeln existieren und gleichzeitig aktiv sind sollten noch<br />
entweder der Regelname oder der Regelindex abgefragt werden um einen Befehl eindeutig zu identifizieren.<br />
An dieser Stelle soll noch auf eine Besonderheit eingegangen werden. Wie schon zuvor erwähnt können<br />
mehrere Spracheingaben den selben Befehl auslösen. Außerdem wurde gesagt, dass dazu wiederholt<br />
die Funktion add_command mit dem gleichen Menü- und Befehlsindex aufgerufen werden muss. An<br />
dieser Stelle kommt die Frage auf, ob den nicht auch der Name des Befehls gleich lauten muss, da auch<br />
er einen Befehl eindeutig identifiziert. Die Antwort ist allerdings nein. Man kann einem Befehl also