語言

SpeechRecognitionEngine.EmulateRecognize 方法

定義

模擬語音辨識器的輸入,使用文字取代音訊進行同步語音辨識。

多載

名稱 Description
EmulateRecognize(String)

模擬短語輸入給語音識別器,並以文字取代音訊進行同步語音辨識。

EmulateRecognize(RecognizedWordUnit[], CompareOptions)

模擬特定單字輸入至語音識別器,使用文字取代音訊進行同步語音辨識,並指定識別器如何處理單字與載入語音辨識文法的 Unicode 比較。

EmulateRecognize(String, CompareOptions)

模擬短語輸入至語音辨識器,使用文字取代音訊進行同步語音辨識,並指定識別器如何處理片語與載入語音辨識文法之間的 Unicode 比較。

備註

這些方法繞過系統音訊輸入,將文字以物件或物件陣列String的形式提供給識別器RecognizedWordUnit。 這在測試或除錯應用程式或文法時會很有幫助。 例如,你可以用模擬來判斷一個單字是否屬於文法,以及當該單字被識別時會回傳哪些語意。 使用此 SetInputToNull 方法在模擬操作時停用語音識別引擎的音訊輸入。

語音識別器會像沒有模擬識別操作一樣,將 SpeechDetected、 SpeechHypothesized、 SpeechRecognitionRejectedSpeechRecognized 和事件都升起。 識別器會忽略新增行和多餘的空白,並將標點符號視為字面輸入。

Note

語音識別器回應模擬輸入所產生的 RecognitionResult 物件,其屬性值為 nullAudio 。

要模擬非同步識別,請使用該 EmulateRecognizeAsync 方法。

EmulateRecognize(String)

來源:
SpeechRecognitionEngine.cs
來源:
SpeechRecognitionEngine.cs
來源:
SpeechRecognitionEngine.cs
來源:
SpeechRecognitionEngine.cs

模擬短語輸入給語音識別器,並以文字取代音訊進行同步語音辨識。

public:
 System::Speech::Recognition::RecognitionResult ^ EmulateRecognize(System::String ^ inputText);
public System.Speech.Recognition.RecognitionResult? EmulateRecognize(string inputText);
public System.Speech.Recognition.RecognitionResult EmulateRecognize(string inputText);
member this.EmulateRecognize : string -> System.Speech.Recognition.RecognitionResult
Public Function EmulateRecognize (inputText As String) As RecognitionResult

參數

inputText
String

辨識操作的輸入。

傳回

辨識操作的結果,或 null 操作未成功或識別器未啟用時的結果。

例外狀況

這個識別器沒有載入語音辨識文法。

inputText 是 null。

inputText 是空字串(“”)。

範例

以下程式碼範例是一個主控台應用程式的一部分,展示模擬輸入、相關的辨識結果,以及語音辨識器所引發的相關事件。 範例產生以下輸出。

TestRecognize("Smith")...
 SpeechDetected event raised.
 SpeechRecognized event raised.
  Grammar = Smith; Text = Smith
...Recognition result text = Smith

TestRecognize("Jones")...
 SpeechDetected event raised.
 SpeechRecognized event raised.
  Grammar = Jones; Text = Jones
...Recognition result text = Jones

TestRecognize("Mister")...
 SpeechDetected event raised.
 SpeechHypothesized event raised.
  Grammar = Smith; Text = mister
 SpeechRecognitionRejected event raised.
  Grammar = <not available>; Text =
...No recognition result.

TestRecognize("Mister Smith")...
 SpeechDetected event raised.
 SpeechRecognized event raised.
  Grammar = Smith; Text = mister Smith
...Recognition result text = mister Smith

press any key to exit...
using System;
using System.Globalization;
using System.Speech.Recognition;

