SpeechRecognitionEngine.RecognizeAsync Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee start u een asynchrone spraakherkenningsbewerking.
Overloads
| Name | Description |
|---|---|
| RecognizeAsync() |
Voert één asynchrone spraakherkenningsbewerking uit. |
| RecognizeAsync(RecognizeMode) |
Voert een of meer asynchrone spraakherkenningsbewerkingen uit. |
Opmerkingen
Deze methoden voeren enkele of meerdere asynchrone herkenningsbewerkingen uit. De recognizer voert elke bewerking uit op basis van de geladen en ingeschakelde grammatica voor spraakherkenning.
Tijdens een aanroep van deze methode kan de recognizer de volgende gebeurtenissen veroorzaken:
SpeechDetected. Gegenereerd wanneer de recognizer invoer detecteert die als spraak kan worden geïdentificeerd.
SpeechHypothesized. Gegenereerd wanneer invoer een dubbelzinnige overeenkomst met een van de actieve grammatica's maakt.
SpeechRecognitionRejected of SpeechRecognized. Gegenereerd wanneer de recognizer een herkenningsbewerking voltooit.
RecognizeCompleted. Verhoogd wanneer een RecognizeAsync bewerking is voltooid.
Als u het resultaat van een asynchrone herkenningsbewerking wilt ophalen, koppelt u een gebeurtenishandler aan de gebeurtenis van SpeechRecognized de recognizer. De recognizer genereert deze gebeurtenis wanneer deze een synchrone of asynchrone herkenningsbewerking heeft voltooid. Als de herkenning niet is gelukt, is de Result eigenschap voor RecognizeCompletedEventArgs het object, waartoe u toegang hebt in de handler voor de RecognizeCompleted gebeurtenis, .null
Een asynchrone herkenningsbewerking kan om de volgende redenen mislukken:
Spraak wordt niet gedetecteerd voordat de time-outintervallen voor de BabbleTimeout of InitialSilenceTimeout eigenschappen verlopen.
De herkenningsengine detecteert spraak, maar vindt geen overeenkomsten in een van de geladen en ingeschakelde Grammar objecten.
Er SpeechRecognitionEngine moet ten minste één Grammar object zijn geladen voordat er herkenning wordt uitgevoerd. Als u een grammatica voor spraakherkenning wilt laden, gebruikt u de LoadGrammar of LoadGrammarAsync methode.
Als u wilt wijzigen hoe de recognizer de timing van spraak of stilte verwerkt met betrekking tot herkenning, gebruikt u de BabbleTimeout, InitialSilenceTimeouten EndSilenceTimeouteigenschappen EndSilenceTimeoutAmbiguous .
Gebruik een van de Recognize methoden om synchrone herkenning uit te voeren.
RecognizeAsync()
Voert één asynchrone spraakherkenningsbewerking uit.
public:
void RecognizeAsync();
public void RecognizeAsync();
member this.RecognizeAsync : unit -> unit
Public Sub RecognizeAsync ()
Voorbeelden
In het volgende voorbeeld ziet u een deel van een consoletoepassing die eenvoudige asynchrone spraakherkenning demonstreert. In het voorbeeld wordt een DictationGrammar, geladen in een in-process spraakherkenning en wordt één asynchrone herkenningsbewerking uitgevoerd. Gebeurtenis-handlers zijn opgenomen om de gebeurtenissen te demonstreren die de recognizer genereert tijdens de bewerking.
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;
}
}
}
Opmerkingen
Met deze methode wordt één asynchrone herkenningsbewerking uitgevoerd. De recognizer voert de bewerking uit op basis van de geladen en ingeschakelde grammatica voor spraakherkenning.
Tijdens een aanroep van deze methode kan de recognizer de volgende gebeurtenissen veroorzaken:
SpeechDetected. Gegenereerd wanneer de recognizer invoer detecteert die als spraak kan worden geïdentificeerd.
SpeechHypothesized. Gegenereerd wanneer invoer een dubbelzinnige overeenkomst met een van de actieve grammatica's maakt.
SpeechRecognitionRejected of SpeechRecognized. Gegenereerd wanneer de recognizer een herkenningsbewerking voltooit.
RecognizeCompleted. Verhoogd wanneer een RecognizeAsync bewerking is voltooid.
Als u het resultaat van een asynchrone herkenningsbewerking wilt ophalen, koppelt u een gebeurtenishandler aan de gebeurtenis van SpeechRecognized de recognizer. De recognizer genereert deze gebeurtenis wanneer deze een synchrone of asynchrone herkenningsbewerking heeft voltooid. Als de herkenning niet is gelukt, is de Result eigenschap voor RecognizeCompletedEventArgs het object, waartoe u toegang hebt in de handler voor de RecognizeCompleted gebeurtenis, .null
Gebruik een van de Recognize methoden om synchrone herkenning uit te voeren.
Deze methode slaat op in de taak die alle uitzonderingen voor niet-gebruik retourneert die de synchrone tegenhanger van de methode kan genereren. Als er een uitzondering wordt opgeslagen in de geretourneerde taak, wordt deze uitzondering gegenereerd wanneer de taak wordt gewacht. Gebruiksonderzondering, zoals ArgumentException, worden nog steeds synchroon gegenereerd. Zie de uitzonderingen die zijn gegenereerd door Recognize()de opgeslagen uitzonderingen voor de opgeslagen uitzonderingen.
Zie ook
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)
Van toepassing op
RecognizeAsync(RecognizeMode)
Voert een of meer asynchrone spraakherkenningsbewerkingen uit.
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)
Parameters
- mode
- RecognizeMode
Hiermee wordt aangegeven of een of meer herkenningsbewerkingen moeten worden uitgevoerd.
Voorbeelden
In het volgende voorbeeld ziet u een deel van een consoletoepassing die eenvoudige asynchrone spraakherkenning demonstreert. In het voorbeeld wordt een DictationGrammar, geladen in een in-process spraakherkenning en worden meerdere asynchrone herkenningsbewerkingen uitgevoerd. De asynchrone bewerkingen worden na 30 seconden geannuleerd. Gebeurtenis-handlers zijn opgenomen om de gebeurtenissen te demonstreren die de recognizer genereert tijdens de bewerking.
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;
}
}
}
Opmerkingen
Als mode dat het is Multiple, gaat de recognizer door met het uitvoeren van asynchrone herkenningsbewerkingen totdat de RecognizeAsyncCancel of RecognizeAsyncStop methode wordt aangeroepen.
Tijdens een aanroep van deze methode kan de recognizer de volgende gebeurtenissen veroorzaken:
SpeechDetected. Gegenereerd wanneer de recognizer invoer detecteert die als spraak kan worden geïdentificeerd.
SpeechHypothesized. Gegenereerd wanneer invoer een dubbelzinnige overeenkomst met een van de actieve grammatica's maakt.
SpeechRecognitionRejected of SpeechRecognized. Gegenereerd wanneer de recognizer een herkenningsbewerking voltooit.
RecognizeCompleted. Verhoogd wanneer een RecognizeAsync bewerking is voltooid.
Als u het resultaat van een asynchrone herkenningsbewerking wilt ophalen, koppelt u een gebeurtenishandler aan de gebeurtenis van SpeechRecognized de recognizer. De recognizer genereert deze gebeurtenis wanneer deze een synchrone of asynchrone herkenningsbewerking heeft voltooid. Als de herkenning niet is gelukt, is de Result eigenschap voor RecognizeCompletedEventArgs het object, waartoe u toegang hebt in de handler voor de RecognizeCompleted gebeurtenis, .null
Een asynchrone herkenningsbewerking kan om de volgende redenen mislukken:
Spraak wordt niet gedetecteerd voordat de time-outintervallen voor de BabbleTimeout of InitialSilenceTimeout eigenschappen verlopen.
De herkenningsengine detecteert spraak, maar vindt geen overeenkomsten in een van de geladen en ingeschakelde Grammar objecten.
Gebruik een van de Recognize methoden om synchrone herkenning uit te voeren.
Zie ook
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)