SpeechRecognitionEngine.EmulateRecognizeAsync 方法

定義

在非同步語音辨識中使用文字代替音訊,模擬對語音辨識器的輸入。

多載

EmulateRecognizeAsync(String)

在語音辨識器上模擬片語輸入,針對非同步的語音辨識使用文字來代替音訊。

EmulateRecognizeAsync(RecognizedWordUnit[], CompareOptions)

在語音辨識器上模擬特定單字輸入,針對非同步的語音辨識使用 RecognizedWordUnit 物件陣列以取代音訊,並指定辨識器如何處理單字間的 Unicode 比較以及已載入的語音辨識文法。

EmulateRecognizeAsync(String, CompareOptions)

在語音辨識器上模擬片語輸入,針對非同步的語音辨識使用文字來代替音訊,並指定辨識器如何處理片語間的 Unicode 比較以及已載入的語音辨識文法。

備註

這些方法會略過系統音訊輸入,並將文字提供給辨識器做為 String 物件或物件的陣列 RecognizedWordUnit 。 當您測試或偵錯應用程式或文法時,這會很有説明。 例如,您可以使用模擬來判斷文字是否在文法中,以及辨識文字時傳回的語意。 SetInputToNull使用 方法,在模擬作業期間停用語音辨識引擎的音訊輸入。

語音辨識器會 SpeechDetected 引發 、 SpeechHypothesizedSpeechRecognitionRejectedSpeechRecognized 事件,就像辨識作業未模擬一樣。 當辨識器完成非同步辨識作業時,它會引發 EmulateRecognizeCompleted 事件。 辨識器會忽略新的行和額外的空白字元,並將標點符號視為常值輸入。

注意

RecognitionResult語音辨識器為了回應模擬輸入所產生的物件具有 其 Audio 屬性的 值 null

若要模擬同步辨識,請使用 EmulateRecognize 方法。

EmulateRecognizeAsync(String)

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

在語音辨識器上模擬片語輸入,針對非同步的語音辨識使用文字來代替音訊。

public:
 void EmulateRecognizeAsync(System::String ^ inputText);
public void EmulateRecognizeAsync (string inputText);
member this.EmulateRecognizeAsync : string -> unit
Public Sub EmulateRecognizeAsync (inputText As String)

參數

inputText
String

辨識作業的輸出。

例外狀況

辨識器沒有載入語音辨識文法,或辨識器有尚未完成的非同步辨識作業。

inputTextnull

inputText 為空字串 ("")。

範例

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

TestRecognizeAsync("Smith")...  
 SpeechDetected event raised.  
 SpeechRecognized event raised.  
  Grammar = Smith; Text = Smith  
 EmulateRecognizeCompleted event raised.  
  Grammar = Smith; Text = Smith  
 Done.  

TestRecognizeAsync("Jones")...  
 SpeechDetected event raised.  
 SpeechRecognized event raised.  
  Grammar = Jones; Text = Jones  
 EmulateRecognizeCompleted event raised.  
  Grammar = Jones; Text = Jones  
 Done.  

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

TestRecognizeAsync("Mister Smith")...  
 SpeechDetected event raised.  
 SpeechRecognized event raised.  
  Grammar = Smith; Text = mister Smith  
 EmulateRecognizeCompleted event raised.  
  Grammar = Smith; Text = mister Smith  
 Done.  

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

namespace SreEmulateRecognizeAsync  
{  
  class Program  
  {  
    // Indicate when an asynchronous operation is finished.  
    static bool completed;  

