SpeechRecognitionEngine.RecognizeAsync Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Inicia uma operação de reconhecimento de fala assíncrono.
Sobrecargas
RecognizeAsync() |
Executa uma única operação de reconhecimento de fala síncrona. |
RecognizeAsync(RecognizeMode) |
Executa uma ou mais operações de reconhecimento de fala assíncronas. |
Comentários
Esses métodos executam operações de reconhecimento simples ou múltiplas e assíncronas. O reconhecedor executa cada operação em relação às gramáticas de reconhecimento de fala carregadas e habilitadas.
Durante uma chamada para esse método, o reconhecedor pode gerar os seguintes eventos:
SpeechDetected. Gerado quando o reconhecedor detecta a entrada que pode identificar como fala.
SpeechHypothesized. Gerado quando a entrada cria uma correspondência ambígua com uma das gramáticas ativas.
SpeechRecognitionRejected ou SpeechRecognized. Gerado quando o reconhecedor finaliza uma operação de reconhecimento.
RecognizeCompleted. Gerado quando uma RecognizeAsync operação é concluída.
Para recuperar o resultado de uma operação de reconhecimento assíncrono, anexe um manipulador de eventos ao evento do SpeechRecognized reconhecedor. O reconhecedor gera esse evento sempre que conclui com êxito uma operação de reconhecimento síncrona ou assíncrona. Se o reconhecimento não tiver sido bem-sucedido, a Result propriedade no RecognizeCompletedEventArgs objeto , que você pode acessar no manipulador do RecognizeCompleted evento, será null
.
Uma operação de reconhecimento assíncrono pode falhar pelos seguintes motivos:
A fala não é detectada antes que os intervalos de tempo limite expirem para as BabbleTimeout propriedades ou InitialSilenceTimeout .
O mecanismo de reconhecimento detecta a fala, mas não encontra nenhuma correspondência em nenhum de seus objetos carregados e habilitados Grammar .
O SpeechRecognitionEngine deve ter pelo menos um Grammar objeto carregado antes de executar o reconhecimento. Para carregar uma gramática de reconhecimento de fala, use o LoadGrammar método ou LoadGrammarAsync .
Para modificar como o reconhecedor lida com o tempo de fala ou silêncio em relação ao reconhecimento, use as BabbleTimeoutpropriedades , InitialSilenceTimeout, EndSilenceTimeoute EndSilenceTimeoutAmbiguous .
Para executar o reconhecimento síncrono, use um dos Recognize métodos.
RecognizeAsync()
- Origem:
- SpeechRecognitionEngine.cs
- Origem:
- SpeechRecognitionEngine.cs
Executa uma única operação de reconhecimento de fala síncrona.
public:
void RecognizeAsync();
public void RecognizeAsync ();
member this.RecognizeAsync : unit -> unit
Public Sub RecognizeAsync ()
Exemplos
O exemplo a seguir mostra parte de um aplicativo de console que demonstra o reconhecimento de fala assíncrono básico. O exemplo cria um DictationGrammar, carrega-o em um reconhecedor de fala em processo e executa uma operação de reconhecimento assíncrona. Manipuladores de eventos são incluídos para demonstrar os eventos gerados pelo reconhecedor durante a operação.
using System;
using System.Globalization;
using System.Speech.Recognition;
using System.Threading;
namespace AsynchronousRecognition
{
class Program
{
// Indicate whether asynchronous recognition is complete.
static bool completed;
static void Main(string[] args)
{
// Create an in-process speech recognizer.
using (SpeechRecognitionEngine recognizer =
new SpeechRecognitionEngine(new CultureInfo("en-US")))
{
// Create a grammar for choosing cities for a flight.
Choices cities = new Choices(new string[]
{ "Los Angeles", "New York", "Chicago", "San Francisco", "Miami", "Dallas" });
GrammarBuilder gb = new GrammarBuilder();
gb.Append("I want to fly from");
gb.Append(cities);
gb.Append("to");
gb.Append(cities);
// Construct a Grammar object and load it to the recognizer.
Grammar cityChooser = new Grammar(gb);
cityChooser.Name = ("City Chooser");
recognizer.LoadGrammarAsync(cityChooser);
// Attach event handlers.
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.RecognizeCompleted +=
new EventHandler<RecognizeCompletedEventArgs>(
RecognizeCompletedHandler);
// Assign input to the recognizer and start an asynchronous
// recognition operation.
recognizer.SetInputToDefaultAudioDevice();
completed = false;
Console.WriteLine("Starting asynchronous recognition...");
recognizer.RecognizeAsync();
// Wait for the operation to complete.
while (!completed)
{
Thread.Sleep(333);
}
Console.WriteLine("Done.");
}
Console.WriteLine();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
// Handle the SpeechDetected event.
static void SpeechDetectedHandler(object sender, SpeechDetectedEventArgs e)
{
Console.WriteLine(" In SpeechDetectedHandler:");
Console.WriteLine(" - AudioPosition = {0}", e.AudioPosition);
}
// Handle the SpeechHypothesized event.
static void SpeechHypothesizedHandler(
object sender, SpeechHypothesizedEventArgs e)
{
Console.WriteLine(" In SpeechHypothesizedHandler:");
string grammarName = "<not available>";
string resultText = "<not available>";
if (e.Result != null)
{
if (e.Result.Grammar != null)
{
grammarName = e.Result.Grammar.Name;
}
resultText = e.Result.Text;
}
Console.WriteLine(" - Grammar Name = {0}; Result Text = {1}",
grammarName, resultText);
}
// Handle the SpeechRecognitionRejected event.
static void SpeechRecognitionRejectedHandler(
object sender, SpeechRecognitionRejectedEventArgs e)
{
Console.WriteLine(" In SpeechRecognitionRejectedHandler:");
string grammarName = "<not available>";
string resultText = "<not available>";
if (e.Result != null)
{
if (e.Result.Grammar != null)
{
grammarName = e.Result.Grammar.Name;
}
resultText = e.Result.Text;
}
Console.WriteLine(" - Grammar Name = {0}; Result Text = {1}",
grammarName, resultText);
}
// Handle the SpeechRecognized event.
static void SpeechRecognizedHandler(
object sender, SpeechRecognizedEventArgs e)
{
Console.WriteLine(" In SpeechRecognizedHandler.");
string grammarName = "<not available>";
string resultText = "<not available>";
if (e.Result != null)
{
if (e.Result.Grammar != null)
{
grammarName = e.Result.Grammar.Name;
}
resultText = e.Result.Text;
}
Console.WriteLine(" - Grammar Name = {0}; Result Text = {1}",
grammarName, resultText);
}
// Handle the RecognizeCompleted event.
static void RecognizeCompletedHandler(
object sender, RecognizeCompletedEventArgs e)
{
Console.WriteLine(" In RecognizeCompletedHandler.");
if (e.Error != null)
{
Console.WriteLine(
" - Error occurred during recognition: {0}", e.Error);
return;
}
if (e.InitialSilenceTimeout || e.BabbleTimeout)
{
Console.WriteLine(
" - BabbleTimeout = {0}; InitialSilenceTimeout = {1}",
e.BabbleTimeout, e.InitialSilenceTimeout);
return;
}
if (e.InputStreamEnded)
{
Console.WriteLine(
" - AudioPosition = {0}; InputStreamEnded = {1}",
e.AudioPosition, e.InputStreamEnded);
}
if (e.Result != null)
{
Console.WriteLine(
" - Grammar = {0}; Text = {1}; Confidence = {2}",
e.Result.Grammar.Name, e.Result.Text, e.Result.Confidence);
Console.WriteLine(" - AudioPosition = {0}", e.AudioPosition);
}
else
{
Console.WriteLine(" - No result.");
}
completed = true;
}
}
}
Comentários
Esse método executa uma única operação de reconhecimento assíncrono. O reconhecedor executa a operação em relação às gramáticas de reconhecimento de fala carregadas e habilitadas.
Durante uma chamada para esse método, o reconhecedor pode gerar os seguintes eventos:
SpeechDetected. Gerado quando o reconhecedor detecta a entrada que pode identificar como fala.
SpeechHypothesized. Gerado quando a entrada cria uma correspondência ambígua com uma das gramáticas ativas.
SpeechRecognitionRejected ou SpeechRecognized. Gerado quando o reconhecedor finaliza uma operação de reconhecimento.
RecognizeCompleted. Gerado quando uma RecognizeAsync operação é concluída.
Para recuperar o resultado de uma operação de reconhecimento assíncrono, anexe um manipulador de eventos ao evento do SpeechRecognized reconhecedor. O reconhecedor gera esse evento sempre que conclui com êxito uma operação de reconhecimento síncrona ou assíncrona. Se o reconhecimento não tiver sido bem-sucedido, a Result propriedade no RecognizeCompletedEventArgs objeto , que você pode acessar no manipulador do RecognizeCompleted evento, será null
.
Para executar o reconhecimento síncrono, use um dos Recognize métodos.
Esse método armazena na tarefa que retorna todas as exceções de não uso que o equivalente síncrono do método pode gerar. Se uma exceção for armazenada na tarefa retornada, essa exceção será gerada quando a tarefa for aguardada. Exceções de uso, como ArgumentException, ainda são geradas de forma síncrona. Para as exceções armazenadas, consulte as exceções geradas por Recognize().
Confira também
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)
Aplica-se a
RecognizeAsync(RecognizeMode)
- Origem:
- SpeechRecognitionEngine.cs
- Origem:
- SpeechRecognitionEngine.cs
Executa uma ou mais operações de reconhecimento de fala assíncronas.
public:
void RecognizeAsync(System::Speech::Recognition::RecognizeMode mode);
public void RecognizeAsync (System.Speech.Recognition.RecognizeMode mode);
member this.RecognizeAsync : System.Speech.Recognition.RecognizeMode -> unit
Public Sub RecognizeAsync (mode As RecognizeMode)
Parâmetros
- mode
- RecognizeMode
Indica se uma ou várias operações de reconhecimento devem ser executadas.
Exemplos
O exemplo a seguir mostra parte de um aplicativo de console que demonstra o reconhecimento de fala assíncrono básico. O exemplo cria um DictationGrammar, carrega-o em um reconhecedor de fala em processo e executa várias operações de reconhecimento assíncronas. As operações assíncronas são canceladas após 30 segundos. Manipuladores de eventos são incluídos para demonstrar os eventos gerados pelo reconhecedor durante a operação.
using System;
using System.Globalization;
using System.Speech.Recognition;
using System.Threading;
namespace AsynchronousRecognition
{
class Program
{
// Indicate whether asynchronous recognition is complete.
static bool completed;
static void Main(string[] args)
{
// Create an in-process speech recognizer.
using (SpeechRecognitionEngine recognizer =
new SpeechRecognitionEngine(new CultureInfo("en-US")))
{
// Create a grammar for choosing cities for a flight.
Choices cities = new Choices(new string[] { "Los Angeles", "New York", "Chicago", "San Francisco", "Miami", "Dallas" });
GrammarBuilder gb = new GrammarBuilder();
gb.Append("I want to fly from");
gb.Append(cities);
gb.Append("to");
gb.Append(cities);
// Construct a Grammar object and load it to the recognizer.
Grammar cityChooser = new Grammar(gb);
cityChooser.Name = ("City Chooser");
recognizer.LoadGrammarAsync(cityChooser);
// Attach event handlers.
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.RecognizeCompleted +=
new EventHandler<RecognizeCompletedEventArgs>(
RecognizeCompletedHandler);
// Assign input to the recognizer and start asynchronous
// recognition.
recognizer.SetInputToDefaultAudioDevice();
completed = false;
Console.WriteLine("Starting asynchronous recognition...");
recognizer.RecognizeAsync(RecognizeMode.Multiple);
// Wait 30 seconds, and then cancel asynchronous recognition.
Thread.Sleep(TimeSpan.FromSeconds(30));
recognizer.RecognizeAsyncCancel();
// Wait for the operation to complete.
while (!completed)
{
Thread.Sleep(333);
}
Console.WriteLine("Done.");
}
Console.WriteLine();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
// Handle the SpeechDetected event.
static void SpeechDetectedHandler(object sender, SpeechDetectedEventArgs e)
{
Console.WriteLine(" In SpeechDetectedHandler:");
Console.WriteLine(" - AudioPosition = {0}", e.AudioPosition);
}
// Handle the SpeechHypothesized event.
static void SpeechHypothesizedHandler(
object sender, SpeechHypothesizedEventArgs e)
{
Console.WriteLine(" In SpeechHypothesizedHandler:");
string grammarName = "<not available>";
string resultText = "<not available>";
if (e.Result != null)
{
if (e.Result.Grammar != null)
{
grammarName = e.Result.Grammar.Name;
}
resultText = e.Result.Text;
}
Console.WriteLine(" - Grammar Name = {0}; Result Text = {1}",
grammarName, resultText);
}
// Handle the SpeechRecognitionRejected event.
static void SpeechRecognitionRejectedHandler(
object sender, SpeechRecognitionRejectedEventArgs e)
{
Console.WriteLine(" In SpeechRecognitionRejectedHandler:");
string grammarName = "<not available>";
string resultText = "<not available>";
if (e.Result != null)
{
if (e.Result.Grammar != null)
{
grammarName = e.Result.Grammar.Name;
}
resultText = e.Result.Text;
}
Console.WriteLine(" - Grammar Name = {0}; Result Text = {1}",
grammarName, resultText);
}
// Handle the SpeechRecognized event.
static void SpeechRecognizedHandler(
object sender, SpeechRecognizedEventArgs e)
{
Console.WriteLine(" In SpeechRecognizedHandler.");
string grammarName = "<not available>";
string resultText = "<not available>";
if (e.Result != null)
{
if (e.Result.Grammar != null)
{
grammarName = e.Result.Grammar.Name;
}
resultText = e.Result.Text;
}
Console.WriteLine(" - Grammar Name = {0}; Result Text = {1}",
grammarName, resultText);
}
// Handle the RecognizeCompleted event.
static void RecognizeCompletedHandler(
object sender, RecognizeCompletedEventArgs e)
{
Console.WriteLine(" In RecognizeCompletedHandler.");
if (e.Error != null)
{
Console.WriteLine(
" - Error occurred during recognition: {0}", e.Error);
return;
}
if (e.InitialSilenceTimeout || e.BabbleTimeout)
{
Console.WriteLine(
" - BabbleTimeout = {0}; InitialSilenceTimeout = {1}",
e.BabbleTimeout, e.InitialSilenceTimeout);
return;
}
if (e.InputStreamEnded)
{
Console.WriteLine(
" - AudioPosition = {0}; InputStreamEnded = {1}",
e.AudioPosition, e.InputStreamEnded);
}
if (e.Result != null)
{
Console.WriteLine(
" - Grammar = {0}; Text = {1}; Confidence = {2}",
e.Result.Grammar.Name, e.Result.Text, e.Result.Confidence);
Console.WriteLine(" - AudioPosition = {0}", e.AudioPosition);
}
else
{
Console.WriteLine(" - No result.");
}
completed = true;
}
}
}
Comentários
Se mode
for Multiple, o reconhecedor continuará executando operações de reconhecimento assíncronas até que o RecognizeAsyncCancel método ou RecognizeAsyncStop seja chamado.
Durante uma chamada para esse método, o reconhecedor pode gerar os seguintes eventos:
SpeechDetected. Gerado quando o reconhecedor detecta a entrada que pode identificar como fala.
SpeechHypothesized. Gerado quando a entrada cria uma correspondência ambígua com uma das gramáticas ativas.
SpeechRecognitionRejected ou SpeechRecognized. Gerado quando o reconhecedor finaliza uma operação de reconhecimento.
RecognizeCompleted. Gerado quando uma RecognizeAsync operação é concluída.
Para recuperar o resultado de uma operação de reconhecimento assíncrono, anexe um manipulador de eventos ao evento do SpeechRecognized reconhecedor. O reconhecedor gera esse evento sempre que conclui com êxito uma operação de reconhecimento síncrona ou assíncrona. Se o reconhecimento não tiver sido bem-sucedido, a Result propriedade no RecognizeCompletedEventArgs objeto , que você pode acessar no manipulador do RecognizeCompleted evento, será null
.
Uma operação de reconhecimento assíncrono pode falhar pelos seguintes motivos:
A fala não é detectada antes que os intervalos de tempo limite expirem para as BabbleTimeout propriedades ou InitialSilenceTimeout .
O mecanismo de reconhecimento detecta a fala, mas não encontra nenhuma correspondência em nenhum de seus objetos carregados e habilitados Grammar .
Para executar o reconhecimento síncrono, use um dos Recognize métodos.
Confira também
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)