Condividi tramite


SemanticResultKey Costruttori

Definizione

Costruisce un'istanza di SemanticResultKey e associa la chiave ai componenti di grammatica.

Overload

Nome Descrizione
SemanticResultKey(String, GrammarBuilder[])

Assegna una chiave semantica a uno o più GrammarBuilder oggetti usati per creare una grammatica di riconoscimento vocale.

SemanticResultKey(String, String[])

Assegna una chiave semantica a una o più String istanze usate per creare una grammatica di riconoscimento vocale.

Commenti

I costruttori per SemanticResultKey specificare un tag di testo (la chiave semantica) e un set di componenti grammaticali da aggiungere a una grammatica di riconoscimento vocale.

I componenti grammaticali possono essere specificati come matrice di GrammarBuilder oggetti o come matrice di String istanze.

Se i componenti grammaticali vengono usati nel riconoscimento, è possibile accedere all'oggetto restituito SemanticValue usando il tag di testo fornito al costruttore di SemanticResultKey come chiave semantica. La Value proprietà dell'istanza SemanticValue verrà determinata dai componenti grammaticali usati nella definizione di SemanticResultKey.

SemanticResultKey(String, GrammarBuilder[])

Origine:
SemanticResultKey.cs
Origine:
SemanticResultKey.cs
Origine:
SemanticResultKey.cs
Origine:
SemanticResultKey.cs

Assegna una chiave semantica a uno o più GrammarBuilder oggetti usati per creare una grammatica di riconoscimento vocale.

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

Parametri

semanticResultKey
String

Tag da utilizzare come chiave semantica per accedere all'istanza SemanticValue associata agli GrammarBuilder oggetti specificati dall'argomento builders .

builders
GrammarBuilder[]

Matrice di componenti grammaticali che verranno associati a un SemanticValue oggetto accessibile con il tag definito in semanticResultKey.

Esempio

Nell'esempio seguente viene creato un oggetto Grammar per riconoscere l'input della password del modulo "My password is ...", dove l'input effettivo viene confrontato con un carattere jolly.

Il carattere jolly viene contrassegnato da un oggetto SpeechRecognizer il cui valore della chiave è "Password". Il SpeechRecognized gestore verifica la presenza di questo tag, ottiene l'input audio della password e verifica la password.

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

}

Commenti

A causa delle conversioni implicite, l'argomento supporta anche oggetti , ChoicesSemanticResultKey, e String .SemanticResultValuebuilders Per altre informazioni sulle conversioni implicite, vedere Implicit.

Quando si esegue un'operazione di riconoscimento, gli GrammarBuilder oggetti forniti nell'argomento builders vengono considerati sequenziali. Se ad esempio si usa quanto segue SemanticResultValue per costruire un Grammaroggetto , l'input al motore di riconoscimento deve contenere le parole "the quick brown fox" in sequenza da riconoscere.

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

L'argomento semanticResultKey contiene il tag utilizzato per accedere all'oggetto SemanticValue che potrebbe essere restituito.

L'oggetto ValueSemanticValue di è determinato dalle GrammarBuilder istanze fornite dal builders parametro .

Se gli GrammarBuilder oggetti non contengono istanze di definizione di SemanticResultValue, il valore di SemanticValue è null.

Se gli GrammarBuilder oggetti forniti nel builders parametro forniscono un'istanza senza tag (non associata a un SemanticResultKey oggetto) SemanticResultValue utilizzata dalla logica di riconoscimento, tale istanza di SemanticResultValue definirà la Value proprietà dell'oggetto SemanticValue generato.

Deve essere presente una sola istanza senza tag SemanticResultValue negli GrammarBuilder oggetti specificati dal builders parametro . Se più istanze di senza tag SemanticResultValue sono associate a SemanticResultKey, ognuna tenterà di impostare il valore dell'oggetto SemanticValue prodotto nel risultato del riconoscimento. Ciò non è consentito e il riconoscitore genererà un'eccezione quando tenta di usare un Grammar creato usando tale SemanticResultKey istanza.

Le istanze di SemanticResultValue contenute negli GrammarBuilder oggetti specificati dal builders parametro e già associate a un altro SemanticResultKey non hanno alcun effetto sull'istanza corrente SemanticResultKey .

Si applica a

SemanticResultKey(String, String[])

Origine:
SemanticResultKey.cs
Origine:
SemanticResultKey.cs
Origine:
SemanticResultKey.cs
Origine:
SemanticResultKey.cs

Assegna una chiave semantica a una o più String istanze usate per creare una grammatica di riconoscimento vocale.

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

Parametri

semanticResultKey
String

Tag da utilizzare per accedere all'istanza SemanticValue associata agli String oggetti specificati dall'argomento phrases .

phrases
String[]

Uno o più String oggetti, il cui testo concatenato verrà associato a un SemanticValue oggetto accessibile con il tag definito in semanticResultKey.

Esempio

Nell'esempio seguente viene creato un oggetto Grammar da un GrammarBuilder oggetto che usa un SemanticResultKeyoggetto , definito da una matrice di String oggetti .

Un motore di riconoscimento che usa il Grammar creato riconoscerà la frase "colore rosso blu blu zero". La semantica dell'oggetto RecognizedPhrase restituito dal riconoscimento conterrà un oggetto SemanticValue con " Value blu verde rosso". È possibile accedere a SemanticValue usando il tag "code".

A causa dell'oggetto SemanticResultValue("zero", 5) aggiunto a , l'oggetto radice SemanticValue in RecognizedPhrase avrà un valore pari a GrammarBuilder5.

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

Commenti

Quando si esegue un'operazione di riconoscimento, gli String oggetti utilizzati nel phrases parametro vengono considerati sequenziali. Se ad esempio si usa quanto segue SemanticResultValue per costruire un Grammaroggetto , l'input al motore di riconoscimento deve contenere le parole "the quick brown fox" in sequenza da riconoscere.

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

L'argomento semanticResultKey determina la chiave utilizzata per accedere all'oggetto SemanticValue che potrebbe essere restituito.

Se si costruisce un oggetto utilizzando un GrammarGrammarBuilder oggetto che contiene una chiave semantica con una matrice di oggetti stringa, l'oggetto Value dell'oggetto SemanticValue prodotto da un'operazione di riconoscimento sarà la stringa utilizzata nel riconoscimento. Nell'esempio precedente questo significa che Value sarebbe "la volpe marrone veloce".

Si applica a