SemanticResultKey Constructores

Definición

Crea una instancia de SemanticResultKey y asocia la clave a los componentes de gramática.

Sobrecargas

SemanticResultKey(String, GrammarBuilder[])

Asigna una clave semántica a uno o más objetos GrammarBuilder usados para crear una gramática de reconocimiento de voz.

SemanticResultKey(String, String[])

Asigna una clave semántica a una o más instancias de String usadas para crear una gramática de reconocimiento de voz.

Comentarios

Los constructores para SemanticResultKey especificar una etiqueta de texto (la clave semántica) y un conjunto de componentes de gramática que se van a agregar a una gramática de reconocimiento de voz.

Los componentes de gramática se pueden especificar como una matriz de GrammarBuilder objetos o como una matriz de String instancias.

Si los componentes de gramática se usan en el reconocimiento, puede acceder al devuelto SemanticValue mediante la etiqueta de texto proporcionada al constructor de SemanticResultKey como clave semántica. La Value propiedad de la SemanticValue instancia se determinará mediante los componentes de gramática utilizados en la definición de SemanticResultKey.

SemanticResultKey(String, GrammarBuilder[])

Source:
SemanticResultKey.cs
Source:
SemanticResultKey.cs

Asigna una clave semántica a uno o más objetos GrammarBuilder usados para crear una gramática de reconocimiento de voz.

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

La etiqueta que se usará como clave semántica para tener acceso a la instancia de SemanticValue asociada a los objetos GrammarBuilder especificados por el argumento builders.

builders
GrammarBuilder[]

Matriz de componentes de gramática que se asociarán a un objeto SemanticValue accesible mediante la etiqueta definida en semanticResultKey.

Ejemplos

En el ejemplo siguiente se crea un Grammar para reconocer la entrada de contraseña con el formato "Mi contraseña es ...", donde la entrada real coincide con un carácter comodín.

El carácter comodín se etiqueta mediante un cuyo SpeechRecognizer valor de clave es "Password". El SpeechRecognized controlador comprueba la presencia de esta etiqueta, obtiene la entrada de audio de la contraseña y comprueba la contraseña.

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

}

Comentarios

Debido a las conversiones implícitas, el builders argumento también admite SemanticResultValueobjetos , SemanticResultKeyChoices, y String . Para obtener más información sobre las conversiones implícitas, vea Implicit.

Al realizar una operación de reconocimiento, los GrammarBuilder objetos proporcionados en el builders argumento se tratan como secuenciales. Por ejemplo, si se usa lo siguiente SemanticResultValue para construir un Grammar, la entrada al motor de reconocimiento debe contener las palabras "el zorro marrón rápido" en secuencia que se va a reconocer.

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

El semanticResultKey argumento contiene la etiqueta utilizada para tener acceso a la SemanticValue que se puede devolver.

El Value valor de SemanticValue viene determinado por las GrammarBuilder instancias proporcionadas por el builders parámetro .

Si los GrammarBuilder objetos no contienen instancias de definición de SemanticResultValue, el valor de SemanticValue es null.

Si los GrammarBuilder objetos proporcionados en el builders parámetro proporcionan una instancia sin etiquetar (no asociada a un SemanticResultKey objeto) SemanticResultValue utilizada por la lógica de reconocimiento, esa instancia de SemanticResultValue definirá la Value propiedad del SemanticValue que se genera.

Debe haber una y solo una instancia sin etiquetar SemanticResultValue en los GrammarBuilder objetos especificados por el builders parámetro . Si hay varias instancias de no etiquetadas SemanticResultValue asociadas a SemanticResultKey, cada una intentará establecer el valor del SemanticValue generado en el resultado del reconocimiento. Esto no se permite y el reconocedor generará una excepción cuando intente usar un Grammar creado mediante dicha SemanticResultKey instancia.

Las instancias de SemanticResultValue contenidas en los GrammarBuilder objetos especificados por el builders parámetro y ya asociadas a otra SemanticResultKey no tienen ningún efecto en la instancia actual SemanticResultKey .

Se aplica a

SemanticResultKey(String, String[])

Source:
SemanticResultKey.cs
Source:
SemanticResultKey.cs

Asigna una clave semántica a una o más instancias de String usadas para crear una gramática de reconocimiento de voz.

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

La etiqueta que se usará para acceder a la instancia de SemanticValue asociada a los objetos String especificados por el argumento phrases.

phrases
String[]

Uno o más objetos String, cuyo texto concatenado se asociará a un objeto SemanticValue accesible con la etiqueta definida en semanticResultKey.

Ejemplos

En el ejemplo siguiente se crea un objeto Grammar a partir de un GrammarBuilder objeto que usa , SemanticResultKeyque se define mediante una matriz de String objetos .

Un motor de reconocimiento que use el Grammar creado reconocerá la frase "color rojo verde azul cero". La semántica del RecognizedPhrase devuelto por el reconocimiento contendrá un SemanticValue con un Value de "azul verde rojo". Puede acceder a SemanticValue mediante la etiqueta "code".

SemanticResultValue("zero", 5) Debido al objeto anexado a GrammarBuilder, el objeto raíz SemanticValue de RecognizedPhrase tendrá un 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);
}

Comentarios

Al realizar una operación de reconocimiento, los String objetos usados en el phrases parámetro se tratan como secuenciales. Por ejemplo, si se usa lo siguiente SemanticResultValue para construir un Grammar, la entrada al motor de reconocimiento debe contener las palabras "el zorro marrón rápido" en secuencia que se va a reconocer.

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

El semanticResultKey argumento determina la clave usada para tener acceso a la SemanticValue que se puede devolver.

Si construye un Grammar mediante un GrammarBuilder objeto que contiene una clave semántica con una matriz de objetos de cadena, el Value objeto de generado SemanticValue por una operación de reconocimiento será la cadena utilizada en el reconocimiento. En el ejemplo anterior, esto significa que Value sería "el zorro marrón rápido".

Se aplica a