IAgentCommand::SetVoice

[Microsoft Agent ist ab Windows 7 veraltet und in nachfolgenden Versionen von Windows möglicherweise nicht verfügbar.]

HRESULT SetVoice(
   BSTR bszVoice  // voice text setting for Command
);

Legt die Voice-Eigenschaft für einen Befehl fest.

  • Gibt S_OK zurück, um anzugeben, dass der Vorgang erfolgreich war.

bszVoice

Ein BSTR, der den Text für die Voice-Eigenschaft eines Befehls angibt.

Für einen Befehl müssen die Voice-Eigenschaft und die Enabled-Eigenschaft so festgelegt sein, dass sprachseitig zugegriffen werden kann. Außerdem muss die VoiceCaption-Eigenschaft so festgelegt sein, dass sie im Fenster Sprachbefehle angezeigt wird. (Aus Gründen der Abwärtskompatibilität wird die Einstellung Caption verwendet, wenn keine VoiceCaption vorhanden ist.)

Der von Ihnen angegebene BSTR-Ausdruck kann eckige Klammerzeichen ([ ]) enthalten, um optionale Wörter und vertikale Balkenzeichen (|) anzugeben, um alternative Zeichenfolgen anzugeben. Alternative Müssen in Klammern eingeschlossen werden. Beispiel: "(hello [there] | hi)" weist die Sprach-Engine an, "hello", "hello there" oder "hi" für den Befehl zu akzeptieren. Denken Sie daran, zwischen dem Text, der sich in Klammern oder Klammern befindet, und dem Text, der sich nicht in Klammern oder Klammern befindet, geeignete Leerzeichen einzufügen.

Sie können den Operator star (*) verwenden, um null oder mehr Instanzen der wörter anzugeben, die in der Gruppe enthalten sind, oder den Plusoperator (+), um eine oder mehrere Instanzen anzugeben. Die folgende Grammatik führt beispielsweise zu einer Grammatik, die "try this", "please try this" und "please please try this" unterstützt, mit unbegrenzten Iterationen von "please":

   "please* try this"

Das folgende Grammatikformat schließt "Versuchen Sie dies" aus, da der +-Operator mindestens eine instance von "bitte" definiert:

   "please+ try this"

Die Wiederholungsoperatoren folgen den normalen Rangfolgeregeln und gelten für das unmittelbar vorangehende Textelement. Die folgende Grammatik ergibt beispielsweise "New York" und "New York York", aber nicht "New York New York":

   "New York+"

Daher sollten Sie in der Regel diese Operatoren mit den Gruppierungszeichen verwenden. Die folgende Grammatik umfasst beispielsweise sowohl "New York" als auch "New York New York":

   "(New York)+"

Wiederholungsoperatoren sind nützlich, wenn Sie eine Grammatik erstellen möchten, die eine wiederholte Sequenz enthält, z. B. eine Telefonnummer oder eine Spezifikation einer Liste von Elementen:

   "call (one|two|three|four|five|six|seven|eight|nine|zero|oh)*"
   "I'd like (cheese|pepperoni|pineapple|canadian bacon|mushrooms|and)+"

Obwohl die Operatoren auch mit den eckigen Klammern (ein optionales Gruppierungszeichen) verwendet werden können, kann dies die Effizienz der Verarbeitung der Grammatik durch den Agent verringern.

Sie können auch eine Auslassungspunkte (...) verwenden, um die Worterkennung zu unterstützen, d. h. das Spracherkennungsmodul anzuweisen, Wörter zu ignorieren, die in dieser Position im Ausdruck gesprochen werden (manchmal auch als "Garbage Words" bezeichnet). Daher erkennt die Sprach-Engine nur bestimmte Wörter in der Zeichenfolge, unabhängig davon, wenn sie mit benachbarten Wörtern oder Ausdrücken gesprochen werden. Wenn Sie diese Eigenschaft beispielsweise auf "[...] check mail [...]" die Spracherkennungs-Engine entspricht Ausdrücken wie "bitte mail überprüfen" oder "E-Mail überprüfen" mit diesem Befehl. Ellipsen können überall innerhalb einer Zeichenfolge verwendet werden. Seien Sie jedoch vorsichtig bei der Verwendung dieser Technik, da Spracheinstellungen mit Auslassungspunkten das Potenzial unerwünschter Übereinstimmungen erhöhen können.

Stellen Sie beim Definieren der Wörter und Grammatik für Ihren Befehl immer sicher, dass Sie mindestens ein wort enthalten, das erforderlich ist. Das heißt, vermeiden Sie, nur optionale Wörter anzugeben. Stellen Sie außerdem sicher, dass das Wort nur aussprechbare Wörter und Buchstaben enthält. Für Zahlen ist es besser, das Wort zu schreiben, anstatt die numerische Darstellung zu verwenden. Verzichten Sie außerdem auf Interpunktion oder Symbole. Verwenden Sie beispielsweise anstelle von "die #1$10 Pizza!" die Zehn-Dollar-Pizza nummer 1. Das Einschließen nicht aussprechbarer Zeichen oder Symbole für einen Befehl kann dazu führen, dass die Sprach-Engine die Grammatik für alle Ihre Befehle nicht kompiliert. Zum Schluss müssen Sie Ihren Sprachparameter so gut wie möglich von anderen sprachgesteuerten Befehlen unterscheiden. Je größer die Ähnlichkeit zwischen der Sprachgrammatik für Befehle ist, desto wahrscheinlicher ist es, dass die Sprach-Engine einen Erkennungsfehler verursacht. Sie können auch die Konfidenzbewertungen verwenden, um zwei Befehle besser zu unterscheiden, die möglicherweise eine ähnliche oder ähnlich klingende Sprachgrammatik aufweisen.

Wenn Sie die Voice-Eigenschaft für einen Befehl festlegen, werden die Sprachdienste des Agents automatisch aktiviert, sodass die Lauschtaste und der Tipp zum Abhören verfügbar sind. Die Spracherkennungs-Engine wird jedoch nicht geladen.

Hinweis

Die verfügbaren Grammatikfeatures hängen möglicherweise von der Spracherkennungs-Engine ab. Wenden Sie sich an den Anbieter der Engine, um zu ermitteln, welche Grammatikoptionen unterstützt werden. Verwenden Sie IAgentCharacterEx::SRModeID , um eine Engine anzugeben.

 

Weitere Informationen

IAgentCommand::GetVoice, IAgentCommand::SetCaption, IAgentCommand::SetEnabled, IAgentCommands::Add, IAgentCommands::Insert