SpeechRecognitionEngine.RecognizeAsync Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Uruchamia operację asynchronicznego rozpoznawania mowy.
Przeciążenia
RecognizeAsync() |
Wykonuje pojedynczą operację asynchronicznego rozpoznawania mowy. |
RecognizeAsync(RecognizeMode) |
Wykonuje co najmniej jedną asynchroniczną operację rozpoznawania mowy. |
Uwagi
Te metody wykonują pojedyncze lub wielokrotne operacje rozpoznawania asynchronicznego. Rozpoznawanie wykonuje każdą operację względem załadowanych i włączonych gramatyk rozpoznawania mowy.
Podczas wywołania tej metody rozpoznawanie może zgłaszać następujące zdarzenia:
SpeechDetected. Zgłaszane, gdy aparat rozpoznawania wykryje dane wejściowe, które może zidentyfikować jako mowę.
SpeechHypothesized. Podniesione, gdy dane wejściowe tworzą niejednoznaczne dopasowanie z jedną z aktywnych gramatyki.
SpeechRecognitionRejected lub SpeechRecognized. Podniesione, gdy rozpoznawanie finalizuje operację rozpoznawania.
RecognizeCompleted. Podniesione po zakończeniu RecognizeAsync operacji.
Aby pobrać wynik operacji rozpoznawania asynchronicznego, dołącz program obsługi zdarzeń do zdarzenia aparatu rozpoznawania SpeechRecognized . Rozpoznawanie zgłasza to zdarzenie za każdym razem, gdy pomyślnie ukończy operację synchroniczną lub asynchroniczną. Jeśli rozpoznawanie nie powiodło się, właściwość obiektu, Result do którego można uzyskać dostęp w procedurze obsługi zdarzeniaRecognizeCompleted, będzie miała wartość null
.RecognizeCompletedEventArgs
Operacja rozpoznawania asynchronicznego może zakończyć się niepowodzeniem z następujących powodów:
Mowa nie jest wykrywana przed wygaśnięciem interwałów limitu czasu dla BabbleTimeout właściwości lub InitialSilenceTimeout .
Aparat rozpoznawania wykrywa mowę, ale nie znajduje dopasowań w żadnym z załadowanych i włączonych Grammar obiektów.
Przed wykonaniem rozpoznawania SpeechRecognitionEngine obiekt musi mieć załadowany co najmniej jeden Grammar obiekt. Aby załadować gramatykę rozpoznawania mowy, użyj LoadGrammar metody lub LoadGrammarAsync .
Aby zmodyfikować sposób obsługi przez aparat rozpoznawania chronometrażu mowy lub ciszy w odniesieniu do rozpoznawania, użyj BabbleTimeoutwłaściwości , InitialSilenceTimeout, EndSilenceTimeouti EndSilenceTimeoutAmbiguous .
Aby wykonać rozpoznawanie synchroniczne, użyj jednej z Recognize metod.
RecognizeAsync()
- Źródło:
- SpeechRecognitionEngine.cs
- Źródło:
- SpeechRecognitionEngine.cs
- Źródło:
- SpeechRecognitionEngine.cs
Wykonuje pojedynczą operację asynchronicznego rozpoznawania mowy.
public:
void RecognizeAsync();
public void RecognizeAsync ();
member this.RecognizeAsync : unit -> unit
Public Sub RecognizeAsync ()
Przykłady
Poniższy przykład przedstawia część aplikacji konsolowej, która demonstruje podstawowe asynchroniczne rozpoznawanie mowy. W przykładzie tworzony jest obiekt DictationGrammar, który ładuje go do aparatu rozpoznawania mowy w procesie i wykonuje jedną operację rozpoznawania asynchronicznego. Programy obsługi zdarzeń są uwzględniane w celu zademonstrowania zdarzeń zgłaszanych przez aparat rozpoznawania podczas operacji.
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;
}
}
}
Uwagi
Ta metoda wykonuje pojedynczą operację rozpoznawania asynchronicznego. Rozpoznawanie wykonuje operację względem załadowanych i włączonych gramatyk rozpoznawania mowy.
Podczas wywołania tej metody rozpoznawanie może zgłaszać następujące zdarzenia:
SpeechDetected. Zgłaszane, gdy aparat rozpoznawania wykryje dane wejściowe, które może zidentyfikować jako mowę.
SpeechHypothesized. Podniesione, gdy dane wejściowe tworzą niejednoznaczne dopasowanie z jedną z aktywnych gramatyki.
SpeechRecognitionRejected lub SpeechRecognized. Podniesione, gdy rozpoznawanie finalizuje operację rozpoznawania.
RecognizeCompleted. Podniesione po zakończeniu RecognizeAsync operacji.
Aby pobrać wynik operacji rozpoznawania asynchronicznego, dołącz program obsługi zdarzeń do zdarzenia aparatu rozpoznawania SpeechRecognized . Rozpoznawanie zgłasza to zdarzenie za każdym razem, gdy pomyślnie ukończy operację synchroniczną lub asynchroniczną. Jeśli rozpoznawanie nie powiodło się, właściwość obiektu, Result do którego można uzyskać dostęp w procedurze obsługi zdarzeniaRecognizeCompleted, będzie miała wartość null
.RecognizeCompletedEventArgs
Aby wykonać rozpoznawanie synchroniczne, użyj jednej z Recognize metod.
Ta metoda jest przechowywana w zadaniu, które zwraca wszystkie wyjątki nieużytowe, które może zgłosić synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwracanym zadaniu, ten wyjątek zostanie zgłoszony podczas oczekiwania zadania. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. W przypadku przechowywanych wyjątków zobacz wyjątki zgłoszone przez Recognize()usługę .
Zobacz też
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)
Dotyczy
RecognizeAsync(RecognizeMode)
- Źródło:
- SpeechRecognitionEngine.cs
- Źródło:
- SpeechRecognitionEngine.cs
- Źródło:
- SpeechRecognitionEngine.cs
Wykonuje co najmniej jedną asynchroniczną operację rozpoznawania mowy.
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)
Parametry
- mode
- RecognizeMode
Wskazuje, czy należy wykonać jedną, czy wiele operacji rozpoznawania.
Przykłady
Poniższy przykład przedstawia część aplikacji konsolowej, która demonstruje podstawowe asynchroniczne rozpoznawanie mowy. W przykładzie tworzony jest obiekt DictationGrammar, który ładuje go do aparatu rozpoznawania mowy w procesie i wykonuje wiele operacji rozpoznawania asynchronicznego. Operacje asynchroniczne są anulowane po 30 sekundach. Programy obsługi zdarzeń są uwzględniane w celu zademonstrowania zdarzeń zgłaszanych przez aparat rozpoznawania podczas operacji.
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;
}
}
}
Uwagi
Jeśli mode
parametr ma Multiplewartość , rozpoznawanie kontynuuje wykonywanie operacji rozpoznawania asynchronicznego do momentu RecognizeAsyncCancel wywołania metody lub RecognizeAsyncStop .
Podczas wywołania tej metody rozpoznawanie może zgłaszać następujące zdarzenia:
SpeechDetected. Zgłaszane, gdy aparat rozpoznawania wykryje dane wejściowe, które może zidentyfikować jako mowę.
SpeechHypothesized. Podniesione, gdy dane wejściowe tworzą niejednoznaczne dopasowanie z jedną z aktywnych gramatyki.
SpeechRecognitionRejected lub SpeechRecognized. Podniesione, gdy rozpoznawanie finalizuje operację rozpoznawania.
RecognizeCompleted. Podniesione po zakończeniu RecognizeAsync operacji.
Aby pobrać wynik operacji rozpoznawania asynchronicznego, dołącz program obsługi zdarzeń do zdarzenia aparatu rozpoznawania SpeechRecognized . Rozpoznawanie zgłasza to zdarzenie za każdym razem, gdy pomyślnie ukończy operację synchroniczną lub asynchroniczną. Jeśli rozpoznawanie nie powiodło się, właściwość obiektu, Result do którego można uzyskać dostęp w procedurze obsługi zdarzeniaRecognizeCompleted, będzie miała wartość null
.RecognizeCompletedEventArgs
Operacja rozpoznawania asynchronicznego może zakończyć się niepowodzeniem z następujących powodów:
Mowa nie jest wykrywana przed wygaśnięciem interwałów limitu czasu dla BabbleTimeout właściwości lub InitialSilenceTimeout .
Aparat rozpoznawania wykrywa mowę, ale nie znajduje dopasowań w żadnym z załadowanych i włączonych Grammar obiektów.
Aby wykonać rozpoznawanie synchroniczne, użyj jednej z Recognize metod.
Zobacz też
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)