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í
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í jednu 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ání zjistí vstup, který dokáže identifikovat jako řeč.
SpeechHypothesized. Při vyvolání při zadání se vytvoří nejednoznačná shoda s jednou z aktivních gramatik.
SpeechRecognitionRejected nebo SpeechRecognized: Vyvolá se, když rozpoznávání dokončí operaci rozpoznávání.
RecognizeCompleted. Vyvolá se RecognizeAsync po 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é, vlastnost objektuResult, ke které můžete přistupovat v obslužné rutině RecognizeCompleted události, bude null
.RecognizeCompletedEventArgs
Operace asynchronního rozpoznávání může selhat z následujících důvodů:
Řeč se nezjistí před vypršením časových limitů pro BabbleTimeout vlastnosti nebo InitialSilenceTimeout .
Modul rozpoznávání rozpozná řeč, ale nenajde žádné shody v žádném z načtených a povolených Grammar objektů.
Před provedením SpeechRecognitionEngine rozpoznávání musí mít načtený alespoň jeden Grammar objekt. Pokud chcete načíst gramatiku rozpoznávání řeči, použijte metodu LoadGrammar nebo LoadGrammarAsync .
Pokud chcete změnit způsob, jakým rozpoznávání zpracovává časování řeči nebo ticha s ohledem na rozpoznávání, použijte BabbleTimeoutvlastnosti , EndSilenceTimeoutInitialSilenceTimeout, a EndSilenceTimeoutAmbiguous .
K provedení synchronního 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ří objekt , načte DictationGrammarho do rozpoznávání řeči v rámci procesu a provede jednu asynchronní operaci rozpoznávání. Součástí jsou obslužné rutiny událostí, které předvádějí události, které rozpoznávání vyvolá 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í provádí 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ání zjistí vstup, který dokáže identifikovat jako řeč.
SpeechHypothesized. Při vyvolání při zadání se vytvoří nejednoznačná shoda s jednou z aktivních gramatik.
SpeechRecognitionRejected nebo SpeechRecognized: Vyvolá se, když rozpoznávání dokončí operaci rozpoznávání.
RecognizeCompleted. Vyvolá se RecognizeAsync po 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é, vlastnost objektuResult, ke které můžete přistupovat v obslužné rutině RecognizeCompleted události, bude null
.RecognizeCompletedEventArgs
K provedení synchronního rozpoznávání použijte jednu z Recognize metod .
Tato metoda ukládá do úlohy, která vrací všechny výjimky nepouužování, které může vyvolat synchronní protějšek metody. Pokud je do vrácené úlohy uložena výjimka, bude tato výjimka vyvolána, když je úloha očekávána. Výjimky použití, jako ArgumentExceptionje , se stále vyvolává synchronně. Informace o uložených výjimkách najdete v tématu Výjimky vyvolané nástrojem 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. V příkladu se vytvoří objekt , který DictationGrammarnačte do rozpoznávání řeči v rámci procesu a provede několik asynchronních operací rozpoznávání. Asynchronní operace se zruší po 30 sekundách. Součástí jsou obslužné rutiny událostí, které předvádějí události, které rozpoznávání vyvolá 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
je Multiple, nástroj pro rozpoznávání pokračuje v provádění asynchronních operací rozpoznávání, dokud RecognizeAsyncCancel není volána metoda nebo 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ání zjistí vstup, který dokáže identifikovat jako řeč.
SpeechHypothesized. Při vyvolání při zadání se vytvoří nejednoznačná shoda s jednou z aktivních gramatik.
SpeechRecognitionRejected nebo SpeechRecognized: Vyvolá se, když rozpoznávání dokončí operaci rozpoznávání.
RecognizeCompleted. Vyvolá se RecognizeAsync po 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é, vlastnost objektuResult, ke které můžete přistupovat v obslužné rutině RecognizeCompleted události, bude null
.RecognizeCompletedEventArgs
Operace asynchronního rozpoznávání může selhat z následujících důvodů:
Řeč se nezjistí před vypršením časových limitů pro BabbleTimeout vlastnosti nebo InitialSilenceTimeout .
Modul rozpoznávání rozpozná řeč, ale nenajde žádné shody v žádném z načtených a povolených Grammar objektů.
K provedení synchronního rozpoznávání použijte jednu z Recognize metod .
Viz také
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)