SpeechRecognitionEngine.RecognizeAsync Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Inicia uma operação de reconhecimento de voz assíncrona.
Sobrecargas
| Name | Description |
|---|---|
| RecognizeAsync() |
Realiza uma única operação de reconhecimento de voz assíncrona. |
| RecognizeAsync(RecognizeMode) |
Realiza uma ou mais operações de reconhecimento de fala assíncronas. |
Observações
Estes métodos realizam operações de reconhecimento assíncronas simples ou múltiplas. O reconhecedor realiza cada operação contra as suas gramáticas de reconhecimento de fala carregadas e ativadas.
Durante uma chamada a este método, o reconhecedor pode gerar os seguintes eventos:
SpeechDetected. Eleva-se quando o reconhecedor deteta uma entrada que pode identificar como fala.
SpeechHypothesized. É levantado quando a entrada cria uma correspondência ambígua com uma das gramáticas ativas.
SpeechRecognitionRejected ou SpeechRecognized. É levantado quando o reconhecor finaliza uma operação de reconhecimento.
RecognizeCompleted. Levantado quando uma RecognizeAsync operação termina.
Para recuperar o resultado de uma operação de reconhecimento assíncrono, anexa um gestor de eventos ao evento do SpeechRecognized reconhecedor. O reconhecedor levanta este evento sempre que conclui com sucesso uma operação de reconhecimento síncrona ou assíncrona. Se o reconhecimento não for bem-sucedido, a Result propriedade no RecognizeCompletedEventArgs objeto, à qual pode aceder no handler do RecognizeCompleted evento, será null.
Uma operação de reconhecimento assíncrona pode falhar pelas seguintes razões:
A fala não é detetada antes de expirarem os intervalos de tempo para as BabbleTimeout propriedades ou.InitialSilenceTimeout
O motor de reconhecimento deteta fala, mas não encontra correspondências em nenhum dos seus objetos carregados e ativados Grammar .
Devem SpeechRecognitionEngine ter pelo menos um Grammar objeto carregado antes de realizar o reconhecimento. Para carregar uma gramática de reconhecimento de voz, use o LoadGrammar método ou LoadGrammarAsync .
Para modificar a forma como o reconhecedor lida com o momento da fala ou do silêncio relativamente ao reconhecimento, use as BabbleTimeout, InitialSilenceTimeout, EndSilenceTimeout, e EndSilenceTimeoutAmbiguous propriedades.
Para realizar o reconhecimento síncrono, utilize um dos Recognize métodos.
RecognizeAsync()
Realiza uma única operação de reconhecimento de voz assíncrona.
public:
void RecognizeAsync();
public void RecognizeAsync();
member this.RecognizeAsync : unit -> unit
Public Sub RecognizeAsync ()
Exemplos
O exemplo seguinte mostra parte de uma aplicação de consola que demonstra reconhecimento básico de fala assíncrona. O exemplo cria um DictationGrammar, carrega-o num reconhecedor de fala em processo e realiza uma operação de reconhecimento assíncrono. Handlers de eventos são incluídos para demonstrar os eventos que o recognizer levanta 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;
}
}
}
Observações
Este método executa uma única operação de reconhecimento assíncrono. O reconhecedor executa a operação contra as suas gramáticas de reconhecimento de fala carregadas e ativadas.
Durante uma chamada a este método, o reconhecedor pode gerar os seguintes eventos:
SpeechDetected. Eleva-se quando o reconhecedor deteta uma entrada que pode identificar como fala.
SpeechHypothesized. É levantado quando a entrada cria uma correspondência ambígua com uma das gramáticas ativas.
SpeechRecognitionRejected ou SpeechRecognized. É levantado quando o reconhecor finaliza uma operação de reconhecimento.
RecognizeCompleted. Levantado quando uma RecognizeAsync operação termina.
Para recuperar o resultado de uma operação de reconhecimento assíncrono, anexa um gestor de eventos ao evento do SpeechRecognized reconhecedor. O reconhecedor levanta este evento sempre que conclui com sucesso uma operação de reconhecimento síncrona ou assíncrona. Se o reconhecimento não for bem-sucedido, a Result propriedade no RecognizeCompletedEventArgs objeto, à qual pode aceder no handler do RecognizeCompleted evento, será null.
Para realizar o reconhecimento síncrono, utilize um dos Recognize métodos.
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 Recognize().
Ver também
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)
Aplica-se a
RecognizeAsync(RecognizeMode)
Realiza 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 deve realizar uma ou várias operações de reconhecimento.
Exemplos
O exemplo seguinte mostra parte de uma aplicação de consola que demonstra reconhecimento básico de fala assíncrona. O exemplo cria um DictationGrammar, carrega-o num reconhecedor de fala em processo e realiza múltiplas operações de reconhecimento assíncrono. As operações assíncronas são canceladas após 30 segundos. Handlers de eventos são incluídos para demonstrar os eventos que o recognizer levanta 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;
}
}
}
Observações
Se mode for Multiple, o reconhecor continua a realizar operações de reconhecimento assíncrono até que o RecognizeAsyncCancel método ou RecognizeAsyncStop seja chamado.
Durante uma chamada a este método, o reconhecedor pode gerar os seguintes eventos:
SpeechDetected. Eleva-se quando o reconhecedor deteta uma entrada que pode identificar como fala.
SpeechHypothesized. É levantado quando a entrada cria uma correspondência ambígua com uma das gramáticas ativas.
SpeechRecognitionRejected ou SpeechRecognized. É levantado quando o reconhecor finaliza uma operação de reconhecimento.
RecognizeCompleted. Levantado quando uma RecognizeAsync operação termina.
Para recuperar o resultado de uma operação de reconhecimento assíncrono, anexa um gestor de eventos ao evento do SpeechRecognized reconhecedor. O reconhecedor levanta este evento sempre que conclui com sucesso uma operação de reconhecimento síncrona ou assíncrona. Se o reconhecimento não for bem-sucedido, a Result propriedade no RecognizeCompletedEventArgs objeto, à qual pode aceder no handler do RecognizeCompleted evento, será null.
Uma operação de reconhecimento assíncrona pode falhar pelas seguintes razões:
A fala não é detetada antes de expirarem os intervalos de tempo para as BabbleTimeout propriedades ou.InitialSilenceTimeout
O motor de reconhecimento deteta fala, mas não encontra correspondências em nenhum dos seus objetos carregados e ativados Grammar .
Para realizar o reconhecimento síncrono, utilize um dos Recognize métodos.
Ver também
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)