Бөлісу құралы:


SpeechRecognitionEngine.EmulateRecognizeAsync Метод

Определение

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

Перегрузки

Имя Описание
EmulateRecognizeAsync(String)

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

EmulateRecognizeAsync(RecognizedWordUnit[], CompareOptions)

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

EmulateRecognizeAsync(String, CompareOptions)

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

Комментарии

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

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

Замечание

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

Чтобы эмулировать синхронное распознавание EmulateRecognize , используйте этот метод.

EmulateRecognizeAsync(String)

Исходный код:
SpeechRecognitionEngine.cs
Исходный код:
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, SpeechHypothesizedSpeechRecognitionRejectedи SpeechRecognized события, как если бы операция распознавания не эмулировалась. После завершения асинхронной операции распознавания распознаватель вызывает EmulateRecognizeCompleted событие.

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

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

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

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

EmulateRecognizeAsync(RecognizedWordUnit[], CompareOptions)

Исходный код:
SpeechRecognitionEngine.cs
Исходный код:
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содержит IgnoreNonSpaceIgnoreSymbolsфлаг , или StringSort флаг.

Комментарии

Распознаватель речи вызывает SpeechDetected, SpeechHypothesizedSpeechRecognitionRejectedи SpeechRecognized события, как если бы операция распознавания не эмулировалась. После завершения асинхронной операции распознавания распознаватель вызывает EmulateRecognizeCompleted событие.

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

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

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

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

EmulateRecognizeAsync(String, CompareOptions)

Исходный код:
SpeechRecognitionEngine.cs
Исходный код:
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содержит IgnoreNonSpaceIgnoreSymbolsфлаг , или StringSort флаг.

Комментарии

Распознаватель речи вызывает SpeechDetected, SpeechHypothesizedSpeechRecognitionRejectedи SpeechRecognized события, как если бы операция распознавания не эмулировалась. После завершения асинхронной операции распознавания распознаватель вызывает EmulateRecognizeCompleted событие.

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

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

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

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