SpeechRecognitionEngine.RecognizeAsync Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Zaman uyumsuz bir konuşma tanıma işlemi başlatır.
Aşırı Yüklemeler
RecognizeAsync() |
Tek, zaman uyumsuz bir konuşma tanıma işlemi gerçekleştirir. |
RecognizeAsync(RecognizeMode) |
Bir veya daha fazla zaman uyumsuz konuşma tanıma işlemi gerçekleştirir. |
Açıklamalar
Bu yöntemler tek veya birden çok zaman uyumsuz tanıma işlemi gerçekleştirir. Tanıyıcı, yüklenen ve etkinleştirilen konuşma tanıma dil bilgilerinde her işlemi gerçekleştirir.
Bu yönteme yapılan bir çağrı sırasında, tanıyıcı aşağıdaki olayları tetikleyebilir:
SpeechDetected. Tanıyıcı konuşma olarak tanımlayabildiği girişi algıladığında tetikler.
SpeechHypothesized. Giriş, etkin dil bilgilerinden biriyle belirsiz bir eşleşme oluşturduğunda oluşturulur.
SpeechRecognitionRejected veya SpeechRecognized. Tanıyıcı bir tanıma işlemini sonlandırdığında oluşturulur.
RecognizeCompleted. İşlem RecognizeAsync tamamlandığında tetiklenir.
Zaman uyumsuz bir tanıma işleminin sonucunu almak için, tanıyıcının SpeechRecognized olayına bir olay işleyicisi ekleyin. Tanıyıcı, zaman uyumlu veya zaman uyumsuz bir tanıma işlemini başarıyla tamamladığınızda bu olayı tetikler. Tanıma başarılı olmazsa, Result olay işleyicisinde erişebileceğiniz nesnesindeki RecognizeCompleted özelliği RecognizeCompletedEventArgs olurnull
.
Zaman uyumsuz tanıma işlemi aşağıdaki nedenlerle başarısız olabilir:
veya InitialSilenceTimeout özellikleri için BabbleTimeout zaman aşımı aralıklarının süresi dolmadan önce konuşma algılanmaz.
Tanıma altyapısı konuşmayı algılar ancak yüklü ve etkin Grammar nesnelerinden hiçbirinde eşleşme bulmaz.
SpeechRecognitionEngine tanıma gerçekleştirmeden önce en az bir Grammar nesnenin yüklenmiş olması gerekir. Konuşma tanıma dil bilgisini yüklemek için veya LoadGrammarAsync yöntemini kullanınLoadGrammar.
Tanıyıcının tanıma açısından konuşma veya sessizlik zamanlamasını işleme biçimini değiştirmek için , InitialSilenceTimeout, EndSilenceTimeoutve EndSilenceTimeoutAmbiguous özelliklerini kullanınBabbleTimeout.
Zaman uyumlu tanıma gerçekleştirmek için yöntemlerden birini Recognize kullanın.
RecognizeAsync()
- Kaynak:
- SpeechRecognitionEngine.cs
- Kaynak:
- SpeechRecognitionEngine.cs
Tek, zaman uyumsuz bir konuşma tanıma işlemi gerçekleştirir.
public:
void RecognizeAsync();
public void RecognizeAsync ();
member this.RecognizeAsync : unit -> unit
Public Sub RecognizeAsync ()
Örnekler
Aşağıdaki örnekte, bir konsol uygulamasının temel zaman uyumsuz konuşma tanımayı gösteren bölümü gösterilmektedir. Örnek bir DictationGrammaroluşturur, bunu işlem içi konuşma tanıyıcısına yükler ve bir zaman uyumsuz tanıma işlemi gerçekleştirir. Olay işleyicileri, tanıyıcının işlem sırasında tetiklediğini olayları göstermek için dahil edilir.
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;
}
}
}
Açıklamalar
Bu yöntem tek bir zaman uyumsuz tanıma işlemi gerçekleştirir. Tanıyıcı, yüklenen ve etkinleştirilen konuşma tanıma dil bilgilerine karşı işlemi gerçekleştirir.
Bu yönteme yapılan bir çağrı sırasında, tanıyıcı aşağıdaki olayları tetikleyebilir:
SpeechDetected. Tanıyıcı konuşma olarak tanımlayabildiği girişi algıladığında tetikler.
SpeechHypothesized. Giriş, etkin dil bilgilerinden biriyle belirsiz bir eşleşme oluşturduğunda oluşturulur.
SpeechRecognitionRejected veya SpeechRecognized. Tanıyıcı bir tanıma işlemini sonlandırdığında oluşturulur.
RecognizeCompleted. İşlem RecognizeAsync tamamlandığında tetiklenir.
Zaman uyumsuz bir tanıma işleminin sonucunu almak için, tanıyıcının SpeechRecognized olayına bir olay işleyicisi ekleyin. Tanıyıcı, zaman uyumlu veya zaman uyumsuz bir tanıma işlemini başarıyla tamamladığınızda bu olayı tetikler. Tanıma başarılı olmazsa, Result olay işleyicisinde erişebileceğiniz nesnesindeki RecognizeCompleted özelliği RecognizeCompletedEventArgs olurnull
.
Zaman uyumlu tanıma gerçekleştirmek için yöntemlerden birini Recognize kullanın.
Bu yöntem, yöntemin zaman uyumlu karşılık geleninin atabileceği tüm kullanım dışı özel durumları döndürdüğü görevde depolar. Döndürülen görevde bir özel durum depolanıyorsa, görev beklenirken bu özel durum oluşturulur. gibi ArgumentExceptionkullanım özel durumları yine de zaman uyumlu olarak oluşturulur. Depolanan özel durumlar için tarafından oluşan Recognize()özel durumlara bakın.
Ayrıca bkz.
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)
Şunlara uygulanır
RecognizeAsync(RecognizeMode)
- Kaynak:
- SpeechRecognitionEngine.cs
- Kaynak:
- SpeechRecognitionEngine.cs
Bir veya daha fazla zaman uyumsuz konuşma tanıma işlemi gerçekleştirir.
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)
Parametreler
- mode
- RecognizeMode
Bir veya birden çok tanıma işlemi gerçekleştirilip gerçekleştirilmeyeceğini gösterir.
Örnekler
Aşağıdaki örnekte, bir konsol uygulamasının temel zaman uyumsuz konuşma tanımayı gösteren bölümü gösterilmektedir. Örnek bir DictationGrammaroluşturur, bunu işlem içi konuşma tanıyıcısına yükler ve birden çok zaman uyumsuz tanıma işlemi gerçekleştirir. Zaman uyumsuz işlemler 30 saniye sonra iptal edilir. Olay işleyicileri, tanıyıcının işlem sırasında tetiklediğini olayları göstermek için dahil edilir.
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;
}
}
}
Açıklamalar
ise mode
Multiple, veya yöntemi çağrılana kadar tanıyıcı zaman uyumsuz tanıma işlemleri gerçekleştirmeye RecognizeAsyncCancelRecognizeAsyncStop devam eder.
Bu yönteme yapılan bir çağrı sırasında, tanıyıcı aşağıdaki olayları tetikleyebilir:
SpeechDetected. Tanıyıcı konuşma olarak tanımlayabildiği girişi algıladığında tetikler.
SpeechHypothesized. Giriş, etkin dil bilgilerinden biriyle belirsiz bir eşleşme oluşturduğunda oluşturulur.
SpeechRecognitionRejected veya SpeechRecognized. Tanıyıcı bir tanıma işlemini sonlandırdığında oluşturulur.
RecognizeCompleted. İşlem RecognizeAsync tamamlandığında tetiklenir.
Zaman uyumsuz bir tanıma işleminin sonucunu almak için, tanıyıcının SpeechRecognized olayına bir olay işleyicisi ekleyin. Tanıyıcı, zaman uyumlu veya zaman uyumsuz bir tanıma işlemini başarıyla tamamladığınızda bu olayı tetikler. Tanıma başarılı olmazsa, Result olay işleyicisinde erişebileceğiniz nesnesindeki RecognizeCompleted özelliği RecognizeCompletedEventArgs olurnull
.
Zaman uyumsuz tanıma işlemi aşağıdaki nedenlerle başarısız olabilir:
veya InitialSilenceTimeout özellikleri için BabbleTimeout zaman aşımı aralıklarının süresi dolmadan önce konuşma algılanmaz.
Tanıma altyapısı konuşmayı algılar ancak yüklü ve etkin Grammar nesnelerinden hiçbirinde eşleşme bulmaz.
Zaman uyumlu tanıma gerçekleştirmek için yöntemlerden birini Recognize kullanın.
Ayrıca bkz.
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)