IAgentCommand::SetVoice

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

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

Legt die Voice-Eigenschaft für einen Befehlfest.

  • Gibt S _ OK zurück, um anzugeben, dass der Vorgang erfolgreich war.

bszVoice

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

Für einen Befehl müssen die Voice-Eigenschaft und die Enabled-Eigenschaft so festgelegt sein, dass die Stimme zugänglich ist. 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 angegebenen BSTR-Ausdruck kann eckige Klammern [ ] () enthalten, um optionale Wörter und vertikale Balkenzeichen ( | ) anzugeben, um alternative Zeichenfolgen anzugeben. Alternative Müssen in Klammern eingeschlossen werden. Beispielsweise weist "(hello [ there ] | hi)" die Sprach-Engine an, "hello", "hello there" oder "hi" für den Befehl zu akzeptieren. Denken Sie daran, geeignete Leerzeichen zwischen dem Text in Klammern oder Klammern und dem Text, der sich nicht in Klammern oder Klammern bezieht, einzuschließen.

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

   "please* try this"

Das folgende Grammatikformat schließt "try this" aus, da der Operator + mindestens eine Instanz von "please" definiert:

   "please+ try this"

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

   "New York+"

Daher sollten Sie diese Operatoren in der Regel mit den Gruppierungszeichen verwenden. Die folgende Grammatik enthält 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 (einem optionalen Gruppierungszeichen) verwendet werden können, kann dies die Effizienz der Verarbeitung der Grammatik durch den -Agent verringern.

Sie können auch auslassungspunkte (...) verwenden, um die Worterkennung zu unterstützen, d. h., die Spracherkennungs-Engine soll Wörter ignorieren, die an 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, ob sie mit angrenzenden Wörtern oder Ausdrücken gesprochen werden. Wenn Sie diese Eigenschaft z. B. auf " [ ... ] check mail [ ... ] " Die Spracherkennungs-Engine stimmt mit Ausdrücken wie "please check mail" oder "check mail please" mit diesem Befehl überein. Ellipsen können an einer beliebigen Stelle innerhalb einer Zeichenfolge verwendet werden. Seien Sie jedoch vorsichtig mit dieser Technik, da Spracheinstellungen mit Ellipsen 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 erforderliches Wort einschließen. Vermeiden Sie also, nur optionale Wörter zu verwenden. Stellen Sie außerdem sicher, dass das Wort nur aussprechbare Wörter und Buchstaben enthält. Bei Zahlen ist es besser, das Wort zu schreiben, anstatt die numerische Darstellung zu verwenden. Achten Sie außerdem darauf, alle Interpunktionszeichen oder Symbole auszulassen. Verwenden Sie beispielsweise anstelle von # "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 Befehle nicht kompiliert. Machen Sie schließlich Ihren Sprachparameter so unterschiedlich wie möglich von anderen von Ihnen definierten Sprachbefehlen. Je größer die Ähnlichkeit zwischen der Sprachgrammatik für Befehle ist, desto wahrscheinlicher wird die Sprach-Engine einen Erkennungsfehler machen. Sie können auch die Zuverlässigkeitsbewertungen verwenden, um besser zwischen zwei Befehlen zu unterscheiden, die eine ähnliche oder ähnlich klingende Sprachgrammatik aufweisen können.

Wenn Sie die Voice-Eigenschaft für einen Befehl festlegen, werden die Sprachdienste des -Agents automatisch aktiviert, sodass die Überwachungsschlüssel und der Lauschende Tipp verfügbar sind. Die Spracherkennungs-Engine wird jedoch nicht geladen.

Hinweis

Die verfügbaren Grammatikfeatures hängen möglicherweise von der Spracherkennungs-Engine ab. Möglicherweise sollten Sie beim Anbieter der Engine nachsehen, 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