Freigeben über


SemanticResultKey Konstruktoren

Definition

Erstellt eine Instanz von SemanticResultKey und ordnet den Schlüssel Grammatikkomponenten zu.

Überlädt

SemanticResultKey(String, GrammarBuilder[])

Weist einem oder mehreren GrammarBuilder-Objekten, die verwendet werden, um eine Spracherkennungsgrammatik zu erstellen einen semantischen Schlüssel zu.

SemanticResultKey(String, String[])

Weist einem oder mehreren String-Instanzen, die verwendet werden, um eine Spracherkennungsgrammatik zu erstellen einen semantischen Schlüssel zu.

Hinweise

Die Konstruktoren für SemanticResultKey geben ein Texttag (den semantischen Schlüssel) und eine Reihe von Grammatikkomponenten an, die einer Spracherkennungsgrammatik hinzugefügt werden sollen.

Die Grammatikkomponenten können entweder als Array von GrammarBuilder Objekten oder als Array von String Instanzen angegeben werden.

Wenn die Grammatikkomponenten bei der Erkennung verwendet werden, können Sie auf die zurückgegebene SemanticValue zugreifen, indem Sie das Texttag verwenden, das dem Konstruktor von SemanticResultKey als semantischem Schlüssel bereitgestellt wird. Die Value -Eigenschaft des SemanticValue instance wird durch die Grammatikkomponenten bestimmt, die in der Definition von SemanticResultKeyverwendet werden.

SemanticResultKey(String, GrammarBuilder[])

Quelle:
SemanticResultKey.cs
Quelle:
SemanticResultKey.cs
Quelle:
SemanticResultKey.cs

Weist einem oder mehreren GrammarBuilder-Objekten, die verwendet werden, um eine Spracherkennungsgrammatik zu erstellen einen semantischen Schlüssel zu.

public:
 SemanticResultKey(System::String ^ semanticResultKey, ... cli::array <System::Speech::Recognition::GrammarBuilder ^> ^ builders);
public SemanticResultKey (string semanticResultKey, params System.Speech.Recognition.GrammarBuilder[] builders);
new System.Speech.Recognition.SemanticResultKey : string * System.Speech.Recognition.GrammarBuilder[] -> System.Speech.Recognition.SemanticResultKey
Public Sub New (semanticResultKey As String, ParamArray builders As GrammarBuilder())

Parameter

semanticResultKey
String

Das Tag, das als semantischer Schlüssel verwendet werden soll, um auf die SemanticValue-Instanz zuzugreifen, die den GrammarBuilder-Objekten zugeordnet ist, die vom Argument builders angegeben werden.

builders
GrammarBuilder[]

Ein Array von Grammatikkomponenten, die einem SemanticValue-Objekt zugeordnet werden, auf das mit dem in semanticResultKey definierten Tag zugegriffen werden kann.

Beispiele

Im folgenden Beispiel wird ein Grammar erstellt, um die Kennworteingabe im Format "Mein Kennwort ist ..." zu erkennen, wobei die tatsächliche Eingabe mit einem Wildcard abgeglichen wird.

Der Wildcard wird mit einem SpeechRecognizer gekennzeichnet, dessen Schlüsselwert "Password" ist. Der SpeechRecognized Handler überprüft, ob dieses Tag vorhanden ist, ruft die Audioeingabe des Kennworts ab und überprüft das Kennwort.

private void pwdGrammar()
{
  GrammarBuilder pwdBuilder = new GrammarBuilder("My Password is");
  GrammarBuilder wildcardBuilder = new GrammarBuilder();
  wildcardBuilder.AppendWildcard();
  SemanticResultKey wildcardKey= new SemanticResultKey("Password", wildcardBuilder);
  pwdBuilder+=wildcardKey;
  Grammar grammar = new Grammar(pwdBuilder);
  grammar.Name = "Password input";

  grammar.SpeechRecognized +=
    delegate(object sender, SpeechRecognizedEventArgs eventArgs)
    {
      SemanticValue semantics = eventArgs.Result.Semantics;
      RecognitionResult result=eventArgs.Result;

      if (!semantics.ContainsKey("Password"))
      {
        SpeechUI.SendTextFeedback(eventArgs.Result, "No Password Provided", false);
      }
      else
      {
        RecognizedAudio pwdAudio = result.GetAudioForWordRange(
                  result.Words[3],
                  result.Words[result.Words.Count - 1]);
                  MemoryStream pwdMemoryStream = new MemoryStream();
                  pwdAudio.WriteToAudioStream(pwdMemoryStream);
        if (!IsValidPwd(pwdMemoryStream))
        {
          string badPwd = System.IO.Path.GetTempPath() + "BadPwd" + (new Random()).Next().ToString() + ".wav";
          FileStream waveStream = new FileStream(badPwd, FileMode.Create);
          pwdAudio.WriteToWaveStream(waveStream);
          waveStream.Flush();
          waveStream.Close();
          SpeechUI.SendTextFeedback(eventArgs.Result, "Invalid Password", false);
        }
      }
    };

  grammar.Enabled = true;
  _recognizer.LoadGrammar(grammar);
  UpdateGrammarTree(_grammarTreeView, _recognizer);

}

Hinweise

Aufgrund impliziter Konvertierungen unterstützt SemanticResultValuedas builders -Argument auch - , SemanticResultKeyChoices- und String -Objekte. Weitere Informationen zu impliziten Konvertierungen finden Sie unter Implicit.

