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
| Name | Beschreibung |
|---|---|
| RecognizeAsync() |
Führt einen einzelnen, asynchronen Spracherkennungsvorgang aus. |
| RecognizeAsync(RecognizeMode) |
Führt einen oder mehrere asynchrone Spracherkennungsvorgänge aus. |
Hinweise
Diese Methoden führen einzelne oder mehrere asynchrone Erkennungsvorgänge aus. Die Erkennung führt jeden Vorgang anhand seiner geladenen und aktivierten Spracherkennungsgrammatik aus.
Während eines Aufrufs dieser Methode kann die Erkennung die folgenden Ereignisse auslösen:
SpeechDetected. Wird ausgelöst, wenn die Erkennung Eingabe erkennt, die sie als Sprache identifizieren kann.
SpeechHypothesized. Wird ausgelöst, wenn die Eingabe eine mehrdeutige Übereinstimmung mit einer der aktiven Grammatiken erstellt.
SpeechRecognitionRejected oder SpeechRecognized. Wird ausgelöst, wenn die Erkennung einen Erkennungsvorgang abgeschlossen hat.
RecognizeCompleted. Wird ausgelöst, wenn ein RecognizeAsync Vorgang beendet wird.
Um das Ergebnis eines asynchronen Erkennungsvorgangs SpeechRecognized abzurufen, fügen Sie einen Ereignishandler an das Ereignis der Erkennung an. Die Erkennung löst dieses Ereignis aus, wenn es erfolgreich einen synchronen oder asynchronen Erkennungsvorgang abgeschlossen hat. Wenn die Erkennung nicht erfolgreich war, lautet die Result Eigenschaft für RecognizeCompletedEventArgs das Objekt, auf die Sie im Handler für das RecognizeCompleted Ereignis zugreifen können, .null
Aus folgenden Gründen kann ein asynchroner Erkennungsvorgang fehlschlagen:
Die Spracherkennung wird nicht erkannt, bevor die Timeoutintervalle für die oder InitialSilenceTimeout die BabbleTimeout Eigenschaften ablaufen.
Das Erkennungsmodul erkennt die Sprache, findet jedoch keine Übereinstimmungen in einem der geladenen und aktivierten Grammar Objekte.
Das SpeechRecognitionEngine Muss mindestens ein Grammar Objekt geladen haben, bevor die Erkennung ausgeführt wird. Zum Laden einer Spracherkennungsgrammatik verwenden Sie die LoadGrammar oder LoadGrammarAsync die Methode.
Wenn Sie ändern möchten, wie die Erkennung die Anzeigedauer von Sprache oder Stille in Bezug auf die Erkennung behandelt, verwenden Sie die Eigenschaften , , InitialSilenceTimeoutund verwenden EndSilenceTimeoutAmbiguousEndSilenceTimeoutSie dieseBabbleTimeout.
Verwenden Sie zum Ausführen der synchronen Erkennung eine der Recognize Methoden.
RecognizeAsync()
- Quelle:
- SpeechRecognitionEngine.cs
- 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 grundlegende asynchrone Spracherkennung veranschaulicht. Das Beispiel erstellt einen DictationGrammar, lädt ihn in eine prozessinterne Spracherkennung und führt einen asynchronen Erkennungsvorgang aus. 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 geladene und aktivierte Spracherkennungsgrammatik aus.
Während eines Aufrufs dieser Methode kann die Erkennung die folgenden Ereignisse auslösen:
SpeechDetected. Wird ausgelöst, wenn die Erkennung Eingabe erkennt, die sie als Sprache identifizieren kann.
SpeechHypothesized. Wird ausgelöst, wenn die Eingabe eine mehrdeutige Übereinstimmung mit einer der aktiven Grammatiken erstellt.
SpeechRecognitionRejected oder SpeechRecognized. Wird ausgelöst, wenn die Erkennung einen Erkennungsvorgang abgeschlossen hat.
RecognizeCompleted. Wird ausgelöst, wenn ein RecognizeAsync Vorgang beendet wird.
Um das Ergebnis eines asynchronen Erkennungsvorgangs SpeechRecognized abzurufen, fügen Sie einen Ereignishandler an das Ereignis der Erkennung an. Die Erkennung löst dieses Ereignis aus, wenn es erfolgreich einen synchronen oder asynchronen Erkennungsvorgang abgeschlossen hat. Wenn die Erkennung nicht erfolgreich war, lautet die Result Eigenschaft für RecognizeCompletedEventArgs das Objekt, auf die Sie im Handler für das RecognizeCompleted Ereignis zugreifen können, .null
Verwenden Sie zum Ausführen der synchronen Erkennung eine der Recognize Methoden.
Diese Methode speichert in der Aufgabe, die alle Nicht-Verwendungs-Ausnahmen zurückgibt, die das synchrone Gegenstück 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, z. B. ArgumentException, werden weiterhin synchron ausgelöst. Informationen zu den gespeicherten Ausnahmen finden Sie in den von 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
- Quelle:
- SpeechRecognitionEngine.cs
Führt einen 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 ein oder mehrere Erkennungsvorgänge ausgeführt werden sollen.
Beispiele
Das folgende Beispiel zeigt einen Teil einer Konsolenanwendung, die grundlegende asynchrone Spracherkennung veranschaulicht. Das Beispiel erstellt eine DictationGrammar, lädt sie in eine prozessinterne Spracherkennung und führt mehrere asynchrone Erkennungsvorgänge aus. 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 ja Multiple, führt die Erkennung weiterhin asynchrone Erkennungsvorgänge aus, bis die RecognizeAsyncCancel Methode RecognizeAsyncStop aufgerufen wird.
Während eines Aufrufs dieser Methode kann die Erkennung die folgenden Ereignisse auslösen:
SpeechDetected. Wird ausgelöst, wenn die Erkennung Eingabe erkennt, die sie als Sprache identifizieren kann.
SpeechHypothesized. Wird ausgelöst, wenn die Eingabe eine mehrdeutige Übereinstimmung mit einer der aktiven Grammatiken erstellt.
SpeechRecognitionRejected oder SpeechRecognized. Wird ausgelöst, wenn die Erkennung einen Erkennungsvorgang abgeschlossen hat.
RecognizeCompleted. Wird ausgelöst, wenn ein RecognizeAsync Vorgang beendet wird.
Um das Ergebnis eines asynchronen Erkennungsvorgangs SpeechRecognized abzurufen, fügen Sie einen Ereignishandler an das Ereignis der Erkennung an. Die Erkennung löst dieses Ereignis aus, wenn es erfolgreich einen synchronen oder asynchronen Erkennungsvorgang abgeschlossen hat. Wenn die Erkennung nicht erfolgreich war, lautet die Result Eigenschaft für RecognizeCompletedEventArgs das Objekt, auf die Sie im Handler für das RecognizeCompleted Ereignis zugreifen können, .null
Aus folgenden Gründen kann ein asynchroner Erkennungsvorgang fehlschlagen:
Die Spracherkennung wird nicht erkannt, bevor die Timeoutintervalle für die oder InitialSilenceTimeout die BabbleTimeout Eigenschaften ablaufen.
Das Erkennungsmodul erkennt die Sprache, findet jedoch keine Übereinstimmungen in einem der geladenen und aktivierten Grammar Objekte.
Verwenden Sie zum Ausführen der synchronen Erkennung eine der Recognize Methoden.
Weitere Informationen
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)