Sdílet prostřednictvím


SemanticResultKey Konstruktory

Definice

Vytvoří instanci SemanticResultKey a přidruží klíč k komponentám gramatiky.

Přetížení

Name Description
SemanticResultKey(String, GrammarBuilder[])

Přiřadí sémantický klíč k jednomu nebo více GrammarBuilder objektům sloužícím k vytvoření gramatiky rozpoznávání řeči.

SemanticResultKey(String, String[])

Přiřadí sémantický klíč k jedné nebo více String instancím sloužícím k vytvoření gramatiky rozpoznávání řeči.

Poznámky

Konstruktory pro SemanticResultKey zadání textové značky (sémantického klíče) a sady gramatických komponent, které se mají přidat do gramatiky rozpoznávání řeči.

Gramatické komponenty lze zadat buď jako pole GrammarBuilder objektů, nebo jako pole String instancí.

Pokud se gramatické komponenty používají při rozpoznávání, můžete k vrácené SemanticValue hodnotě přistupovat pomocí textové značky poskytnuté konstruktoru jako sémantického SemanticResultKey klíče. Vlastnost ValueSemanticValue instance bude určena gramatických komponent použitých v definici SemanticResultKey.

SemanticResultKey(String, GrammarBuilder[])

Zdroj:
SemanticResultKey.cs
Zdroj:
SemanticResultKey.cs
Zdroj:
SemanticResultKey.cs
Zdroj:
SemanticResultKey.cs

Přiřadí sémantický klíč k jednomu nebo více GrammarBuilder objektům sloužícím k vytvoření gramatiky rozpoznávání řeči.

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())

Parametry

semanticResultKey
String

Značka, která se má použít jako sémantický klíč pro přístup SemanticValue k instanci přidružené k GrammarBuilder objektům určeným argumentem builders .

builders
GrammarBuilder[]

Pole gramatických komponent, které budou přidruženy k objektu přístupnému SemanticValue se značkou definovanou v semanticResultKey.

Příklady

Následující příklad vytvoří pro Grammar rozpoznávání zadání hesla formuláře "Moje heslo je...", kde se skutečný vstup shoduje se zástupným znakem.

Zástupný znak je označený SpeechRecognizer hodnotou klíče "Password". Obslužná SpeechRecognized rutina zkontroluje přítomnost této značky, získá zvukový vstup hesla a ověří heslo.

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);

}

Poznámky

Z důvodu implicitních převodů builders argument podporuje SemanticResultValuetaké , SemanticResultKey, Choicesa String objekty. Další informace o implicitních převodech naleznete v tématu Implicit.

Při provádění operace GrammarBuilder rozpoznávání se objekty zadané v argumentu builders považují za sekvenční. Pokud SemanticResultValue se například k vytvoření Grammar, vstup do modulu pro rozpoznávání musí obsahovat slova "quick brown fox" v posloupnosti, která se má rozpoznat.

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

Argument semanticResultKey obsahuje značku použitou SemanticValue pro přístup k tomu, co se může vrátit.

Hodnota ValueSemanticValue je určena GrammarBuilder instancemi poskytnutými parametrem builders .

GrammarBuilder Pokud objekty neobsahují žádné definující instance SemanticResultValue, hodnota SemanticValue je null.

GrammarBuilder Pokud objekty zadané v parametru builders poskytují neoznačené (nepřidružované k objektuSemanticResultKey) SemanticResultValue instanci, která je používána logikou rozpoznávání, bude tato instance SemanticResultValue definovat Value vlastnost vytvořeného objektuSemanticValue.

V objektech určených parametrem builders by měla existovat jedna a pouze jedna, neoznačené SemanticResultValue instanceGrammarBuilder. Pokud je přidruženo SemanticResultKeyvíce instancí neoznačené SemanticResultValue hodnoty , každý se pokusí nastavit hodnotu SemanticValue produkovanou ve výsledku rozpoznávání. To není povoleno a rozpoznávání vygeneruje výjimku, když se pokusí použít vytvořenou GrammarSemanticResultKey instanci.

SemanticResultValue Instance obsažené v GrammarBuilder objektech určených parametrem builders a již přidružené k jiné SemanticResultKey instanci nemají žádný vliv na aktuální SemanticResultKey instanci.

Platí pro

SemanticResultKey(String, String[])

Zdroj:
SemanticResultKey.cs
Zdroj:
SemanticResultKey.cs
Zdroj:
SemanticResultKey.cs
Zdroj:
SemanticResultKey.cs

Přiřadí sémantický klíč k jedné nebo více String instancím sloužícím k vytvoření gramatiky rozpoznávání řeči.

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())

Parametry

semanticResultKey
String

Značka, která se má použít pro přístup k SemanticValue instanci přidružené k String objektům určeným argumentem phrases .

phrases
String[]

Jeden nebo více String objektů, jejichž zřetězený text bude přidružen k objektu přístupnému SemanticValue pomocí značky definované v semanticResultKey.

Příklady

Následující příklad vytvoří Grammar z objektu GrammarBuilder , který používá SemanticResultKey, který je definován polem String objektů.

Modul pro rozpoznávání, který používá vytvořenou Grammar , rozpozná frázi "barva červená zelená modrá nula". Sémantika RecognizedPhrase vrácené rozpoznáváním bude obsahovat SemanticValue sekvenci Value "červené zelené modré". K použití značky SemanticValue "code" se dostanete.

SemanticResultValue("zero", 5) Z důvodu připojení k objektu GrammarBuilder, kořenový SemanticValue objekt v objektu RecognizedPhrase bude mít hodnotu 5.

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);
}

Poznámky

Při provádění operace String rozpoznávání se objekty použité v parametru phrases považují za sekvenční. Pokud SemanticResultValue se například k vytvoření Grammar, vstup do modulu pro rozpoznávání musí obsahovat slova "quick brown fox" v posloupnosti, která se má rozpoznat.

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

Argument semanticResultKey určuje klíč použitý pro přístup SemanticValue k tomu, co se může vrátit.

Pokud vytvoříte pomocí objektu GrammarGrammarBuilder obsahujícího sémantický klíč s polem řetězcových objektů, ValueSemanticValue řetězec vytvořený operací rozpoznávání bude řetězec použitý při rozpoznávání. V předchozím příkladu to znamená, že Value by to byla "rychlá hnědá liška".

Platí pro