2010-11-18 23 views
2

Windows 7 ile konuşmayı tanımaya çalışıyorum ama her zaman bir konuşmayı bir komut olarak kabul ediyor ya da sadece "Bu neydi?" Diyor.SAPI ve Windows 7 Sorun

Tüm konuşmaları nasıl alabilirim?

KODU:

SpeechRecognizer _speechRecognizer; 

    public Window1() 
    { 
     InitializeComponent(); 

     // set up the recognizer 
     _speechRecognizer = new SpeechRecognizer(); 
     _speechRecognizer.Enabled = false; 
     _speechRecognizer.SpeechRecognized += 
     new EventHandler<SpeechRecognizedEventArgs>(_speechRecognizer_SpeechRecognized); } 

cevap

5

Belki yerine SAPI'nin .net System.Speech ad kullanmak istiyorum? Birkaç yıl önce http://msdn.microsoft.com/en-us/magazine/cc163663.aspx'da yayınlanan çok iyi bir makale var. Muhtemelen şimdiye kadar bulduğum en iyi tanıtım makalesi. Bu biraz güncel değil, ama çok helfpul. (Betadan sonra AppendResultKeyValue yöntemi bırakıldı.)

Paylaşılan bir tanıyıcı kullanmaya mı çalışıyorsunuz? Bu yüzden komutları görüyorsun. Tanıma için belirli bir göreviniz var mı? Bu durumda, göreve özel bir dilbilgisi ve bir yanıltıcı tanıyıcı ile daha iyi sunulacaksınız.

Herhangi bir sözcüğü kullanmanız gerekiyorsa, System.Speech ile birlikte gelen DictationGrammar'ı kullanın. Bkz. http://msdn.microsoft.com/en-us/library/system.speech.recognition.dictationgrammar%28VS.85%29.aspx

Eğlenmek için, düşünebileceğim dikte dilbilgisini kullanmak için en basit .NET pencere formları uygulamasını çırptım. Bir form oluşturdum. Üzerinde bir düğme bıraktı ve düğmeyi büyük yaptı.

using System.Speech.Recognition; 

Sonra button1 aşağıdaki olay işleyicisi ekledi:

private void button1_Click(object sender, EventArgs e) 
{   
    SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(); 
    Grammar dictationGrammar = new DictationGrammar(); 
    recognizer.LoadGrammar(dictationGrammar); 
    try 
    { 
     button1.Text = "Speak Now"; 
     recognizer.SetInputToDefaultAudioDevice(); 
     RecognitionResult result = recognizer.Recognize(); 
     button1.Text = result.Text; 
    } 
    catch (InvalidOperationException exception) 
    { 
     button1.Text = String.Format("Could not recognize input from default aduio device. Is a microphone or sound card available?\r\n{0} - {1}.", exception.Source, exception.Message); 
    } 
    finally 
    { 
     recognizer.UnloadAllGrammars(); 
    }       
} 
+0

sayesinde Michael System.Speech bir başvuru ve çizgi eklendi. Her kelimeyi tanımalıyım. Verdiğiniz bağlantıdaki tüm örnekler aslında komutlar oluşturmakla ilgilidir. Nasıl hepsini alabilirim? – Kaan

+0

Masaüstü tanıyıcıyı kullanırsanız (Windows Vista ve 7'de gönderilir), yerleşik bir Dikte Dilbilgisi ile birlikte gelir. Bkz. Http://msdn.microsoft.com/en-us/library/system.speech.recognition.dictationgrammar%28VS.85%29.aspx –

+0

Yanıtı, DictationGrammar'ı kullanma örneğini içerecek şekilde güncelledim. –