SemanticResultKey Costruttori

Definizione

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

Overload

SemanticResultKey(String, GrammarBuilder[])

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

SemanticResultKey(String, String[])

Assegna una chiave semantica a una o più istanze String utilizzate 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 utilizzati nella definizione di SemanticResultKey.

SemanticResultKey(String, GrammarBuilder[])

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

Assegna una chiave semantica a uno o più oggetti GrammarBuilder utilizzati 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

Il tag da utilizzare come tasto semantico per accedere all'istanza SemanticValue associata agli oggetti di GrammarBuilder specificati dall'argomento di builders .

builders
GrammarBuilder[]

Matrice di componenti della grammatica che verranno associati a un oggetto SemanticValue accessibile tramite 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 corrisponde a un carattere jolly.

Il carattere jolly viene contrassegnato da un oggetto il SpeechRecognizer 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 builders supporta SemanticResultValueanche gli oggetti , SemanticResultKey, Choicese String . 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. Ad esempio, se il codice seguente SemanticResultValue viene usato per costruire un Grammar, l'input al motore di riconoscimento deve contenere le parole "la volpe marrone veloce" 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 SemanticResultValue istanza senza tag 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. Questo non è consentito e il riconoscitore genererà un'eccezione quando tenta di usare un Grammar oggetto creato usando tale SemanticResultKey istanza.

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

Si applica a

SemanticResultKey(String, String[])

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

Assegna una chiave semantica a una o più istanze String utilizzate 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

Il tag da usare per accedere all'istanza SemanticValue associata agli oggetti di Stringspecificati dall'argomento phrases.

phrases
String[]

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

Esempio

Nell'esempio seguente viene creato un Grammar oggetto 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 verde 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. Ad esempio, se il codice seguente SemanticResultValue viene usato per costruire un Grammar, l'input al motore di riconoscimento deve contenere le parole "la volpe marrone veloce" 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 Grammar oggetto utilizzando un GrammarBuilder 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