2012-03-11 87 views
0

我正在編寫一個應用程序,該應用程序應該偵聽用戶命令並將按鍵發送到另一個程序。我正在使用語音識別引擎類,但我的腳本無法正常工作。語音識別引擎不能正常工作

如果我使用自定義語法(很少有單詞像「開始」或「退出」),程序將會始終識別我的一個單詞,即使我說了一些完全不同的單詞。 因爲我說「stackoverflow」和程序識別「開始」。

使用默認字典程序幾乎不可能使用(我必須是100%正確的,否則它不會理解)。

奇怪的是,如果我使用語音識別器而不是語音識別引擎,我的程序可以完美運行,但每當我說一些無關的東西時它就會混淆,因爲Windows語音識別處理結果,我不希望發生這種情況。這就是我實際使用語音識別引擎的原因。

我在做什麼錯?

Choices c = new Choices(new string[] { "use", "menu", "map", "save", "talk", "esc" }); 
GrammarBuilder gb = new GrammarBuilder(c); 
Grammar g = new Grammar(gb); 
sr = new SpeechRecognitionEngine(); 
sr.LoadGrammar(g); 
sr.SetInputToDefaultAudioDevice(); 
sr.SpeechRecognized += sr_SpeechRecognized; 

差點忘了,我不知道這是否相關,但我正在使用Visual Studio 11 Ultimate Beta。

回答

4

對於每個語音識別結果檢測到您還收到表彰的信心 - 低置信水平將表明發動機「不太確定」有關的結果,你可能要拒絕它,例如:

private void SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
{ 
    if (e.Result.Confidence >= 0.7) 
    { 
     //high enough confidence, use result 
    } 
    else 
    { 
     //reject result 
    } 
} 
+0

好吧,它的工作現在好多了,我不得不將它設置爲0.9,但是,我會做更多的測試,但我想這是完美的。 – raz3r 2012-03-11 16:41:16