共用方式為


SemanticResultKey 建構函式

定義

建構SemanticResultKey的執行個體,並建立索引鍵與文法元件的關聯。

多載

SemanticResultKey(String, GrammarBuilder[])

指派語意索引鍵給一或多個用來建立語音辨識文法的GrammarBuilder物件。

SemanticResultKey(String, String[])

指派語意索引鍵給一或多個用來建立語音辨識文法的String執行個體。

備註

用於 SemanticResultKey 指定文字標記的建構函式 (語意索引鍵) 和一組要新增至語音辨識文法的文法元件。

文法元件可以指定為 物件的陣列 GrammarBuilder ,也可以指定為 實例的 String 陣列。

如果在辨識中使用文法元件,您可以使用提供給 建構 SemanticResultKey 函式的文字標記做為語意索引鍵來存取傳回 SemanticValue 的 。 實例 ValueSemanticValue 屬性將由 定義 SemanticResultKey 中使用的文法元件決定。

SemanticResultKey(String, GrammarBuilder[])

來源:
SemanticResultKey.cs
來源:
SemanticResultKey.cs
來源:
SemanticResultKey.cs

指派語意索引鍵給一或多個用來建立語音辨識文法的GrammarBuilder物件。

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

參數

semanticResultKey
String

要當做語音索引鍵使用的標記會存取與 builders 引數所指定之 SemanticValue 物件相關聯的 GrammarBuilder 執行個體。

builders
GrammarBuilder[]

會和SemanticValue物件(可使用semanticResultKey中所定義的標記來存取)相關聯的文法元件的陣列。

範例

下列範例會 Grammar 建立 來辨識 「My password is ...」格式的密碼輸入,其中實際輸入會與萬用字元相符。

萬用字元會以 SpeechRecognizer 索引鍵值為 「Password」 的 標記。 處理常式 SpeechRecognized 會檢查此標記是否存在、取得密碼的音訊輸入,並驗證密碼。

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

}

備註

由於隱含轉換, builders 引數也支援 SemanticResultValueSemanticResultKeyChoicesString 物件。 如需隱含轉換的詳細資訊,請參閱 Implicit

執行辨識作業時, GrammarBuilder 引數中 builders 提供的物件會被視為循序。 例如,如果使用下列 SemanticResultValue 專案來建構 Grammar ,則辨識引擎的輸入必須包含要辨識的「the quick brown fox」 單字。

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

semanticResultKey 變數包含用來存取可能傳回之 SemanticValue 的標記。

ValueSemanticValue 是由 參數所提供的 builders 實例所決定 GrammarBuilder

GrammarBuilder如果 物件未包含 的定義實例 SemanticResultValue ,則 的值 SemanticValuenull

GrammarBuilder如果 參數中 builders 提供的物件未標記 (與辨識邏輯所使用的物件) SemanticResultValue 實例相關聯 SemanticResultKey ,該實例 SemanticResultValue 將會定義 Value 產生的 屬性 SemanticValue

參數所指定的物件中 GrammarBuilder 應該只有一個且只有一個未標記 SemanticResultValuebuilders 實例。 如果多個未標記 SemanticResultValue 的實例與 SemanticResultKey 相關聯,則每個實例都會嘗試設定辨識結果中產生的 值 SemanticValue 。 不允許這樣做,而且辨識器會在嘗試使用 Grammar 這類 SemanticResultKey 實例建立時產生例外狀況。

SemanticResultValue包含在 參數所指定 builders 之 物件中的 GrammarBuilder 實例,且已經與另一個 SemanticResultKey 物件相關聯,不會影響目前的 SemanticResultKey 實例。

適用於

SemanticResultKey(String, String[])

來源:
SemanticResultKey.cs
來源:
SemanticResultKey.cs
來源:
SemanticResultKey.cs

指派語意索引鍵給一或多個用來建立語音辨識文法的String執行個體。

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

參數

semanticResultKey
String

要使用的標記,存取與 phrases 引數所指定之 String 物件建立關聯的 SemanticValue 執行個體。

phrases
String[]

一或多個 String 物件,其串連文字將會與 SemanticValue 物件相關聯,而此物件可透過 semanticResultKey 中所定義的標記進行存取。

範例

下列範例會 GrammarGrammarBuilder 使用 SemanticResultKey 由 物件陣列 String 定義的 物件建立 。

使用所建立的 Grammar 辨識引擎會辨識片語「紅色綠色藍色零」。 辨識所傳回之 RecognizedPhrase 的語意將包含 SemanticValueValue 具有 「紅色綠色藍色」的 。 您可以使用 「code」 標記來存取 SemanticValue

因為 SemanticResultValue("zero", 5) 附加至 GrammarBuilder ,所以 中的 RecognizedPhraseSemanticValue 物件會有 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);
}

備註

執行辨識作業時, String 參數中使用的 phrases 物件會被視為循序。 例如,如果使用下列 SemanticResultValue 專案來建構 Grammar ,則辨識引擎的輸入必須包含要辨識的「the quick brown fox」 單字。

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

semanticResultKey 變數會決定用來存取可能傳回之 的 SemanticValue 索引鍵。

如果您使用包含具有字串物件陣列之語意索引鍵的 物件來建構 GrammarGrammarBuilderValueSemanticValue 辨識作業所產生的 會是用於辨識的字串。 在上述範例中,這表示 Value 會是「the quick brown fox」。

適用於