SpeechRecognitionEngine.RecognizeAsync Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Spustí asynchronní operaci rozpoznávání řeči.
Přetížení
| Name | Description |
|---|---|
| RecognizeAsync() |
Provede jednu asynchronní operaci rozpoznávání řeči. |
| RecognizeAsync(RecognizeMode) |
Provádí jednu nebo více asynchronních operací rozpoznávání řeči. |
Poznámky
Tyto metody provádějí jedno nebo více asynchronních operací rozpoznávání. Rozpoznávání provádí každou operaci s načtenými a povolenými gramatikami rozpoznávání řeči.
Během volání této metody může rozpoznávání vyvolat následující události:
SpeechDetected. Vyvolá se, když rozpoznává vstup, který dokáže identifikovat jako řeč.
SpeechHypothesized. Vyvolá se při vytvoření nejednoznačné shody s jednou z aktivních gramatik.
SpeechRecognitionRejected nebo SpeechRecognized. Vyvolá se, když rozpoznávání dokončí operaci rozpoznávání.
RecognizeCompleted. Vyvolá se RecognizeAsync při dokončení operace.
Pokud chcete načíst výsledek operace asynchronního rozpoznávání, připojte obslužnou rutinu události k události rozpoznávání SpeechRecognized . Rozpoznávání vyvolá tuto událost vždy, když úspěšně dokončí synchronní nebo asynchronní operaci rozpoznávání. Pokud rozpoznávání nebylo úspěšné, Result vlastnost objektu RecognizeCompletedEventArgs , ke které můžete přistupovat v obslužné rutině RecognizeCompleted události, bude null.
Operace asynchronního rozpoznávání může selhat z následujících důvodů:
Před vypršením intervalů časového limitu BabbleTimeout nebo InitialSilenceTimeout vlastností se rozpoznávání řeči nezjistí.
Modul rozpoznávání rozpozná řeč, ale nenajde žádné shody v žádném z načtených a povolených Grammar objektů.
Před rozpoznáváním SpeechRecognitionEngine musí být načten alespoň jeden Grammar objekt. Pokud chcete načíst gramatiku rozpoznávání řeči, použijte metodu nebo LoadGrammarAsync gramatikuLoadGrammar.
Chcete-li upravit, jak rozpoznávací nástroj zpracovává časování řeči nebo ticha s ohledem na rozpoznávání, použijte BabbleTimeout, InitialSilenceTimeouta EndSilenceTimeoutAmbiguousEndSilenceTimeoutvlastnosti.
Pokud chcete provést synchronní rozpoznávání, použijte jednu z Recognize metod.
RecognizeAsync()
Provede jednu asynchronní operaci rozpoznávání řeči.
public:
void RecognizeAsync();
public void RecognizeAsync();
member this.RecognizeAsync : unit -> unit
Public Sub RecognizeAsync ()
Příklady
Následující příklad ukazuje část konzolové aplikace, která demonstruje základní asynchronní rozpoznávání řeči. Příklad vytvoří DictationGrammar, načte ho do rozpoznávání řeči v procesu a provede jednu asynchronní operaci rozpoznávání. Obslužné rutiny událostí jsou zahrnuty k předvedení událostí, které rozpoznávání vyvolává během operace.
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;
}
}
}
Poznámky
Tato metoda provádí jednu asynchronní operaci rozpoznávání. Rozpoznávání provede operaci s načtenými a povolenými gramatikami rozpoznávání řeči.
Během volání této metody může rozpoznávání vyvolat následující události:
SpeechDetected. Vyvolá se, když rozpoznává vstup, který dokáže identifikovat jako řeč.
SpeechHypothesized. Vyvolá se při vytvoření nejednoznačné shody s jednou z aktivních gramatik.
SpeechRecognitionRejected nebo SpeechRecognized. Vyvolá se, když rozpoznávání dokončí operaci rozpoznávání.
RecognizeCompleted. Vyvolá se RecognizeAsync při dokončení operace.
Pokud chcete načíst výsledek operace asynchronního rozpoznávání, připojte obslužnou rutinu události k události rozpoznávání SpeechRecognized . Rozpoznávání vyvolá tuto událost vždy, když úspěšně dokončí synchronní nebo asynchronní operaci rozpoznávání. Pokud rozpoznávání nebylo úspěšné, Result vlastnost objektu RecognizeCompletedEventArgs , ke které můžete přistupovat v obslužné rutině RecognizeCompleted události, bude null.
Pokud chcete provést synchronní rozpoznávání, použijte jednu z Recognize metod.
Tato metoda ukládá do úlohy všechny výjimky bez použití, které může vyvolat synchronní protějšek metody. Pokud je výjimka uložena do vrácené úlohy, tato výjimka bude vyvolána, když je úkol očekáván. Výjimky použití, například ArgumentException, jsou stále vyvolány synchronně. V případě uložených výjimek se podívejte na výjimky vyvolané Recognize().
Viz také
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)
Platí pro
RecognizeAsync(RecognizeMode)
Provádí jednu nebo více asynchronních operací rozpoznávání řeči.
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
Určuje, jestli se má provést jedna nebo více operací rozpoznávání.
Příklady
Následující příklad ukazuje část konzolové aplikace, která demonstruje základní asynchronní rozpoznávání řeči. Příklad vytvoří DictationGrammar, načte ho do rozpoznávání řeči v procesu a provede několik asynchronních operací rozpoznávání. Asynchronní operace se zruší po 30 sekundách. Obslužné rutiny událostí jsou zahrnuty k předvedení událostí, které rozpoznávání vyvolává během operace.
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;
}
}
}
Poznámky
Pokud mode anoMultiple, rozpoznávací nástroj pokračuje v provádění asynchronních operací rozpoznávání, dokud RecognizeAsyncCancel není volána metoda.RecognizeAsyncStop
Během volání této metody může rozpoznávání vyvolat následující události:
SpeechDetected. Vyvolá se, když rozpoznává vstup, který dokáže identifikovat jako řeč.
SpeechHypothesized. Vyvolá se při vytvoření nejednoznačné shody s jednou z aktivních gramatik.
SpeechRecognitionRejected nebo SpeechRecognized. Vyvolá se, když rozpoznávání dokončí operaci rozpoznávání.
RecognizeCompleted. Vyvolá se RecognizeAsync při dokončení operace.
Pokud chcete načíst výsledek operace asynchronního rozpoznávání, připojte obslužnou rutinu události k události rozpoznávání SpeechRecognized . Rozpoznávání vyvolá tuto událost vždy, když úspěšně dokončí synchronní nebo asynchronní operaci rozpoznávání. Pokud rozpoznávání nebylo úspěšné, Result vlastnost objektu RecognizeCompletedEventArgs , ke které můžete přistupovat v obslužné rutině RecognizeCompleted události, bude null.
Operace asynchronního rozpoznávání může selhat z následujících důvodů:
Před vypršením intervalů časového limitu BabbleTimeout nebo InitialSilenceTimeout vlastností se rozpoznávání řeči nezjistí.
Modul rozpoznávání rozpozná řeč, ale nenajde žádné shody v žádném z načtených a povolených Grammar objektů.
Pokud chcete provést synchronní rozpoznávání, použijte jednu z Recognize metod.
Viz také
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)