Freigeben über


SemanticResultKey Konstruktoren

Definition

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

Überlädt

Name Beschreibung
SemanticResultKey(String, GrammarBuilder[])

Weist einem oder GrammarBuilder mehreren Objekten, die zum Erstellen einer Spracherkennungsgrammatik verwendet werden, einen semantischen Schlüssel zu.

SemanticResultKey(String, String[])

Weist einer oder String mehreren Instanzen, die zum Erstellen einer Spracherkennungsgrammatik verwendet werden, einen semantischen Schlüssel zu.

Hinweise

Die Konstruktoren für SemanticResultKey die Angabe eines Texttags (semantischen Schlüssels) und einer Reihe von Grammatikkomponenten, die einer Grammatik für die Spracherkennung 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 in der Erkennung verwendet werden, können Sie auf das zurückgegebene Texttag zugreifen, das dem Konstruktor eines SemanticResultKey semantischen Schlüssels zur Verfügung gestellt SemanticValue wird. Die Value Eigenschaft der SemanticValue Instanz wird durch die Grammatikkomponenten bestimmt, die in der Definition von SemanticResultKey.

SemanticResultKey(String, GrammarBuilder[])

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

Weist einem oder GrammarBuilder mehreren Objekten, die zum Erstellen einer Spracherkennungsgrammatik verwendet werden, 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 Semantikschlüssel verwendet werden soll, um auf die Instanz zuzugreifen, die SemanticValue den GrammarBuilder durch das builders Argument angegebenen Objekten zugeordnet ist.

builders
GrammarBuilder[]

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

Beispiele

Im folgenden Beispiel wird eine Grammar Kennworteingabe des Formulars "Mein Kennwort ist ..." erstellt, bei dem die tatsächliche Eingabe mit einem Wildcard abgeglichen wird.

Der Wildcard wird durch einen SpeechRecognizer Schlüsselwert "Password" markiert. Der SpeechRecognized Handler überprüft das Vorhandensein dieses Tags, 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 das builders Argument auch , SemanticResultKey, , Choicesund StringSemanticResultValueObjekte. Weitere Informationen zu impliziten Konvertierungen finden Sie unter Implicit.

Beim Ausführen eines Erkennungsvorgangs werden die GrammarBuilder im builders Argument bereitgestellten Objekte sequenziell behandelt. Wenn z. B. folgendes SemanticResultValue verwendet wird, um eine GrammarEingabe für das Erkennungsmodul zu erstellen, muss die Wörter "der schnelle braune Fuchs" in 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 das SemanticValue zurückgegeben werden kann.

Der Value Wert SemanticValue wird durch die Instanzen bestimmt, die GrammarBuilderbuilders vom Parameter bereitgestellt werden.

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

Wenn die GrammarBuilder im builders Parameter bereitgestellten Objekte eine nicht markierte (nicht einer SemanticResultKey Objekt zugeordnete) SemanticResultValue Instanz bereitstellen, die von der Erkennungslogik verwendet wird, definiert diese Instanz SemanticResultValue die Value Eigenschaft der SemanticValue erzeugten.

Es sollte eine instanz und nur eine, nicht markierte SemanticResultValue Instanz in den GrammarBuilder durch den builders Parameter angegebenen Objekten vorhanden sein. Wenn mehrere Instanzen nicht markierter Markierungen SemanticResultValue zugeordnet SemanticResultKeysind, versucht jeder, den Wert des SemanticValue im Erkennungsergebnis erzeugten Werts festzulegen. Dies ist nicht zulässig, und die Erkennung generiert eine Ausnahme, wenn versucht wird, eine Grammar erstellte Instanz zu SemanticResultKey verwenden.

Instanzen, SemanticResultValue die in den GrammarBuilder durch den builders Parameter angegebenen Objekten enthalten sind und bereits einem anderen SemanticResultKey zugeordnet sind, wirken sich nicht auf die aktuelle SemanticResultKey Instanz aus.

Gilt für:

SemanticResultKey(String, String[])

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

Weist einer oder String mehreren Instanzen, die zum Erstellen einer Spracherkennungsgrammatik verwendet werden, 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 zu verwendende Tag greift auf die Instanz zu, die SemanticValue den String durch das phrases Argument angegebenen Objekten zugeordnet ist.

phrases
String[]

Ein oder mehrere String Objekte, deren verketteter Text einem SemanticValue Objekt zugeordnet wird, auf das mit dem in semanticResultKeydefinierten Tag zugegriffen werden kann.

Beispiele

Im folgenden Beispiel wird ein GrammarGrammarBuilder Objekt erstellt, das ein SemanticResultKeyObjekt verwendet, das durch ein Array von String Objekten definiert wird.

Ein Erkennungsmodul, das das Grammar erstellte Modul verwendet, erkennt den Ausdruck "Farbe Rotgrün Blau Null". Die Semantik der RecognizedPhrase zurückgegebenen Erkennung enthält eine SemanticValue mit einem Value "rotgrünen Blau". Sie können auf das SemanticValue "Code"-Tag zugreifen.

Aufgrund des angefügten Objekts SemanticResultValue("zero", 5) weist das Stammobjekt SemanticValue in der GrammarBuilderRecognizedPhrase Datei 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 sequenziell behandelt. Wenn z. B. folgendes SemanticResultValue verwendet wird, um eine GrammarEingabe für das Erkennungsmodul zu erstellen, muss die Wörter "der schnelle braune Fuchs" in 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 das SemanticValue zurückgegeben werden kann.

Wenn Sie ein GrammarGrammarBuilder Objekt erstellen, das einen semantischen Schlüssel mit einem Array von Zeichenfolgenobjekten enthält, ist die ValueSemanticValue von einem Erkennungsvorgang erzeugte Zeichenfolge die Zeichenfolge, die in der Erkennung verwendet wird. Im vorherigen Beispiel bedeutet dies, dass Value es sich um "den schnellen braunen Fuchs" handelt.

Gilt für: