Sdílet prostřednictvím


SemanticResultKey Konstruktory

Definice

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

Přetížení

SemanticResultKey(String, GrammarBuilder[])

Přiřadí sémantický klíč jednomu nebo více GrammarBuilder objektům použitý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 použitý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ým SemanticValue komponentám přistupovat pomocí textové značky poskytnuté konstruktoru SemanticResultKey jako sémantický klíč. Vlastnost ValueSemanticValue instance bude určena gramatické komponenty použité v definici .SemanticResultKey

SemanticResultKey(String, GrammarBuilder[])

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

Přiřadí sémantický klíč jednomu nebo více GrammarBuilder objektům použitý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 k SemanticValue instanci přidružené k GrammarBuilder objektům určeným argumentem builders .

builders
GrammarBuilder[]

Pole gramatických komponent, které bude přidruženo k objektu SemanticValue přístupnému pomocí značky definované v semanticResultKey.

Příklady

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

Zástupný znak je označený SpeechRecognizer hodnotou klíče "Heslo". Obslužná rutina SpeechRecognized 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ů argument podporuje SemanticResultValuetaké objekty , SemanticResultKeyChoices, a String .builders Další informace o implicitních převodech najdete 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 se například k vytvoření objektu Grammarpoužije následující SemanticResultValue příkaz , musí vstup do modulu rozpoznávání obsahovat slova "rychlá hnědá liška" v pořadí, která se mají 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 pro přístup k objektu SemanticValue , který se může vrátit.

Hodnota Value parametru SemanticValue je určena instancemi GrammarBuilder zadanými parametrem builders .

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

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

V objektech určených parametrem builders by měla být jedna a pouze jedna instance GrammarBuilder bez označováníSemanticResultValue. Pokud je k SemanticResultKeyobjektu přidruženo SemanticResultValue více instancí bez značek , každý se pokusí nastavit hodnotu SemanticValue vytvořené ve výsledku rozpoznávání. To není povoleno a rozpoznávání vygeneruje výjimku, když se pokusí použít vytvořenou Grammar pomocí takové SemanticResultKey instance.

Instance obsažené SemanticResultValue 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 použitý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, SemanticValue přistupuje k 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 SemanticValue přístupnému pomocí značky definované v nástroji semanticResultKey.

Příklady

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

Modul rozpoznávání pomocí vytvořeného Grammar rozpozná frázi "barva červenozelená modrá nula". Sémantika vráceného RecognizedPhrase rozpoznáváním bude obsahovat SemanticValue symbol s Value "červenozeleně modrou". K sadě SemanticValue můžete přistupovat pomocí značky "code".

SemanticResultValue("zero", 5) Z důvodu připojení k objektu GrammarBuilderbude mít kořenový SemanticValue objekt v objektu RecognizedPhrase 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 se například k vytvoření objektu Grammarpoužije následující SemanticResultValue příkaz , musí vstup do modulu rozpoznávání obsahovat slova "rychlá hnědá liška" v pořadí, která se mají rozpoznat.

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

Argument semanticResultKey určuje klíč použitý pro přístup SemanticValue k vrácenému klíči.

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

Platí pro