2017-03-22 37 views
1
SpeechRecognitionEngine sre = new SpeechRecognitionEngine(); 
Choices clist = new Choices(); 
// just assume I have added words in clist not shown here 
Grammar gr = new Grammar(new GrammarBuilder(clist)); 

sre.RequestRecognizerUpdate(); 
sre.LoadGrammar(gr); 
sre.SpeechRecognized += sre_SpeechRecognized; 
sre.SetInputToDefaultAudioDevice(); 
sre.RecognizeAsync(RecognizeMode.Multiple); 

void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
{ 
//This only outputs words present in grammar 
    Console.WriteLine(e.Result.Text); 
} 

總之,爲什麼我們需要語法識別語法。如果需要語法,那有什麼意義。如果識別器必須匹配語法中存在的字符串,爲什麼我們不能只輸出語音識別器無法識別的語法?語音識別中爲什麼需要語法C#

非常感謝,並糾正我錯在哪裏。

+0

[語音識別API沒有語法C#]可能的重複(http://stackoverflow.com/questions/9229187/speech-recognition-api-without-grammar-c-sharp) –

回答

3

我們使用語法來區分押韻單詞或單詞的發音方式。例如你好,黃色。樣品在link有一個很好的解釋。你好涉及到問候語法而黃色涉及語法。這提高了識別效率/準確性。當系統移動到 特定狀態

如果語法規則或語法內的分組是聰明, 開發商可以啓用和禁用場景。它可以給出上下文,並且在某些情況下,可以爲系統正在監聽的單詞提供更好的準確性。

您也可以參考MSDN鏈接瞭解Purpose of Grammars的詳細信息。

它有助於代碼來提供類似的功能限制詞彙定製詞彙過濾器識別結果標識規則

+0

我看到然後我有以下兩個的問題。 1-可以禁用語法,只輸出可識別寫入或錯誤的內容。 2 - 如果這是不可能的,那麼我可以包括安卓語音識別類在C#因爲我想它使用離線谷歌API,因爲當我在Android中創建一個SMS解說器應用程序,我剛剛完成了speechRecognizer類,並使用其功能和事件和我沒有創建任何語法,也許是因爲它使用內置於android SDK的google api語法。如果我可以使用它會很好。 –

+0

@ Ahmed.J,1.是的,你可以。 2.我不確定安卓語音識別。 –