Freigeben über


IAgentCommand::SetVoice

[Der Microsoft-Agent ist ab Windows 7 veraltet und kann in nachfolgenden Versionen von Windows nicht verfügbar sein.]

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

Legt die eigenschaft Voice für ein Commandfest.

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

bszVoice

Ein BSTR, der den Text für die eigenschaft Voice eines Commandangibt.

Ein Command- muss über die Voice--Eigenschaft verfügen und "Enabled"-Eigenschaft auf Sprachzugriff festgelegt sein. Außerdem muss die VoiceCaption-Eigenschaft festgelegt sein, damit sie im Sprachbefehlsfensterangezeigt wird. (Wenn keine VoiceCaption-vorhanden ist, wird die einstellung Caption verwendet.)

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: "(hallo [there] | hi)" weist das Sprachmodul an, "hello", "hello there" oder "hi" für den Befehl zu akzeptieren. Denken Sie daran, geeignete Leerzeichen zwischen dem Text in eckigen Klammern oder Klammern und dem Text einzuschließen, der sich nicht in Klammern oder Klammern befindet.

Mit dem Stern (*) -Operator können Sie null oder mehr Instanzen der Wörter angeben, die in der Gruppe enthalten sind, oder den Plus-Operator (+), um eine oder mehrere Instanzen anzugeben. Die folgenden Ergebnisse ergeben z. B. eine Grammatik, die "try this" unterstützt, "bitte versuchen Sie es", und "Bitte versuchen Sie es mit", mit unbegrenzten Iterationen von "bitte":

   "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 den normalen Regeln der Rangfolge und gelten für das unmittelbar vorangehende Textelement. Die folgende Grammatik ergibt z. B. "New York" und "New York York", aber nicht "New York New York":

   "New York+"

Daher sollten Sie diese Operatoren in der Regel mit den Gruppierungszeichen verwenden. Die folgende Grammatik enthält z. B. 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 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 des Agents verringern.

Sie können auch ein Auslassungszeichen (...) verwenden, um Worterkennungzu unterstützen. Das heißt, das Spracherkennungsmodul angibt, wörter, die an dieser Position in dieser Position in der Phrase gesprochen werden (manchmal auch als Garbage Wörter bezeichnet). Daher erkennt das Sprachmodul nur bestimmte Wörter in der Zeichenfolge, unabhängig davon, ob es mit benachbarten Wörtern oder Ausdrücken gesprochen wird. Wenn Sie diese Eigenschaft beispielsweise auf "[...] check mail [...]" das Spracherkennungsmodul entspricht Ausdrücken wie "Bitte überprüfen Sie E-Mail" oder "E-Mail bitte überprüfen" an diesen Befehl. Ellipsen können an einer beliebigen Stelle in einer Zeichenfolge verwendet werden. Seien Sie jedoch vorsichtig mit 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 Den Befehl immer sicher, dass Sie mindestens ein wort einschließen, das erforderlich ist. d. h. vermeiden Sie, nur optionale Wörter zu liefern. Stellen Sie außerdem sicher, dass das Wort nur wörter und Buchstaben enthält. Bei Zahlen ist es besser, das Wort zu formulieren, anstatt die numerische Darstellung zu verwenden. Lassen Sie außerdem alle Interpunktionszeichen oder Symbole weg. Verwenden Sie z. B. anstelle von "#1 $ 10 Pizza!" "die Nummer ein zehn Dollar Pizza". Das Einschließen nicht pronomischer Zeichen oder Symbole für einen Befehl kann dazu führen, dass das Sprachmodul die Grammatik für alle Befehle nicht kompilieren kann. Machen Sie schließlich Ihren Sprachparameter so unterschiedlich wie möglich von anderen Sprachbefehlen, die Sie definieren. Je größer die Ähnlichkeit zwischen der Sprachgrammatik für Befehle ist, desto wahrscheinlicher ist die Wahrscheinlichkeit, dass das Sprachmodul einen Erkennungsfehler verursacht. Sie können auch die Konfidenzbewertungen verwenden, um zwischen zwei Befehlen besser zu unterscheiden, die möglicherweise eine ähnliche oder ähnliche Sprachgrammatik aufweisen.

Wenn Sie die Voice--Eigenschaft für eine Command- festlegen, werden die Sprachdienste des Agents automatisch aktiviert, sodass die Sprachtaste und der Hörhinweis verfügbar sind. Das Spracherkennungsmodul wird jedoch nicht geladen.

Anmerkung

Die verfügbaren Grammatikfeatures hängen möglicherweise vom Spracherkennungsmodul ab. Möglicherweise sollten Sie sich mit dem Hersteller des Moduls erkundigen, welche Grammatikoptionen unterstützt werden. Verwenden Sie IAgentCharacterEx::SRModeID-, um ein Modul anzugeben.

 

Siehe auch

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