namespace Sre_EmulateRecognize
{
  class Program
  {
    static void Main(string[] args)
    {

      // Create an in-process speech recognizer for the en-US locale.
      using (SpeechRecognitionEngine recognizer =
        new SpeechRecognitionEngine(new CultureInfo("en-US")))
      {

        // Load grammars.
        recognizer.LoadGrammar(CreateNameGrammar("Smith"));
        recognizer.LoadGrammar(CreateNameGrammar("Jones"));

        // Disable audio input to the recognizer.
        recognizer.SetInputToNull();

        // Add handlers for events raised by the EmulateRecognize method.
        recognizer.SpeechDetected +=
          new EventHandler<SpeechDetectedEventArgs>(
            SpeechDetectedHandler);
        recognizer.SpeechHypothesized +=
          new EventHandler<SpeechHypothesizedEventArgs>(
            SpeechHypothesizedHandler);
        recognizer.SpeechRecognitionRejected +=
          new EventHandler<SpeechRecognitionRejectedEventArgs>(
            SpeechRecognitionRejectedHandler);
        recognizer.SpeechRecognized +=
          new EventHandler<SpeechRecognizedEventArgs>(
            SpeechRecognizedHandler);

        // Start four synchronous emulated recognition operations.
        TestRecognize(recognizer, "Smith");
        TestRecognize(recognizer, "Jones");
        TestRecognize(recognizer, "Mister");
        TestRecognize(recognizer, "Mister Smith");
      }

      Console.WriteLine("press any key to exit...");
      Console.ReadKey(true);
    }

    // Create a simple name grammar.
    // Set the grammar name to the surname.
    private static Grammar CreateNameGrammar(string surname)
    {
      GrammarBuilder builder = new GrammarBuilder("mister", 0, 1);
      builder.Append(surname);

      Grammar nameGrammar = new Grammar(builder);
      nameGrammar.Name = surname;

      return nameGrammar;
    }

    // Send emulated input to the recognizer for synchronous recognition.
    private static void TestRecognize(
      SpeechRecognitionEngine recognizer, string input)
    {
      Console.WriteLine("TestRecognize(\"{0}\")...", input);
      RecognitionResult result =
        recognizer.EmulateRecognize(input,CompareOptions.IgnoreCase);
      if (result != null)
      {
        Console.WriteLine("...Recognition result text = {0}",
          result.Text ?? "<null>");
      }
      else
      {
        Console.WriteLine("...No recognition result.");
      }
      Console.WriteLine();
    }

    static void SpeechDetectedHandler(
      object sender, SpeechDetectedEventArgs e)
    {
      Console.WriteLine(" SpeechDetected event raised.");
    }

    // Handle events.
    static void SpeechHypothesizedHandler(
      object sender, SpeechHypothesizedEventArgs e)
    {
      Console.WriteLine(" SpeechHypothesized event raised.");
      if (e.Result != null)
      {
        Console.WriteLine("  Grammar = {0}; Text = {1}",
          e.Result.Grammar.Name ?? "<none>", e.Result.Text);
      }
      else
      {
        Console.WriteLine("  No recognition result available.");
      }
    }

    static void SpeechRecognitionRejectedHandler(
      object sender, SpeechRecognitionRejectedEventArgs e)
    {
      Console.WriteLine(" SpeechRecognitionRejected event raised.");
      if (e.Result != null)
      {
        string grammarName;
        if (e.Result.Grammar != null)
        {
          grammarName = e.Result.Grammar.Name ?? "<none>";
        }
        else
        {
          grammarName = "<not available>";
        }
        Console.WriteLine("  Grammar = {0}; Text = {1}",
          grammarName, e.Result.Text);
      }
      else
      {
        Console.WriteLine("  No recognition result available.");
      }
    }

    static void SpeechRecognizedHandler(
      object sender, SpeechRecognizedEventArgs e)
    {
      Console.WriteLine(" SpeechRecognized event raised.");
      if (e.Result != null)
      {
        Console.WriteLine("  Grammar = {0}; Text = {1}",
          e.Result.Grammar.Name ?? "<none>", e.Result.Text);
      }
      else
      {
        Console.WriteLine("  No recognition result available.");
      }
    }
  }
}

備註

語音識別器會像沒有模擬識別操作一樣,將 SpeechDetected、 SpeechHypothesized、 SpeechRecognitionRejectedSpeechRecognized 和事件都升起。

Vista 和 Windows 7 附帶的識別器在對輸入片語套用文法規則時,會忽略大小寫和字元寬度。 關於此類比較的更多資訊,請參閱 CompareOptions 列舉值 OrdinalIgnoreCase 與 IgnoreWidth。 識別器也會忽略新行和多餘的空白,並將標點符號視為字面輸入。

另請參閱

適用於

EmulateRecognize(RecognizedWordUnit[], CompareOptions)

來源:
SpeechRecognitionEngine.cs
來源:
SpeechRecognitionEngine.cs
來源:
SpeechRecognitionEngine.cs
來源:
SpeechRecognitionEngine.cs

