Bagikan melalui


SemanticResultKey Konstruktor

Definisi

Membuat instans SemanticResultKey dan mengaitkan kunci dengan komponen tata bahasa.

Overload

SemanticResultKey(String, GrammarBuilder[])

Menetapkan kunci semantik ke satu atau beberapa GrammarBuilder objek yang digunakan untuk membuat tata bahasa pengenalan ucapan.

SemanticResultKey(String, String[])

Menetapkan kunci semantik ke satu atau beberapa String instans yang digunakan untuk membuat tata bahasa pengenalan ucapan.

Keterangan

Konstruktor untuk SemanticResultKey menentukan tag teks (kunci semantik) dan sekumpulan komponen tata bahasa untuk ditambahkan ke tata bahasa pengenalan ucapan.

Komponen tata bahasa dapat ditentukan baik sebagai array GrammarBuilder objek, atau sebagai array String instans.

Jika komponen tata bahasa digunakan dalam pengenalan, Anda dapat mengakses yang dikembalikan SemanticValue menggunakan tag teks yang disediakan ke konstruktor SemanticResultKey sebagai kunci semantik. Properti ValueSemanticValue instans akan ditentukan oleh komponen tata bahasa yang digunakan dalam definisi SemanticResultKey.

SemanticResultKey(String, GrammarBuilder[])

Sumber:
SemanticResultKey.cs
Sumber:
SemanticResultKey.cs
Sumber:
SemanticResultKey.cs
Sumber:
SemanticResultKey.cs

Menetapkan kunci semantik ke satu atau beberapa GrammarBuilder objek yang digunakan untuk membuat tata bahasa pengenalan ucapan.

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

Parameter

semanticResultKey
String

Tag yang akan digunakan sebagai kunci semantik untuk mengakses instans yang SemanticValueGrammarBuilder terkait dengan objek yang ditentukan oleh builders argumen .

builders
GrammarBuilder[]

Array komponen tata bahasa yang akan dikaitkan dengan objek yang SemanticValue dapat diakses dengan tag yang ditentukan dalam semanticResultKey.

Contoh

Contoh berikut membuat Grammar untuk mengenali input kata sandi dari formulir "Kata sandi saya adalah ...", di mana input aktual dicocokkan dengan kartubebas.

Kartubebas ditandai oleh yang SpeechRecognizer nilai kuncinya adalah "Kata Sandi". Handler SpeechRecognized memeriksa keberadaan tag ini, mendapatkan input audio kata sandi, dan memverifikasi kata sandi.

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

}

Keterangan

Karena konversi implisit, builders argumen juga mendukung SemanticResultValueobjek , SemanticResultKey, Choices, dan String . Untuk informasi selengkapnya tentang konversi implisit, lihat Implicit.

Saat melakukan operasi pengenalan, GrammarBuilder objek yang disediakan dalam builders argumen diperlakukan sebagai berurutan. Misalnya, jika berikut SemanticResultValue ini digunakan untuk membangun Grammar, input ke mesin pengenalan harus berisi kata-kata "rubah coklat cepat" secara berurutan untuk dikenali.

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

Argumen semanticResultKey berisi tag yang digunakan untuk mengakses SemanticValue yang mungkin dikembalikan.

Value dari SemanticValue ditentukan oleh GrammarBuilder instans yang disediakan oleh builders parameter .

GrammarBuilder Jika objek tidak berisi instans SemanticResultValueyang mendefinisikan , nilainya SemanticValue adalah null.

GrammarBuilder Jika objek yang disediakan dalam builders parameter memberikan instans yang tidak diberi tag (tidak terkait dengan SemanticResultKey objek) SemanticResultValue yang digunakan oleh logika pengenalanSemanticResultValue, instans tersebut akan menentukan Value properti yang SemanticValue diproduksi.

Harus ada satu, dan hanya satu, instans yang SemanticResultValue tidak diberi tag dalam GrammarBuilder objek yang ditentukan oleh builders parameter . Jika beberapa instans yang tidak diberi tag dikaitkan SemanticResultValue dengan SemanticResultKey, masing-masing akan mencoba untuk mengatur nilai SemanticValue yang dihasilkan dalam hasil pengenalan. Ini tidak diizinkan, dan recognizer akan menghasilkan pengecualian ketika mencoba menggunakan yang Grammar dibuat menggunakan instans tersebut SemanticResultKey .

Instans SemanticResultValue yang terkandung dalam GrammarBuilder objek yang ditentukan oleh builders parameter dan sudah terkait dengan yang lain SemanticResultKey tidak berpengaruh pada instans saat ini SemanticResultKey .

Berlaku untuk

SemanticResultKey(String, String[])

Sumber:
SemanticResultKey.cs
Sumber:
SemanticResultKey.cs
Sumber:
SemanticResultKey.cs
Sumber:
SemanticResultKey.cs

Menetapkan kunci semantik ke satu atau beberapa String instans yang digunakan untuk membuat tata bahasa pengenalan ucapan.

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

Parameter

semanticResultKey
String

Tag yang akan digunakan mengakses instans yang SemanticValue terkait dengan String objek yang ditentukan oleh phrases argumen .

phrases
String[]

Satu atau beberapa String objek, yang teks yang digabungkan akan dikaitkan dengan objek yang SemanticValue dapat diakses dengan tag yang ditentukan dalam semanticResultKey.

Contoh

Contoh berikut membuat Grammar dari GrammarBuilder objek yang menggunakan SemanticResultKey, yang ditentukan oleh array String objek.

Mesin pengenalan yang menggunakan Grammar yang dibuat akan mengenali frasa "warna nol biru hijau merah". Semantik yang RecognizedPhrase dikembalikan oleh pengenalan akan berisi SemanticValue dengan Value "biru hijau merah". Anda dapat mengakses SemanticValue menggunakan tag "kode".

SemanticResultValue("zero", 5) Karena ditambahkan ke GrammarBuilder, objek akar SemanticValue dalam RecognizedPhrase akan memiliki nilai 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);
}

Keterangan

Saat melakukan operasi pengenalan, String objek yang digunakan dalam phrases parameter diperlakukan sebagai berurutan. Misalnya, jika berikut SemanticResultValue ini digunakan untuk membangun Grammar, input ke mesin pengenalan harus berisi kata-kata "rubah coklat cepat" secara berurutan untuk dikenali.

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

Argumen semanticResultKey menentukan kunci yang digunakan untuk mengakses SemanticValue yang mungkin dikembalikan.

Jika Anda membuat Grammar menggunakan GrammarBuilder objek yang berisi kunci semantik dengan array objek string, Value dari yang SemanticValue dihasilkan oleh operasi pengenalan akan menjadi string yang digunakan dalam pengenalan. Dalam contoh sebelumnya, ini berarti itu Value akan menjadi "rubah coklat cepat".

Berlaku untuk