SpeechRecognitionEngine.EmulateRecognizeAsync Метод

Определение

Эмулирует ввод в распознаватель речи, используя текст вместо аудио для асинхронного распознавания речи.

Перегрузки

EmulateRecognizeAsync(String)

Эмулирует ввод фразы в распознаватель речи, используя текст вместо аудио для асинхронного распознавания речи.

EmulateRecognizeAsync(RecognizedWordUnit[], CompareOptions)

Эмулирует ввод конкретных слов в общий распознаватель речи, используя массив объектов RecognizedWordUnit вместо аудио для асинхронного распознавания речи, и указывает способ обработки распознавателем сравнения Юникода между словами и загруженными грамматиками распознавания речи.

EmulateRecognizeAsync(String, CompareOptions)

Эмулирует ввод фразы в распознаватель речи, используя текст вместо аудио для асинхронного распознавания речи, и указывает способ обработки распознавателем сравнения Юникода между фразой и загруженными грамматиками распознавания речи.

Комментарии

Эти методы обходят системный аудиовход и предоставляют текст распознавательу в виде String объектов или массива RecognizedWordUnit объектов. Это может быть полезно при тестировании или отладке приложения или грамматики. Например, можно использовать эмуляцию, чтобы определить, находится ли слово в грамматике и какая семантика возвращается при распознавании слова. Используйте метод , SetInputToNull чтобы отключить вход звука для модуля распознавания речи во время операций эмуляции.

Распознаватель речи вызывает SpeechDetectedсобытия , SpeechHypothesized, SpeechRecognitionRejectedи SpeechRecognized так, как если бы операция распознавания не эмулировалась. Когда распознаватель завершает асинхронную операцию распознавания, он вызывает EmulateRecognizeCompleted событие . Распознаватель игнорирует новые строки и лишние пробелы и обрабатывает знаки препинания как литеральные входные данные.

Примечание

Объект RecognitionResult , созданный распознавателем речи в ответ на эмулированные входные данные, имеет значение null для своего Audio свойства .

Для эмуляции синхронного распознавания используйте 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

Входные данные для операции распознавания.

Исключения

Для распознавателя нет загруженных грамматик распознавания речи или распознаватель имеет асинхронную операцию распознавания, которая еще не завершена.

inputText имеет значение null.

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события , SpeechHypothesized, SpeechRecognitionRejectedи SpeechRecognized так, как если бы операция распознавания не эмулировалась. Когда распознаватель завершает асинхронную операцию распознавания, он вызывает EmulateRecognizeCompleted событие .

Распознавели, поставляемые с Vista и Windows 7, игнорируют регистр и ширину символов при применении правил грамматики к входной фразе. Дополнительные сведения об этом типе сравнения см. в разделах CompareOptions значения OrdinalIgnoreCase перечисления и IgnoreWidth. Распознавители также игнорируют новые строки и дополнительные пробелы и обрабатывают знаки препинания как литеральные входные данные.

Этот метод сохраняет в задаче все исключения, не относящиеся к использованию, которые может создавать синхронный аналог метода. Если исключение сохраняется в возвращаемой задаче, это исключение будет создано при ожидании задачи. Исключения использования, такие как ArgumentException, по-прежнему создаются синхронно. Хранимые исключения см. в разделе исключения, создаваемые EmulateRecognize(String).

См. также раздел

Применяется к

EmulateRecognizeAsync(RecognizedWordUnit[], CompareOptions)

Исходный код:
SpeechRecognitionEngine.cs
Исходный код:
SpeechRecognitionEngine.cs
Исходный код:
SpeechRecognitionEngine.cs

Эмулирует ввод конкретных слов в общий распознаватель речи, используя массив объектов RecognizedWordUnit вместо аудио для асинхронного распознавания речи, и указывает способ обработки распознавателем сравнения Юникода между словами и загруженными грамматиками распознавания речи.

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

