2012-12-21 51 views
1

我與語音識別在C#中使用SpeechRecognitionEngine圖書館工作,我已經設置了單詞「開始」作爲一個詞來識別(選擇):SpeechRecognitionEngine始終認識到選擇的話,即使它錯

Choices choices_start = new Choices("start"); 
GrammarBuilder grBuilder_start = new GrammarBuilder(choices_start); 
Grammar grammar_start = new Grammar(grBuilder_start); 

SpeechRecognitionEngine speech = new SpeechRecognitionEngine(); 
speech.LoadGrammar(grammar_start); 
speech.SpeechRecognized += RecognizerSpeechRecognized; 

private void RecognizerSpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
{ 
    foreach (RecognizedWordUnit word in e.Result.Words) 
    { 
     switch (word.Text) 
     { 
      case "start": 
       Console.WriteLine(word.Text); 
       speech.UnloadGrammar(grammar_start); 
       speech.LoadGrammar(grammar_using); 
       break; 
      default: 
       Console.WriteLine(word.Text); 
       break; 
     } 
    } 
} 

問題是,無論我說什麼,它總是認識到「開始」一詞,任何想法爲什麼?

回答

3

這是算法的工作原理。只要你給它一個選擇,它只會給你指定的單詞。你需要給它更多的文本變體來尋找。

例如,如果要識別任意文本,則可以使用DictationGrammar而不是簡單文法。請注意,單詞列表將仍然有限,它將無法識別非常罕見的單詞。但是名單會很大。

如果您的任務是在連續流中查找特定單詞,則需要查找關鍵字識別引擎,而不是語音識別引擎。 Microsoft不提供關鍵字定位引擎功能。你可以使用開源引擎來構建一個像CMUSphinx

相關問題