模擬特定單字輸入至語音識別器,使用文字取代音訊進行同步語音辨識,並指定識別器如何處理單字與載入語音辨識文法的 Unicode 比較。

public:
 System::Speech::Recognition::RecognitionResult ^ EmulateRecognize(cli::array <System::Speech::Recognition::RecognizedWordUnit ^> ^ wordUnits, System::Globalization::CompareOptions compareOptions);
public System.Speech.Recognition.RecognitionResult? EmulateRecognize(System.Speech.Recognition.RecognizedWordUnit[] wordUnits, System.Globalization.CompareOptions compareOptions);
public System.Speech.Recognition.RecognitionResult EmulateRecognize(System.Speech.Recognition.RecognizedWordUnit[] wordUnits, System.Globalization.CompareOptions compareOptions);
member this.EmulateRecognize : System.Speech.Recognition.RecognizedWordUnit[] * System.Globalization.CompareOptions -> System.Speech.Recognition.RecognitionResult
Public Function EmulateRecognize (wordUnits As RecognizedWordUnit(), compareOptions As CompareOptions) As RecognitionResult

參數

wordUnits
RecognizedWordUnit[]

一個包含識別操作輸入的字單位陣列。

compareOptions
CompareOptions

以位元組合列出描述用於模擬識別操作的比較類型。

傳回

辨識操作的結果,或 null 操作未成功或識別器未啟用時的結果。

例外狀況

這個識別器沒有載入語音辨識文法。

wordUnits 是 null。

wordUnits 包含一個或多個 null 元素。

compareOptions 包含 IgnoreNonSpace、 IgnoreSymbols或 StringSort flag。

備註

語音識別器會像沒有模擬識別操作一樣,將 SpeechDetected、 SpeechHypothesized、 SpeechRecognitionRejectedSpeechRecognized 和事件都升起。

識別器在對輸入片語套用文法規則時會使用 compareOptions 。 Vista 和 Windows 7 附帶的識別器如果 OrdinalIgnoreCase 有 or IgnoreCase 值,會忽略大小寫。 識別器總是忽略字寬,且從不忽略假名類型。 識別器也會忽略新行和多餘的空白,並將標點符號視為字面輸入。 關於字寬度與假名類型,請參閱列舉。CompareOptions

另請參閱

適用於

EmulateRecognize(String, CompareOptions)

來源:
SpeechRecognitionEngine.cs
來源:
SpeechRecognitionEngine.cs
來源:
SpeechRecognitionEngine.cs
來源:
SpeechRecognitionEngine.cs

模擬短語輸入至語音辨識器,使用文字取代音訊進行同步語音辨識,並指定識別器如何處理片語與載入語音辨識文法之間的 Unicode 比較。

public:
 System::Speech::Recognition::RecognitionResult ^ EmulateRecognize(System::String ^ inputText, System::Globalization::CompareOptions compareOptions);
public System.Speech.Recognition.RecognitionResult? EmulateRecognize(string inputText, System.Globalization.CompareOptions compareOptions);
public System.Speech.Recognition.RecognitionResult EmulateRecognize(string inputText, System.Globalization.CompareOptions compareOptions);
member this.EmulateRecognize : string * System.Globalization.CompareOptions -> System.Speech.Recognition.RecognitionResult
Public Function EmulateRecognize (inputText As String, compareOptions As CompareOptions) As RecognitionResult

參數

inputText
String

識別操作的輸入短語。

compareOptions
CompareOptions

以位元組合列出描述用於模擬識別操作的比較類型。

傳回

辨識操作的結果,或 null 操作未成功或識別器未啟用時的結果。

例外狀況

這個識別器沒有載入語音辨識文法。

inputText 是 null。

inputText 是空字串(“”)。

compareOptions 包含 IgnoreNonSpace、 IgnoreSymbols或 StringSort flag。

備註

語音識別器會像沒有模擬識別操作一樣,將 SpeechDetected、 SpeechHypothesized、 SpeechRecognitionRejectedSpeechRecognized 和事件都升起。

識別器在對輸入片語套用文法規則時會使用 compareOptions 。 Vista 和 Windows 7 附帶的識別器如果 OrdinalIgnoreCase 有 or IgnoreCase 值,會忽略大小寫。 識別器總是忽略字寬,且從不忽略假名類型。 識別器也會忽略新行和多餘的空白,並將標點符號視為字面輸入。 關於字寬度與假名類型,請參閱列舉。CompareOptions

另請參閱

適用於