SpeechRecognitionEngine.EmulateRecognizeAsync Método

Definição

Emula a entrada do reconhecedor de voz, usando texto em vez de áudio para reconhecimento de fala assíncrono.

Sobrecargas

Name Description
EmulateRecognizeAsync(String)

Emula a entrada de uma frase para o reconhecedor de voz, usando texto em vez de áudio para reconhecimento de fala assíncrono.

EmulateRecognizeAsync(RecognizedWordUnit[], CompareOptions)

Emula a entrada de palavras específicas para o reconhecedor de voz, usando um array de RecognizedWordUnit objetos em vez de áudio para reconhecimento de fala assíncrono, e especifica como o reconhecor lida com a comparação Unicode entre as palavras e as gramáticas de reconhecimento de fala carregadas.

EmulateRecognizeAsync(String, CompareOptions)

Emula a entrada de uma frase para o reconhecedor de voz, usando texto em vez de áudio para reconhecimento de fala assíncrono, e especifica como o reconhecor lida com a comparação Unicode entre a frase e as gramáticas de reconhecimento de fala carregadas.

Observações

Estes métodos contornam a entrada áudio do sistema e fornecem texto ao reconhecedor como String objetos ou como um array de RecognizedWordUnit objetos. Isto pode ser útil quando está a testar ou a depurar uma aplicação ou gramática. Por exemplo, pode usar emulação para determinar se uma palavra está numa gramática e que semânticas são devolvidas quando a palavra é reconhecida. Use o SetInputToNull método para desativar a entrada de áudio no motor de reconhecimento de voz durante as operações de emulação.

O reconhecedor de fala levanta os SpeechDetectedeventos , SpeechHypothesized, SpeechRecognitionRejected, e SpeechRecognized como se a operação de reconhecimento não fosse emulada. Quando o reconhecedor conclui a operação de reconhecimento assíncrono, levanta o EmulateRecognizeCompleted evento. O reconhecedor ignora novas linhas e espaços em branco extra e trata a pontuação como entrada literal.

Note

O RecognitionResult objeto gerado pelo reconhecedor de fala em resposta à entrada emulada tem um valor de null para a sua Audio propriedade.

Para emular o reconhecimento síncrono, use o EmulateRecognize método.

EmulateRecognizeAsync(String)

Emula a entrada de uma frase para o reconhecedor de voz, usando texto em vez de áudio para reconhecimento de fala assíncrono.

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

Parâmetros

inputText
String

A entrada para a operação de reconhecimento.

Exceções

O recognizer não tem gramáticas de reconhecimento de fala carregadas, ou o recognizer tem uma operação de reconhecimento assíncrono que ainda não está concluída.

inputText é null.

inputText é a corda vazia ("").

Exemplos

O exemplo de código abaixo faz parte de uma aplicação de consola que demonstra entrada emulada assíncrona, os resultados de reconhecimento associados e os eventos associados gerados pelo reconhecedor de voz. O exemplo gera a seguinte saída.

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

Observações

O reconhecedor de fala levanta os SpeechDetectedeventos , SpeechHypothesized, SpeechRecognitionRejected, e SpeechRecognized como se a operação de reconhecimento não fosse emulada. Quando o reconhecedor conclui a operação de reconhecimento assíncrono, levanta o EmulateRecognizeCompleted evento.

Os reconhecedores que vêm com Vista e Windows 7 ignoram a largura de maiúsculas minúsculas e caracteres ao aplicar regras gramaticais à frase de entrada. Para mais informações sobre este tipo de comparação, veja os CompareOptions valores OrdinalIgnoreCase de enumeração e IgnoreWidth. Os reconhecedores também ignoram novas linhas e espaços em branco extra e tratam a pontuação como entrada literal.

Este método armazena na tarefa que devolve todas as exceções de não-utilização que o equivalente síncrono do método pode lançar. Se uma exceção for armazenada na tarefa devolvida, essa exceção será lançada quando a tarefa for aguardada. As exceções de uso, como ArgumentException, ainda são lançadas de forma síncrona. Para as exceções armazenadas, veja as exceções lançadas por EmulateRecognize(String).

Ver também

Aplica-se a

EmulateRecognizeAsync(RecognizedWordUnit[], CompareOptions)

