SpeechRecognitionEngine.EmulateRecognizeAsync Metoda

Definice

Emuluje vstup do rozpoznávání řeči pomocí textu namísto zvuku pro asynchronní rozpoznávání řeči.

Přetížení

EmulateRecognizeAsync(String)

Emuluje vstup fráze do rozpoznávání řeči pomocí textu namísto zvuku pro asynchronní rozpoznávání řeči.

EmulateRecognizeAsync(RecognizedWordUnit[], CompareOptions)

Emuluje vstup konkrétních slov do rozpoznávání řeči pomocí pole RecognizedWordUnit objektů namísto zvuku pro asynchronní rozpoznávání řeči a určuje, jak rozpoznávací nástroj zpracovává porovnání slov v kódování Unicode a načtených gramatik rozpoznávání řeči.

EmulateRecognizeAsync(String, CompareOptions)

Emuluje vstup frázi do rozpoznávání řeči, používá místo zvuku text pro asynchronní rozpoznávání řeči a určuje, jak rozpoznávací nástroj zpracovává porovnání mezi frází a načtenou gramatikou rozpoznávání řeči v kódování Unicode.

Poznámky

Tyto metody obcházejí systémový zvukový vstup a poskytují text rozpoznávání jako String objekty nebo pole RecognizedWordUnit objektů. To může být užitečné při testování nebo ladění aplikace nebo gramatiky. Pomocí emulace můžete například určit, jestli je slovo v gramatice a jaká sémantika se vrátí, když je slovo rozpoznáno. SetInputToNull Pomocí metody můžete zakázat zvukový vstup do modulu rozpoznávání řeči během operací emulace.

Rozpoznávání řeči vyvolá SpeechDetectedudálosti , SpeechHypothesized, SpeechRecognitionRejecteda SpeechRecognized , jako by operace rozpoznávání nebyla emulována. Když rozpoznávání dokončí operaci asynchronního rozpoznávání, vyvolá EmulateRecognizeCompleted událost. Rozpoznávání ignoruje nové řádky a nadbytečné prázdné znaky a interpunkci považuje za vstup literálu.

Poznámka

Objekt RecognitionResult vygenerovaný rozpoznáváním řeči v reakci na emulovaný vstup má hodnotu null pro jeho Audio vlastnost.

K emulaci synchronního rozpoznávání použijte metodu EmulateRecognize .

EmulateRecognizeAsync(String)

Zdroj:
SpeechRecognitionEngine.cs
Zdroj:
SpeechRecognitionEngine.cs
Zdroj:
SpeechRecognitionEngine.cs

Emuluje vstup fráze do rozpoznávání řeči pomocí textu namísto zvuku pro asynchronní rozpoznávání řeči.

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

Parametry

inputText
String

Vstup pro operaci rozpoznávání.

Výjimky

Rozpoznávání nemá načtené žádné gramatiky rozpoznávání řeči nebo má asynchronní operaci rozpoznávání, která ještě není dokončena.

inputText je null.

inputText je prázdný řetězec ("").

Příklady

Následující příklad kódu je součástí konzolové aplikace, která demonstruje asynchronní emulovaný vstup, přidružené výsledky rozpoznávání a přidružené události vyvolané rozpoznáváním řeči. Příklad vygeneruje následující výstup.

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

Poznámky

Rozpoznávání řeči vyvolá SpeechDetectedudálosti , SpeechHypothesized, SpeechRecognitionRejecteda SpeechRecognized , jako by operace rozpoznávání nebyla emulována. Když rozpoznávání dokončí operaci asynchronního rozpoznávání, vyvolá EmulateRecognizeCompleted událost.

Rozpoznávatelé, které se dodávají s Vista a Windows 7, při použití gramatických pravidel na vstupní frázi ignorují šířku písmen a znaků. Další informace o tomto typu porovnání najdete ve výčtu CompareOptions hodnot OrdinalIgnoreCase a IgnoreWidth. Rozpoznávatelé také ignorují nové řádky a nadbytečné prázdné znaky a zacházejí s interpunkcí jako s literálovým vstupem.

Tato metoda ukládá do úlohy, která vrací všechny výjimky nesouvisejí s používáním, které může vyvolat synchronní protějšek metody. Pokud je ve vrácené úloze uložena výjimka, bude tato výjimka vyvolána při čekání na úkol. Výjimky použití, například ArgumentException, jsou stále vyvolány synchronně. Informace o uložených výjimkách najdete v tématu Výjimky vyvolané nástrojem EmulateRecognize(String).

Viz také

Platí pro

EmulateRecognizeAsync(RecognizedWordUnit[], CompareOptions)

Zdroj:
SpeechRecognitionEngine.cs
Zdroj:
SpeechRecognitionEngine.cs
Zdroj:
SpeechRecognitionEngine.cs