    static void Main(string[] args)  
    {  
      using (SpeechRecognitionEngine recognizer =  
        new SpeechRecognitionEngine(new CultureInfo("en-US")))  
      {  
        // Load grammars.  
        recognizer.LoadGrammar(CreateNameGrammar("Smith"));  
        recognizer.LoadGrammar(CreateNameGrammar("Jones"));  

        // Configure the audio input.  
        recognizer.SetInputToNull();  

        // Add event handlers for the events raised by the  
        // EmulateRecognizeAsync 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);  
        recognizer.EmulateRecognizeCompleted +=  
          new EventHandler<EmulateRecognizeCompletedEventArgs>(  
            EmulateRecognizeCompletedHandler);  

        // Start four asynchronous emulated recognition operations.  
        TestRecognizeAsync(recognizer, "Smith");  
        TestRecognizeAsync(recognizer, "Jones");  
        TestRecognizeAsync(recognizer, "Mister");  
        TestRecognizeAsync(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 asynchronous  
    // recognition.  
    private static void TestRecognizeAsync(  
      SpeechRecognitionEngine recognizer, string input)  
    {  
      completed = false;  

      Console.WriteLine("TestRecognizeAsync(\"{0}\")...", input);  
      recognizer.EmulateRecognizeAsync(input);  

      // Wait for the operation to complete.  
      while (!completed)  
      {  
        Thread.Sleep(333);  
      }  

      Console.WriteLine(" Done.");  
      Console.WriteLine();  
    }  

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

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

    // Handle events.  
    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.");  
      }  
    }  

    static void EmulateRecognizeCompletedHandler(  
      object sender, EmulateRecognizeCompletedEventArgs e)  
    {  
      Console.WriteLine(" EmulateRecognizeCompleted event raised.");  

      if (e.Error != null)  
      {  
        Console.WriteLine("  {0} exception encountered: {1}:",  
          e.Error.GetType().Name, e.Error.Message);  
      }  
      else if (e.Cancelled)  
      {  
        Console.WriteLine("  Operation cancelled.");  
      }  
      else 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.");  
      }  

      completed = true;  
    }  
  }  
}

備註

語音辨識器會 SpeechDetected 引發 、 SpeechHypothesizedSpeechRecognitionRejectedSpeechRecognized 事件,就像辨識作業未模擬一樣。 當辨識器完成非同步辨識作業時,它會引發 EmulateRecognizeCompleted 事件。

當將文法規則套用至輸入片語時,隨附于 Vista 和 Windows 7 的辨識器會忽略大小寫和字元寬度。 如需這種比較類型的詳細資訊,請參閱 CompareOptions 列舉值 OrdinalIgnoreCaseIgnoreWidth 。 辨識器也會忽略新行和額外的空白字元,並將標點符號視為常值輸入。

這個方法會儲存在工作中,它會傳回方法同步對應專案可以擲回的所有非使用狀況例外狀況。 如果例外狀況儲存在傳回的工作中,則會在等候工作時擲回該例外狀況。 使用狀況例外狀況,例如 ArgumentException ,仍會同步擲回。 如需預存的例外狀況,請參閱 所 EmulateRecognize(String) 擲回的例外狀況。

另請參閱

適用於

EmulateRecognizeAsync(RecognizedWordUnit[], CompareOptions)

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

在語音辨識器上模擬特定單字輸入,針對非同步的語音辨識使用 RecognizedWordUnit 物件陣列以取代音訊,並指定辨識器如何處理單字間的 Unicode 比較以及已載入的語音辨識文法。

public:
 void EmulateRecognizeAsync(cli::array <System::Speech::Recognition::RecognizedWordUnit ^> ^ wordUnits, System::Globalization::CompareOptions compareOptions);
public void EmulateRecognizeAsync (System.Speech.Recognition.RecognizedWordUnit[] wordUnits, System.Globalization.CompareOptions compareOptions);
member this.EmulateRecognizeAsync : System.Speech.Recognition.RecognizedWordUnit[] * System.Globalization.CompareOptions -> unit
Public Sub EmulateRecognizeAsync (wordUnits As RecognizedWordUnit(), compareOptions As CompareOptions)

參數

wordUnits
RecognizedWordUnit[]

文字單位陣列,包含辨識作業的輸入。

compareOptions
CompareOptions