Поразрядное сочетание значений перечисления, описывающих тип сравнения, который требуется использовать для эмулируемой операции распознавания.

Исключения

Для распознавателя нет загруженных грамматик распознавания речи или распознаватель имеет асинхронную операцию распознавания, которая еще не завершена.

wordUnits имеет значение null.

wordUnits содержит один или несколько элементов null.

compareOptions содержит флаг IgnoreNonSpace, IgnoreSymbols или StringSort.

Комментарии

Распознаватель речи вызывает SpeechDetectedсобытия , SpeechHypothesized, SpeechRecognitionRejectedи SpeechRecognized так, как если бы операция распознавания не эмулировалась. Когда распознаватель завершает асинхронную операцию распознавания, он вызывает EmulateRecognizeCompleted событие .

Распознаватель использует compareOptions , когда применяет правила грамматики к входной фразе. Распознавели, поставляемые с Vista и Windows 7, игнорируют регистр, OrdinalIgnoreCase если имеется значение или IgnoreCase . Распознавители всегда игнорируют ширину символов и никогда не пропускают тип Кана. Распознавители также игнорируют новые строки и дополнительные пробелы и обрабатывают знаки препинания как литеральные входные данные. Дополнительные сведения о ширине символов и типе каны см. в перечислении CompareOptions .

Этот метод сохраняет в задаче все исключения, не относящиеся к использованию, которые может создавать синхронный аналог метода. Если исключение сохраняется в возвращаемой задаче, это исключение будет создано при ожидании задачи. Исключения использования, такие как ArgumentException, по-прежнему создаются синхронно. Хранимые исключения см. в разделе исключения, создаваемые EmulateRecognize(RecognizedWordUnit[], CompareOptions).

См. также раздел

Применяется к

EmulateRecognizeAsync(String, CompareOptions)

Исходный код:
SpeechRecognitionEngine.cs
Исходный код:
SpeechRecognitionEngine.cs
Исходный код:
SpeechRecognitionEngine.cs

Эмулирует ввод фразы в распознаватель речи, используя текст вместо аудио для асинхронного распознавания речи, и указывает способ обработки распознавателем сравнения Юникода между фразой и загруженными грамматиками распознавания речи.

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

Поразрядное сочетание значений перечисления, описывающих тип сравнения, который требуется использовать для эмулируемой операции распознавания.

Исключения

Для распознавателя нет загруженных грамматик распознавания речи или распознаватель имеет асинхронную операцию распознавания, которая еще не завершена.

inputText имеет значение null.

inputText является пустой строкой ("").

compareOptions содержит флаг IgnoreNonSpace, IgnoreSymbols или StringSort.

Комментарии

Распознаватель речи вызывает SpeechDetectedсобытия , SpeechHypothesized, SpeechRecognitionRejectedи SpeechRecognized так, как если бы операция распознавания не эмулировалась. Когда распознаватель завершает асинхронную операцию распознавания, он вызывает EmulateRecognizeCompleted событие .

Распознаватель использует compareOptions , когда применяет правила грамматики к входной фразе. Распознавели, поставляемые с Vista и Windows 7, игнорируют регистр, OrdinalIgnoreCase если имеется значение или IgnoreCase . Распознавители всегда игнорируют ширину символов и никогда не пропускают тип Кана. Распознавители также игнорируют новые строки и дополнительные пробелы и обрабатывают знаки препинания как литеральные входные данные. Дополнительные сведения о ширине символов и типе каны см. в перечислении CompareOptions .

Этот метод сохраняет в задаче все исключения, не относящиеся к использованию, которые может создавать синхронный аналог метода. Если исключение сохраняется в возвращаемой задаче, это исключение будет создано при ожидании задачи. Исключения использования, такие как ArgumentException, по-прежнему создаются синхронно. Хранимые исключения см. в разделе исключения, создаваемые EmulateRecognize(String, CompareOptions).

См. также раздел

Применяется к