Emuluje vstup konkrétních slov do rozpoznávání řeči pomocí pole RecognizedWordUnit objektů namísto zvuku pro asynchronní rozpoznávání řeči a určuje, jak rozpoznávací nástroj zpracovává porovnání slov v kódování Unicode a načtených gramatik rozpoznávání řeči.

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)

Parametry

wordUnits
RecognizedWordUnit[]

Pole slov jednotek, které obsahuje vstup pro operaci rozpoznávání.

compareOptions
CompareOptions

Bitové kombinace hodnot výčtu, které popisují typ porovnání, který se má použít pro operaci emulovaného rozpoznávání.

Výjimky

Rozpoznávání nemá načtené žádné gramatiky rozpoznávání řeči nebo má asynchronní operaci rozpoznávání, která ještě není dokončena.

wordUnits je null.

wordUnits obsahuje jeden nebo více null prvků.

compareOptionsIgnoreNonSpaceobsahuje příznak , IgnoreSymbolsnebo StringSort .

Poznámky

Rozpoznávání řeči vyvolá SpeechDetectedudálosti , SpeechHypothesized, SpeechRecognitionRejecteda SpeechRecognized , jako by operace rozpoznávání nebyla emulována. Když rozpoznávání dokončí operaci asynchronního rozpoznávání, vyvolá EmulateRecognizeCompleted událost.

Rozpoznávání používá compareOptions , když na vstupní frázi aplikuje gramatická pravidla. Rozpoznávatelé, které se dodávají s Vista a Windows 7, ignorují případ, pokud OrdinalIgnoreCase je hodnota nebo IgnoreCase . Rozpoznávatelé vždy ignorují šířku znaku a nikdy neignorují typ Kana. Rozpoznávatelé také ignorují nové řádky a nadbytečné prázdné znaky a zacházejí s interpunkcí jako s literálovým vstupem. Další informace o šířce znaku a typu Kana najdete ve výčtu CompareOptions .

Tato metoda ukládá do úlohy, která vrací všechny výjimky nesouvisejí s používáním, které může vyvolat synchronní protějšek metody. Pokud je ve vrácené úloze uložena výjimka, bude tato výjimka vyvolána při čekání na úkol. Výjimky použití, například ArgumentException, jsou stále vyvolány synchronně. Informace o uložených výjimkách najdete v tématu Výjimky vyvolané nástrojem EmulateRecognize(RecognizedWordUnit[], CompareOptions).

Viz také

Platí pro

EmulateRecognizeAsync(String, CompareOptions)

Zdroj:
SpeechRecognitionEngine.cs
Zdroj:
SpeechRecognitionEngine.cs
Zdroj:
SpeechRecognitionEngine.cs

Emuluje vstup frázi do rozpoznávání řeči, používá místo zvuku text pro asynchronní rozpoznávání řeči a určuje, jak rozpoznávací nástroj zpracovává porovnání mezi frází a načtenou gramatikou rozpoznávání řeči v kódování 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)

Parametry

inputText
String

Vstupní fráze pro operaci rozpoznávání.

compareOptions
CompareOptions

Bitové kombinace hodnot výčtu, které popisují typ porovnání, který se má použít pro operaci emulovaného rozpoznávání.

Výjimky

Rozpoznávání nemá načtené žádné gramatiky rozpoznávání řeči nebo má asynchronní operaci rozpoznávání, která ještě není dokončena.

inputText je null.

inputText je prázdný řetězec ("").

compareOptionsIgnoreNonSpaceobsahuje příznak , IgnoreSymbolsnebo StringSort .

Poznámky

Rozpoznávání řeči vyvolá SpeechDetectedudálosti , SpeechHypothesized, SpeechRecognitionRejecteda SpeechRecognized , jako by operace rozpoznávání nebyla emulována. Když rozpoznávání dokončí operaci asynchronního rozpoznávání, vyvolá EmulateRecognizeCompleted událost.

Rozpoznávání používá compareOptions , když na vstupní frázi aplikuje gramatická pravidla. Rozpoznávatelé, které se dodávají s Vista a Windows 7, ignorují případ, pokud OrdinalIgnoreCase je hodnota nebo IgnoreCase . Rozpoznávatelé vždy ignorují šířku znaku a nikdy neignorují typ Kana. Rozpoznávatelé také ignorují nové řádky a nadbytečné prázdné znaky a zacházejí s interpunkcí jako s literálovým vstupem. Další informace o šířce znaku a typu Kana najdete ve výčtu CompareOptions .

Tato metoda ukládá do úlohy, která vrací všechny výjimky nesouvisejí s používáním, které může vyvolat synchronní protějšek metody. Pokud je ve vrácené úloze uložena výjimka, bude tato výjimka vyvolána při čekání na úkol. Výjimky použití, například ArgumentException, jsou stále vyvolány synchronně. Informace o uložených výjimkách najdete v tématu Výjimky vyvolané nástrojem EmulateRecognize(String, CompareOptions).

Viz také

Platí pro