Emula a entrada de palavras específicas para o reconhecedor de voz, usando um array de RecognizedWordUnit objetos em vez de áudio para reconhecimento de fala assíncrono, e especifica como o reconhecor lida com a comparação Unicode entre as palavras e as gramáticas de reconhecimento de fala carregadas.

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)

Parâmetros

wordUnits
RecognizedWordUnit[]

Um array de unidades de palavra que contém a entrada para a operação de reconhecimento.

compareOptions
CompareOptions

Uma combinação bit a bit dos valores de enumeração que descreve o tipo de comparação a usar para a operação de reconhecimento emulado.

Exceções

O recognizer não tem gramáticas de reconhecimento de fala carregadas, ou o recognizer tem uma operação de reconhecimento assíncrono que ainda não está concluída.

wordUnits é null.

wordUnits contém um ou mais null elementos.

compareOptions contém o IgnoreNonSpace, IgnoreSymbols, ou StringSort flag.

Observações

O reconhecedor de fala levanta os SpeechDetectedeventos , SpeechHypothesized, SpeechRecognitionRejected, e SpeechRecognized como se a operação de reconhecimento não fosse emulada. Quando o reconhecedor conclui a operação de reconhecimento assíncrono, levanta o EmulateRecognizeCompleted evento.

O recognizer utiliza compareOptions quando aplica regras gramaticais à frase de entrada. Os reconhecedores que são enviados com Vista e Windows 7 ignoram o caso se o valor OrdinalIgnoreCase ou IgnoreCase estiver presente. Os reconhecedores ignoram sempre a largura do carácter e nunca ignoram o tipo Kana. Os reconhecedores também ignoram novas linhas e espaços em branco extra e tratam a pontuação como entrada literal. Para mais informações sobre largura de caracteres e tipo Kana, consulte a CompareOptions enumeração.

Este método armazena na tarefa que devolve todas as exceções de não-utilização que o equivalente síncrono do método pode lançar. Se uma exceção for armazenada na tarefa devolvida, essa exceção será lançada quando a tarefa for aguardada. As exceções de uso, como ArgumentException, ainda são lançadas de forma síncrona. Para as exceções armazenadas, veja as exceções lançadas por EmulateRecognize(RecognizedWordUnit[], CompareOptions).

Ver também

Aplica-se a

EmulateRecognizeAsync(String, CompareOptions)

Emula a entrada de uma frase para o reconhecedor de voz, usando texto em vez de áudio para reconhecimento de fala assíncrono, e especifica como o reconhecor lida com a comparação Unicode entre a frase e as gramáticas de reconhecimento de fala carregadas.

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)

Parâmetros

inputText
String

A frase de entrada para a operação de reconhecimento.

compareOptions
CompareOptions

Uma combinação bit a bit dos valores de enumeração que descreve o tipo de comparação a usar para a operação de reconhecimento emulado.

Exceções

O recognizer não tem gramáticas de reconhecimento de fala carregadas, ou o recognizer tem uma operação de reconhecimento assíncrono que ainda não está concluída.

inputText é null.

inputText é a corda vazia ("").

compareOptions contém o IgnoreNonSpace, IgnoreSymbols, ou StringSort flag.

Observações

O reconhecedor de fala levanta os SpeechDetectedeventos , SpeechHypothesized, SpeechRecognitionRejected, e SpeechRecognized como se a operação de reconhecimento não fosse emulada. Quando o reconhecedor conclui a operação de reconhecimento assíncrono, levanta o EmulateRecognizeCompleted evento.

O recognizer utiliza compareOptions quando aplica regras gramaticais à frase de entrada. Os reconhecedores que são enviados com Vista e Windows 7 ignoram o caso se o valor OrdinalIgnoreCase ou IgnoreCase estiver presente. Os reconhecedores ignoram sempre a largura do carácter e nunca ignoram o tipo Kana. Os reconhecedores também ignoram novas linhas e espaços em branco extra e tratam a pontuação como entrada literal. Para mais informações sobre largura de caracteres e tipo Kana, consulte a CompareOptions enumeração.

Este método armazena na tarefa que devolve todas as exceções de não-utilização que o equivalente síncrono do método pode lançar. Se uma exceção for armazenada na tarefa devolvida, essa exceção será lançada quando a tarefa for aguardada. As exceções de uso, como ArgumentException, ainda são lançadas de forma síncrona. Para as exceções armazenadas, veja as exceções lançadas por EmulateRecognize(String, CompareOptions).

Ver também

Aplica-se a