Compartilhar via


SemanticResultKey Construtores

Definição

Constrói uma instância de SemanticResultKey e associa a chave com componentes de gramática.

Sobrecargas

SemanticResultKey(String, GrammarBuilder[])

Atribui uma chave semântica a um ou mais objetos GrammarBuilder usados para criar uma gramática de reconhecimento de fala.

SemanticResultKey(String, String[])

Atribui uma chave semântica a uma ou mais instâncias de String usadas para criar uma gramática de reconhecimento de fala.

Comentários

Os construtores para SemanticResultKey especificam uma marca de texto (a chave semântica) e um conjunto de componentes gramaticais a serem adicionados a uma gramática de reconhecimento de fala.

Os componentes gramaticais podem ser especificados como uma matriz de GrammarBuilder objetos ou como uma matriz de String instâncias.

Se os componentes gramaticais forem usados em reconhecimento, você poderá acessar o retornado SemanticValue usando a marca de texto fornecida ao construtor de SemanticResultKey como uma chave semântica. A Value propriedade da SemanticValue instância será determinada pelos componentes gramaticais usados na definição de SemanticResultKey.

SemanticResultKey(String, GrammarBuilder[])

Origem:
SemanticResultKey.cs
Origem:
SemanticResultKey.cs
Origem:
SemanticResultKey.cs

Atribui uma chave semântica a um ou mais objetos GrammarBuilder usados para criar uma gramática de reconhecimento de fala.

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

Parâmetros

semanticResultKey
String

A marca a ser usada como uma chave semântica para acessar a instância de SemanticValue associada aos objetos GrammarBuilder especificados pelo argumento builders.

builders
GrammarBuilder[]

Uma matriz de componentes de gramática que será associada a um objeto SemanticValue acessível com a marca definida em semanticResultKey.

Exemplos

O exemplo a seguir cria um Grammar para reconhecer a entrada de senha do formulário "Minha senha é ...", em que a entrada real corresponde a um curinga.

O curinga é marcado por um SpeechRecognizer cujo valor de chave é "Senha". O SpeechRecognized manipulador verifica a presença dessa marca, obtém a entrada de áudio da senha e verifica a senha.

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

}

Comentários

Devido a conversões implícitas, o builders argumento também dá suporte SemanticResultValuea objetos , SemanticResultKeyChoices, e String . Para obter mais informações sobre conversões implícitas, consulte Implicit.

Ao executar uma operação de reconhecimento, os GrammarBuilder objetos fornecidos no builders argumento são tratados como sequenciais. Por exemplo, se o seguinte SemanticResultValue for usado para construir um Grammar, a entrada para o mecanismo de reconhecimento deverá conter as palavras "a raposa marrom rápida" na sequência a ser reconhecida.

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

O semanticResultKey argumento contém a marca usada para acessar o SemanticValue que pode ser retornado.

O Value do SemanticValue é determinado pelas GrammarBuilder instâncias fornecidas pelo builders parâmetro .

Se os GrammarBuilder objetos não contiverem nenhuma instância de definição de SemanticResultValue, o valor do SemanticValue será null.

Se os GrammarBuilder objetos fornecidos no builders parâmetro fornecerem uma instância não registrada (não associada a um SemanticResultKey objeto) SemanticResultValue usada pela lógica de reconhecimento, essa instância de SemanticResultValue definirá a Value propriedade do SemanticValue que é produzido.

Deve haver uma e apenas uma instância não SemanticResultValue registrada nos GrammarBuilder objetos especificados pelo builders parâmetro . Se várias instâncias de não SemanticResultValue marcadas estiverem associadas ao SemanticResultKey, cada uma tentará definir o valor do SemanticValue produzido no resultado do reconhecimento. Isso não é permitido e o reconhecedor gerará uma exceção quando tentar usar um Grammar criado usando essa SemanticResultKey instância.

Instâncias de SemanticResultValue contidas nos GrammarBuilder objetos especificados pelo parâmetro e já associadas a builders outra SemanticResultKey não têm efeito sobre a instância atual SemanticResultKey .

Aplica-se a

SemanticResultKey(String, String[])

Origem:
SemanticResultKey.cs
Origem:
SemanticResultKey.cs
Origem:
SemanticResultKey.cs

Atribui uma chave semântica a uma ou mais instâncias de String usadas para criar uma gramática de reconhecimento de fala.

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

Parâmetros

semanticResultKey
String

A marca a ser usada para acessar a instância de SemanticValue associada aos objetos String especificados pelo argumento phrases.

phrases
String[]

Um ou mais objetos String, cujo texto concatenado será associado a um objeto SemanticValue acessível com a marca definida em semanticResultKey.

Exemplos

O exemplo a seguir cria um Grammar de um GrammarBuilder objeto que usa um SemanticResultKey, que é definido por uma matriz de String objetos .

Um mecanismo de reconhecimento que usa o Grammar criado reconhecerá a frase "cor azul verde vermelho zero". A semântica do RecognizedPhrase retornado pelo reconhecimento conterá um com um SemanticValueValue de "azul verde vermelho". Você pode acessar o SemanticValue usando a marca "código".

Devido ao SemanticResultValue("zero", 5) acrescentado ao GrammarBuilder, o objeto raiz SemanticValue no RecognizedPhrase terá um valor de 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);
}

Comentários

Ao executar uma operação de reconhecimento, os String objetos usados no phrases parâmetro são tratados como sequenciais. Por exemplo, se o seguinte SemanticResultValue for usado para construir um Grammar, a entrada para o mecanismo de reconhecimento deverá conter as palavras "a raposa marrom rápida" na sequência a ser reconhecida.

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

O semanticResultKey argumento determina a chave usada para acessar o SemanticValue que pode ser retornado.

Se você construir um Grammar usando um GrammarBuilder objeto que contém uma chave semântica com uma matriz de objetos de cadeia de caracteres, o ValueSemanticValue do produzido por uma operação de reconhecimento será a cadeia de caracteres usada em reconhecimento. No exemplo anterior, isso significa que Value seria "a raposa marrom rápida".

Aplica-se a