Beim Ausführen eines Erkennungsvorgangs werden die GrammarBuilder im Argument bereitgestellten builders Objekte als sequenziell behandelt. Wenn beispielsweise folgendes SemanticResultValue verwendet wird, um einen Grammarzu erstellen, muss die Eingabe für die Erkennungs-Engine die Wörter "der schnelle braune Fuchs" in der Folge enthalten, um erkannt zu werden.

SemanticResultKey stringTest=new SemanticResultKey(
    "stringTest", new GrammarBuilder[] {
    new GrammarBuilder("the"),
    new GrammarBuilder("quick"),
    new GrammarBuilder("brown"),
    new GrammarBuilder("fox")});

Das semanticResultKey Argument enthält das Tag, das für den Zugriff auf verwendet wird, der SemanticValue möglicherweise zurückgegeben wird.

Der Value von SemanticValue wird durch die GrammarBuilder Vom -Parameter bereitgestellten builders Instanzen bestimmt.

Wenn die GrammarBuilder -Objekte keine definierenden Instanzen von SemanticResultValueenthalten, ist nullder Wert von SemanticValue .

Wenn die GrammarBuilder im builders -Parameter bereitgestellten Objekte einen nicht markierten (nicht einem SemanticResultKey Objekt zugeordneten) SemanticResultValue instance bereitstellen, der von der Erkennungslogik verwendet wird, definiert diese instance von SemanticResultValue die Value -Eigenschaft des SemanticValue erzeugten .

In den durch den GrammarBuilderbuilders Parameter angegebenen Objekten sollte nur ein nicht markierter SemanticResultValue instance vorhanden sein. Wenn dem mehrere Instanzen von nicht markierten SemanticResultValue zugeordnet SemanticResultKeysind, versucht jede, den Wert des SemanticValue im Erkennungsergebnis erzeugten festzulegen. Dies ist nicht zulässig, und die Erkennung generiert eine Ausnahme, wenn versucht wird, eine Grammar mit einem SemanticResultKey solchen instance erstellte zu verwenden.

Instanzen vonSemanticResultValue, die in den GrammarBuilder durch den builders Parameter angegebenen Objekten enthalten sind und bereits einem anderen SemanticResultKey zugeordnet sind, haben keine Auswirkungen auf die aktuelle SemanticResultKey instance.

Gilt für:

SemanticResultKey(String, String[])

Quelle:
SemanticResultKey.cs
Quelle:
SemanticResultKey.cs
Quelle:
SemanticResultKey.cs

Weist einem oder mehreren String-Instanzen, die verwendet werden, um eine Spracherkennungsgrammatik zu erstellen einen semantischen Schlüssel zu.

public:
 SemanticResultKey(System::String ^ semanticResultKey, ... cli::array <System::String ^> ^ phrases);
public SemanticResultKey (string semanticResultKey, params string[] phrases);
new System.Speech.Recognition.SemanticResultKey : string * string[] -> System.Speech.Recognition.SemanticResultKey
Public Sub New (semanticResultKey As String, ParamArray phrases As String())

Parameter

semanticResultKey
String

Das Tag, das verwendet werden soll, um auf die SemanticValue-Instanz zuzugreifen, die den String-Objekten zugeordnet ist, die vom Argument phrases angegeben werden.

phrases
String[]

Eines oder mehrere String-Objekte, deren verketteter Text einem SemanticValue-Objekt zugeordnet wird, das mit dem Tag zugreifbar ist, das in semanticResultKey definiert wird.

Beispiele

Im folgenden Beispiel wird ein Grammar aus einem GrammarBuilder -Objekt erstellt, das ein SemanticResultKeyverwendet, das durch ein Array von String -Objekten definiert wird.

Eine Erkennungs-Engine, die das Grammar erstellte verwendet, erkennt den Ausdruck "Farbe rot grün blau Null". Die Semantik der von der RecognizedPhrase Erkennung zurückgegebenen enthält eine SemanticValue mit einem Value von "rot grün blau". Sie können mit dem Tag "code" auf die SemanticValue zugreifen.

Aufgrund des SemanticResultValue("zero", 5) an GrammarBuilderangefügten weist das Stammobjekt SemanticValue im RecognizedPhrase den Wert 5 auf.

private void keyTest()
{
  // Say "color red green blue zero"
  GrammarBuilder gb = new GrammarBuilder("color") +
                        new SemanticResultKey("code",
                          (new string[] {"red", "green", "blue"})) +
                        new SemanticResultValue("zero", 5);
  Grammar g = new Grammar(gb);
  g.Name = "keyTest";
  _recognizer.LoadGrammar(g);
}

Hinweise

Beim Ausführen eines Erkennungsvorgangs werden die String im phrases Parameter verwendeten Objekte als sequenziell behandelt. Wenn beispielsweise folgendes SemanticResultValue verwendet wird, um einen Grammarzu erstellen, muss die Eingabe für die Erkennungs-Engine die Wörter "der schnelle braune Fuchs" in der Folge enthalten, um erkannt zu werden.

SemanticResultKey stringTest=new SemanticResultKey("stringTest",
                                new string[] {
                                               "the",
                                               "quick",
                                               "brown",
                                               "fox"});

Das semanticResultKey Argument bestimmt den Schlüssel, der für den Zugriff auf verwendet wird, der SemanticValue möglicherweise zurückgegeben wird.

Wenn Sie ein Grammar -Objekt erstellen, das einen GrammarBuilder semantischen Schlüssel mit einem Array von Zeichenfolgenobjekten enthält, ist die ValueSemanticValue von einem Erkennungsvorgang erzeugte Zeichenfolge die bei der Erkennung verwendete Zeichenfolge. Im vorherigen Beispiel bedeutet dies, dass Value "der schnelle Braunfuchs" wäre.

Gilt für: