SpeechRecognitionEngine.RecognizeAsync Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Avvia un'operazione asincrona di riconoscimento vocale.
Overload
RecognizeAsync() |
Effettua un'unica operazione asincrona di riconoscimento vocale. |
RecognizeAsync(RecognizeMode) |
Effettua una o più operazioni asincrone di riconoscimento vocale. |
Commenti
Questi metodi eseguono operazioni di riconoscimento asincrone singole o multiple. Il riconoscimento esegue ogni operazione rispetto alle grammatica di riconoscimento vocale caricate e abilitate.
Durante una chiamata a questo metodo, il riconoscimento può generare gli eventi seguenti:
SpeechDetected. Generato quando il riconoscimento rileva l'input che può identificare come voce.
SpeechHypothesized. Generato quando l'input crea una corrispondenza ambigua con una delle grammatica attive.
SpeechRecognitionRejected o SpeechRecognized. Generato quando il riconoscimento finalizza un'operazione di riconoscimento.
RecognizeCompleted. Generato al termine di un'operazione RecognizeAsync .
Per recuperare il risultato di un'operazione di riconoscimento asincrono, collegare un gestore eventi all'evento del SpeechRecognized riconoscimento. Il riconoscimento genera questo evento ogni volta che completa correttamente un'operazione di riconoscimento sincrona o asincrona. Se il riconoscimento non ha esito positivo, la Result proprietà sull'oggetto RecognizeCompletedEventArgs , che è possibile accedere al gestore per l'evento RecognizeCompleted , sarà null
.
Un'operazione di riconoscimento asincrona può non riuscire per i motivi seguenti:
Il riconoscimento vocale non viene rilevato prima della scadenza degli intervalli di timeout per le BabbleTimeout proprietà o InitialSilenceTimeout .
Il motore di riconoscimento rileva la voce, ma non trova corrispondenze in uno dei relativi oggetti caricati e abilitati Grammar .
L'oggetto SpeechRecognitionEngine deve avere almeno un Grammar oggetto caricato prima di eseguire il riconoscimento. Per caricare una grammatica di riconoscimento vocale, usare il LoadGrammar metodo o LoadGrammarAsync .
Per modificare la modalità di gestione del riconoscimento vocale o del silenzio rispetto al riconoscimento, usare le BabbleTimeoutproprietà , InitialSilenceTimeoutEndSilenceTimeout, e EndSilenceTimeoutAmbiguous .
Per eseguire il riconoscimento sincrono, usare uno dei Recognize metodi.
RecognizeAsync()
- Origine:
- SpeechRecognitionEngine.cs
- Origine:
- SpeechRecognitionEngine.cs
- Origine:
- SpeechRecognitionEngine.cs
Effettua un'unica operazione asincrona di riconoscimento vocale.
public:
void RecognizeAsync();
public void RecognizeAsync ();
member this.RecognizeAsync : unit -> unit
Public Sub RecognizeAsync ()
Esempio
Nell'esempio seguente viene illustrata parte di un'applicazione console che illustra il riconoscimento vocale asincrono di base. L'esempio crea un oggetto , lo carica in un DictationGrammarriconoscimento vocale in-process ed esegue un'operazione di riconoscimento asincrono. I gestori eventi sono inclusi per illustrare gli eventi generati dal riconoscimento durante l'operazione.
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;
}
}
}
Commenti
Questo metodo esegue un'unica operazione di riconoscimento asincrona. Il riconoscimento esegue l'operazione rispetto alle grammatica di riconoscimento vocale caricate e abilitate.
Durante una chiamata a questo metodo, il riconoscimento può generare gli eventi seguenti:
SpeechDetected. Generato quando il riconoscimento rileva l'input che può identificare come voce.
SpeechHypothesized. Generato quando l'input crea una corrispondenza ambigua con una delle grammatica attive.
SpeechRecognitionRejected o SpeechRecognized. Generato quando il riconoscimento finalizza un'operazione di riconoscimento.
RecognizeCompleted. Generato al termine di un'operazione RecognizeAsync .
Per recuperare il risultato di un'operazione di riconoscimento asincrono, collegare un gestore eventi all'evento del SpeechRecognized riconoscimento. Il riconoscimento genera questo evento ogni volta che completa correttamente un'operazione di riconoscimento sincrona o asincrona. Se il riconoscimento non ha esito positivo, la Result proprietà sull'oggetto RecognizeCompletedEventArgs , che è possibile accedere al gestore per l'evento RecognizeCompleted , sarà null
.
Per eseguire il riconoscimento sincrono, usare uno dei Recognize metodi.
Questo metodo archivia nell'attività che restituisce tutte le eccezioni non di utilizzo che la controparte sincrona del metodo può generare. Se un'eccezione viene archiviata nell'attività restituita, tale eccezione verrà generata quando l'attività è attesa. Le eccezioni di utilizzo, ad esempio ArgumentException, vengono comunque generate in modo sincrono. Per le eccezioni archiviate, vedere le eccezioni generate da Recognize().
Vedi anche
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)
Si applica a
RecognizeAsync(RecognizeMode)
- Origine:
- SpeechRecognitionEngine.cs
- Origine:
- SpeechRecognitionEngine.cs
- Origine:
- SpeechRecognitionEngine.cs
Effettua una o più operazioni asincrone di riconoscimento vocale.
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)
Parametri
- mode
- RecognizeMode
Indica se eseguire una o più operazioni di riconoscimento.
Esempio
Nell'esempio seguente viene illustrata parte di un'applicazione console che illustra il riconoscimento vocale asincrono di base. L'esempio crea un oggetto , lo carica in un DictationGrammarriconoscimento vocale in-process ed esegue più operazioni di riconoscimento asincrone. Le operazioni asincrone vengono annullate dopo 30 secondi. I gestori eventi sono inclusi per illustrare gli eventi generati dal riconoscimento durante l'operazione.
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;
}
}
}
Commenti
Se mode
è Multiple, il riconoscimento continua a eseguire operazioni di riconoscimento asincrone finché non viene chiamato il RecognizeAsyncCancel metodo o RecognizeAsyncStop .
Durante una chiamata a questo metodo, il riconoscimento può generare gli eventi seguenti:
SpeechDetected. Generato quando il riconoscimento rileva l'input che può identificare come voce.
SpeechHypothesized. Generato quando l'input crea una corrispondenza ambigua con una delle grammatica attive.
SpeechRecognitionRejected o SpeechRecognized. Generato quando il riconoscimento finalizza un'operazione di riconoscimento.
RecognizeCompleted. Generato al termine di un'operazione RecognizeAsync .
Per recuperare il risultato di un'operazione di riconoscimento asincrono, collegare un gestore eventi all'evento del SpeechRecognized riconoscimento. Il riconoscimento genera questo evento ogni volta che completa correttamente un'operazione di riconoscimento sincrona o asincrona. Se il riconoscimento non ha esito positivo, la Result proprietà sull'oggetto RecognizeCompletedEventArgs , che è possibile accedere al gestore per l'evento RecognizeCompleted , sarà null
.
Un'operazione di riconoscimento asincrona può non riuscire per i motivi seguenti:
Il riconoscimento vocale non viene rilevato prima della scadenza degli intervalli di timeout per le BabbleTimeout proprietà o InitialSilenceTimeout .
Il motore di riconoscimento rileva la voce, ma non trova corrispondenze in uno dei relativi oggetti caricati e abilitati Grammar .
Per eseguire il riconoscimento sincrono, usare uno dei Recognize metodi.
Vedi anche
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)