SpeechRecognitionEngine.RecognizeAsync Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Startet einen asynchronen Spracherkennungsvorgang.
Überlädt
RecognizeAsync() |
Führt einen einzelnen, asynchronen Spracherkennungsvorgang aus. |
RecognizeAsync(RecognizeMode) |
Führt eine oder mehrere asynchrone Spracherkennungsvorgänge aus. |
Hinweise
Diese Methoden führen einzelne oder mehrere asynchrone Erkennungsvorgänge aus. Die Erkennung führt jeden Vorgang für die geladenen und aktivierten Spracherkennungsgrammatiken aus.
Während eines Aufrufs dieser Methode kann die Erkennung die folgenden Ereignisse auslösen:
SpeechDetected. Wird ausgelöst, wenn die Erkennung Eingaben erkennt, die sie als Sprache identifizieren kann.
SpeechHypothesized. Wird ausgelöst, wenn die Eingabe eine mehrdeutige Übereinstimmung mit einer der aktiven Grammatiken erzeugt.
SpeechRecognitionRejected oder SpeechRecognized. Wird ausgelöst, wenn die Erkennung einen Erkennungsvorgang abgeschlossen hat.
RecognizeCompleted. Wird ausgelöst, wenn ein RecognizeAsync Vorgang abgeschlossen ist.
Um das Ergebnis eines asynchronen Erkennungsvorgangs abzurufen, fügen Sie einen Ereignishandler an das Ereignis der Erkennung an SpeechRecognized . Die Erkennung löst dieses Ereignis aus, wenn ein synchroner oder asynchroner Erkennungsvorgang erfolgreich abgeschlossen wird. Wenn die Erkennung nicht erfolgreich war, lautet die Result Eigenschaft für RecognizeCompletedEventArgs das -Objekt, auf das Sie im Handler für das RecognizeCompleted Ereignis zugreifen können null
, .
Ein asynchroner Erkennungsvorgang kann aus den folgenden Gründen fehlschlagen:
Die Spracherkennung wird nicht erkannt, bevor die Timeoutintervalle für die BabbleTimeout Eigenschaften oder InitialSilenceTimeout ablaufen.
Die Erkennungs-Engine erkennt Sprache, findet jedoch keine Übereinstimmungen in den geladenen und aktivierten Grammar Objekten.
Der SpeechRecognitionEngine muss mindestens ein Grammar Objekt geladen haben, bevor die Erkennung ausgeführt wird. Verwenden Sie zum Laden einer Spracherkennungsgrammatik die - oder LoadGrammarAsync -LoadGrammarMethode.
Verwenden Sie die Eigenschaften , InitialSilenceTimeoutEndSilenceTimeoutEndSilenceTimeoutAmbiguous , und, um zu ändern, wie die Erkennung die Zeitsteuerung von Sprache oder Stille in Bezug auf die BabbleTimeoutErkennung behandelt.
Verwenden Sie eine der Recognize Methoden, um eine synchrone Erkennung durchzuführen.
RecognizeAsync()
- Quelle:
- SpeechRecognitionEngine.cs
- Quelle:
- SpeechRecognitionEngine.cs
- Quelle:
- SpeechRecognitionEngine.cs
Führt einen einzelnen, asynchronen Spracherkennungsvorgang aus.
public:
void RecognizeAsync();
public void RecognizeAsync ();
member this.RecognizeAsync : unit -> unit
Public Sub RecognizeAsync ()
Beispiele
Das folgende Beispiel zeigt einen Teil einer Konsolenanwendung, die die grundlegende asynchrone Spracherkennung veranschaulicht. Im Beispiel wird ein DictationGrammarerstellt, in eine Prozess-Spracherkennung geladen und ein asynchroner Erkennungsvorgang ausgeführt. Ereignishandler werden eingeschlossen, um die Ereignisse zu veranschaulichen, die die Erkennung während des Vorgangs auslöst.
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;
}
}
}
Hinweise
Diese Methode führt einen einzelnen, asynchronen Erkennungsvorgang aus. Die Erkennung führt den Vorgang für die geladenen und aktivierten Spracherkennungsgrammatiken aus.
Während eines Aufrufs dieser Methode kann die Erkennung die folgenden Ereignisse auslösen:
SpeechDetected. Wird ausgelöst, wenn die Erkennung Eingaben erkennt, die sie als Sprache identifizieren kann.
SpeechHypothesized. Wird ausgelöst, wenn die Eingabe eine mehrdeutige Übereinstimmung mit einer der aktiven Grammatiken erzeugt.
SpeechRecognitionRejected oder SpeechRecognized. Wird ausgelöst, wenn die Erkennung einen Erkennungsvorgang abgeschlossen hat.
RecognizeCompleted. Wird ausgelöst, wenn ein RecognizeAsync Vorgang abgeschlossen ist.
Um das Ergebnis eines asynchronen Erkennungsvorgangs abzurufen, fügen Sie einen Ereignishandler an das Ereignis der Erkennung an SpeechRecognized . Die Erkennung löst dieses Ereignis aus, wenn ein synchroner oder asynchroner Erkennungsvorgang erfolgreich abgeschlossen wird. Wenn die Erkennung nicht erfolgreich war, lautet die Result Eigenschaft für RecognizeCompletedEventArgs das -Objekt, auf das Sie im Handler für das RecognizeCompleted Ereignis zugreifen können null
, .
Verwenden Sie eine der Recognize Methoden, um eine synchrone Erkennung durchzuführen.
Diese Methode speichert in der Aufgabe, die alle Nichtverwendungsausnahmen zurückgibt, die die synchrone Entsprechung der Methode auslösen kann. Wenn eine Ausnahme in der zurückgegebenen Aufgabe gespeichert wird, wird diese Ausnahme ausgelöst, wenn die Aufgabe erwartet wird. Verwendungsausnahmen wie ArgumentExceptionwerden weiterhin synchron ausgelöst. Informationen zu den gespeicherten Ausnahmen finden Sie unter ausnahmen, die von ausgelöst werden Recognize().
Weitere Informationen
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)
Gilt für:
RecognizeAsync(RecognizeMode)
- Quelle:
- SpeechRecognitionEngine.cs
- Quelle:
- SpeechRecognitionEngine.cs
- Quelle:
- SpeechRecognitionEngine.cs
Führt eine oder mehrere asynchrone Spracherkennungsvorgänge aus.
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)
Parameter
- mode
- RecognizeMode
Gibt an, ob einer oder mehrere Erkennungsvorgänge ausgeführt werden.
Beispiele
Das folgende Beispiel zeigt einen Teil einer Konsolenanwendung, die die grundlegende asynchrone Spracherkennung veranschaulicht. Im Beispiel wird eine DictationGrammarerstellt, in eine Prozess-Spracherkennung geladen und mehrere asynchrone Erkennungsvorgänge ausgeführt. Die asynchronen Vorgänge werden nach 30 Sekunden abgebrochen. Ereignishandler werden eingeschlossen, um die Ereignisse zu veranschaulichen, die die Erkennung während des Vorgangs auslöst.
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;
}
}
}
Hinweise
Wenn mode
ist Multiple, führt die Erkennung weiterhin asynchrone Erkennungsvorgänge aus, bis die RecognizeAsyncCancel - oder RecognizeAsyncStop -Methode aufgerufen wird.
Während eines Aufrufs dieser Methode kann die Erkennung die folgenden Ereignisse auslösen:
SpeechDetected. Wird ausgelöst, wenn die Erkennung Eingaben erkennt, die sie als Sprache identifizieren kann.
SpeechHypothesized. Wird ausgelöst, wenn die Eingabe eine mehrdeutige Übereinstimmung mit einer der aktiven Grammatiken erzeugt.
SpeechRecognitionRejected oder SpeechRecognized. Wird ausgelöst, wenn die Erkennung einen Erkennungsvorgang abgeschlossen hat.
RecognizeCompleted. Wird ausgelöst, wenn ein RecognizeAsync Vorgang abgeschlossen ist.
Um das Ergebnis eines asynchronen Erkennungsvorgangs abzurufen, fügen Sie einen Ereignishandler an das Ereignis der Erkennung an SpeechRecognized . Die Erkennung löst dieses Ereignis aus, wenn ein synchroner oder asynchroner Erkennungsvorgang erfolgreich abgeschlossen wird. Wenn die Erkennung nicht erfolgreich war, lautet die Result Eigenschaft für RecognizeCompletedEventArgs das -Objekt, auf das Sie im Handler für das RecognizeCompleted Ereignis zugreifen können null
, .
Ein asynchroner Erkennungsvorgang kann aus den folgenden Gründen fehlschlagen:
Die Spracherkennung wird nicht erkannt, bevor die Timeoutintervalle für die BabbleTimeout Eigenschaften oder InitialSilenceTimeout ablaufen.
Die Erkennungs-Engine erkennt Sprache, findet jedoch keine Übereinstimmungen in den geladenen und aktivierten Grammar Objekten.
Verwenden Sie eine der Recognize Methoden, um eine synchrone Erkennung durchzuführen.
Weitere Informationen
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)