SpeechRecognitionEngine.RecognizeAsync Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Inicia una operación de reconocimiento de voz asincrónica.
Sobrecargas
RecognizeAsync() |
Realiza una operación de reconocimiento de voz asincrónica única. |
RecognizeAsync(RecognizeMode) |
Realiza una o más operaciones de reconocimiento de voz asincrónicas. |
Comentarios
Estos métodos realizan operaciones de reconocimiento asincrónicas únicas o múltiples. El reconocedor realiza cada operación en sus gramáticas de reconocimiento de voz cargadas y habilitadas.
Durante una llamada a este método, el reconocedor puede generar los siguientes eventos:
SpeechDetected. Se genera cuando el reconocedor detecta la entrada que puede identificar como voz.
SpeechHypothesized. Se genera cuando la entrada crea una coincidencia ambigua con una de las gramáticas activas.
SpeechRecognitionRejected o SpeechRecognized. Se genera cuando el reconocedor finaliza una operación de reconocimiento.
RecognizeCompleted. Se genera cuando finaliza una RecognizeAsync operación.
Para recuperar el resultado de una operación de reconocimiento asincrónica, adjunte un controlador de eventos al evento del SpeechRecognized reconocedor. El reconocedor genera este evento cada vez que completa correctamente una operación de reconocimiento sincrónica o asincrónica. Si el reconocimiento no se realizó correctamente, la propiedad en el ResultRecognizeCompletedEventArgs objeto , a la que puede acceder en el controlador del RecognizeCompleted evento, será null
.
Se puede producir un error en una operación de reconocimiento asincrónica por los siguientes motivos:
La voz no se detecta antes de que expiren los intervalos de tiempo de espera para las BabbleTimeout propiedades o InitialSilenceTimeout .
El motor de reconocimiento detecta la voz, pero no encuentra ninguna coincidencia en ninguno de sus objetos cargados y habilitados Grammar .
SpeechRecognitionEngine debe tener al menos un Grammar objeto cargado antes de realizar el reconocimiento. Para cargar una gramática de reconocimiento de voz, use el LoadGrammar método o LoadGrammarAsync .
Para modificar cómo controla el reconocedor el tiempo de voz o silencio con respecto al reconocimiento, use las BabbleTimeoutpropiedades , InitialSilenceTimeout, EndSilenceTimeouty EndSilenceTimeoutAmbiguous .
Para realizar el reconocimiento sincrónico, use uno de los Recognize métodos .
RecognizeAsync()
- Source:
- SpeechRecognitionEngine.cs
- Source:
- SpeechRecognitionEngine.cs
Realiza una operación de reconocimiento de voz asincrónica única.
public:
void RecognizeAsync();
public void RecognizeAsync ();
member this.RecognizeAsync : unit -> unit
Public Sub RecognizeAsync ()
Ejemplos
En el ejemplo siguiente se muestra parte de una aplicación de consola que muestra el reconocimiento de voz asincrónico básico. En el ejemplo se crea , DictationGrammarse carga en un reconocedor de voz en proceso y se realiza una operación de reconocimiento asincrónica. Los controladores de eventos se incluyen para mostrar los eventos que genera el reconocedor durante la operación.
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;
}
}
}
Comentarios
Este método realiza una única operación de reconocimiento asincrónica. El reconocedor realiza la operación en sus gramáticas de reconocimiento de voz cargadas y habilitadas.
Durante una llamada a este método, el reconocedor puede generar los siguientes eventos:
SpeechDetected. Se genera cuando el reconocedor detecta la entrada que puede identificar como voz.
SpeechHypothesized. Se genera cuando la entrada crea una coincidencia ambigua con una de las gramáticas activas.
SpeechRecognitionRejected o SpeechRecognized. Se genera cuando el reconocedor finaliza una operación de reconocimiento.
RecognizeCompleted. Se genera cuando finaliza una RecognizeAsync operación.
Para recuperar el resultado de una operación de reconocimiento asincrónica, adjunte un controlador de eventos al evento del SpeechRecognized reconocedor. El reconocedor genera este evento cada vez que completa correctamente una operación de reconocimiento sincrónica o asincrónica. Si el reconocimiento no se realizó correctamente, la propiedad en el ResultRecognizeCompletedEventArgs objeto , a la que puede acceder en el controlador del RecognizeCompleted evento, será null
.
Para realizar el reconocimiento sincrónico, use uno de los Recognize métodos .
Este método almacena en la tarea que devuelve todas las excepciones que no son de uso que puede producir el homólogo sincrónico del método. Si se almacena una excepción en la tarea devuelta, esa excepción se producirá cuando se espere a la tarea. Las excepciones de uso, como ArgumentException, se siguen produciendo de forma sincrónica. Para ver las excepciones almacenadas, vea las excepciones producidas por Recognize().
Consulte también
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)
Se aplica a
RecognizeAsync(RecognizeMode)
- Source:
- SpeechRecognitionEngine.cs
- Source:
- SpeechRecognitionEngine.cs
Realiza una o más operaciones de reconocimiento de voz asincrónicas.
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 si se van realizar una o varias operaciones de reconocimiento.
Ejemplos
En el ejemplo siguiente se muestra parte de una aplicación de consola que muestra el reconocimiento de voz asincrónico básico. En el ejemplo se crea , DictationGrammarse carga en un reconocedor de voz en proceso y se realizan varias operaciones de reconocimiento asincrónicas. Las operaciones asincrónicas se cancelan después de 30 segundos. Los controladores de eventos se incluyen para mostrar los eventos que genera el reconocedor durante la operación.
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;
}
}
}
Comentarios
Si mode
es Multiple, el reconocedor continúa realizando operaciones de reconocimiento asincrónicas hasta que se llama al RecognizeAsyncCancel método o RecognizeAsyncStop .
Durante una llamada a este método, el reconocedor puede generar los siguientes eventos:
SpeechDetected. Se genera cuando el reconocedor detecta la entrada que puede identificar como voz.
SpeechHypothesized. Se genera cuando la entrada crea una coincidencia ambigua con una de las gramáticas activas.
SpeechRecognitionRejected o SpeechRecognized. Se genera cuando el reconocedor finaliza una operación de reconocimiento.
RecognizeCompleted. Se genera cuando finaliza una RecognizeAsync operación.
Para recuperar el resultado de una operación de reconocimiento asincrónica, adjunte un controlador de eventos al evento del SpeechRecognized reconocedor. El reconocedor genera este evento cada vez que completa correctamente una operación de reconocimiento sincrónica o asincrónica. Si el reconocimiento no se realizó correctamente, la propiedad en el ResultRecognizeCompletedEventArgs objeto , a la que puede acceder en el controlador del RecognizeCompleted evento, será null
.
Se puede producir un error en una operación de reconocimiento asincrónica por los siguientes motivos:
La voz no se detecta antes de que expiren los intervalos de tiempo de espera para las BabbleTimeout propiedades o InitialSilenceTimeout .
El motor de reconocimiento detecta la voz, pero no encuentra ninguna coincidencia en ninguno de sus objetos cargados y habilitados Grammar .
Para realizar el reconocimiento sincrónico, use uno de los Recognize métodos .
Consulte también
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)