列舉值的位元組合,描述要用於模擬辨識作業的比較類型。

例外狀況

辨識器沒有載入語音辨識文法,或辨識器有尚未完成的非同步辨識作業。

wordUnitsnull

wordUnits 包含一個或多個 null 項目。

compareOptions 包含 IgnoreNonSpaceIgnoreSymbolsStringSort 旗標。

備註

語音辨識器會 SpeechDetected 引發 、 SpeechHypothesizedSpeechRecognitionRejectedSpeechRecognized 事件,就像辨識作業未模擬一樣。 當辨識器完成非同步辨識作業時,它會引發 EmulateRecognizeCompleted 事件。

辨識器會在將文法規則套用至輸入片語時使用 compareOptions 。 隨附于 Vista 和 Windows 7 的辨識器會在 或 IgnoreCase 值存在時 OrdinalIgnoreCase 忽略大小寫。 辨識器一律會忽略字元寬度,且永遠不會忽略假名類型。 辨識器也會忽略新行和額外的空白字元,並將標點符號視為常值輸入。 如需字元寬度和假名類型的詳細資訊,請參閱 CompareOptions 列舉。

這個方法會儲存在工作中,它會傳回方法同步對應專案可以擲回的所有非使用狀況例外狀況。 如果例外狀況儲存在傳回的工作中,則會在等候工作時擲回該例外狀況。 使用狀況例外狀況,例如 ArgumentException ,仍會同步擲回。 如需預存的例外狀況,請參閱 所 EmulateRecognize(RecognizedWordUnit[], CompareOptions) 擲回的例外狀況。

另請參閱

適用於

EmulateRecognizeAsync(String, CompareOptions)

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

在語音辨識器上模擬片語輸入,針對非同步的語音辨識使用文字來代替音訊,並指定辨識器如何處理片語間的 Unicode 比較以及已載入的語音辨識文法。

public:
 void EmulateRecognizeAsync(System::String ^ inputText, System::Globalization::CompareOptions compareOptions);
public void EmulateRecognizeAsync (string inputText, System.Globalization.CompareOptions compareOptions);
member this.EmulateRecognizeAsync : string * System.Globalization.CompareOptions -> unit
Public Sub EmulateRecognizeAsync (inputText As String, compareOptions As CompareOptions)

參數

inputText
String

辨識作業的輸入片語。

compareOptions
CompareOptions

列舉值的位元組合,描述要用於模擬辨識作業的比較類型。

例外狀況

辨識器沒有載入語音辨識文法,或辨識器有尚未完成的非同步辨識作業。

inputTextnull

inputText 為空字串 ("")。

compareOptions 包含 IgnoreNonSpaceIgnoreSymbolsStringSort 旗標。

備註

語音辨識器會 SpeechDetected 引發 、 SpeechHypothesizedSpeechRecognitionRejectedSpeechRecognized 事件,就像辨識作業未模擬一樣。 當辨識器完成非同步辨識作業時,它會引發 EmulateRecognizeCompleted 事件。

辨識器會在將文法規則套用至輸入片語時使用 compareOptions 。 隨附于 Vista 和 Windows 7 的辨識器會在 或 IgnoreCase 值存在時 OrdinalIgnoreCase 忽略大小寫。 辨識器一律會忽略字元寬度,且永遠不會忽略假名類型。 辨識器也會忽略新行和額外的空白字元,並將標點符號視為常值輸入。 如需字元寬度和假名類型的詳細資訊,請參閱 CompareOptions 列舉。

這個方法會儲存在工作中,它會傳回方法同步對應專案可以擲回的所有非使用狀況例外狀況。 如果例外狀況儲存在傳回的工作中,則會在等候工作時擲回該例外狀況。 使用狀況例外狀況,例如 ArgumentException ,仍會同步擲回。 如需預存的例外狀況,請參閱 所 EmulateRecognize(String, CompareOptions) 擲回的例外狀況。

另請參閱

適用於