我的語音識別存在問題。 它在沒有問題的「英文」窗口上工作。 它也適用於一些「外國」窗口。但只有一些。C#語音識別錯誤 - 語法語言與語音識別器的語言不匹配
我收到例外: 的語法不匹配,語音識別
我說我自己的話字典的語言的語言。
我該如何解決?
我的語音識別存在問題。 它在沒有問題的「英文」窗口上工作。 它也適用於一些「外國」窗口。但只有一些。C#語音識別錯誤 - 語法語言與語音識別器的語言不匹配
我收到例外: 的語法不匹配,語音識別
我說我自己的話字典的語言的語言。
我該如何解決?
不確定您使用的是哪個版本的.net,但我會嘗試回答。
你的英語Windows版本,請瀏覽到C:\ Program Files文件\參考大會\微軟\框架[你的.NET版本]
你應該找到System.Speech.dll,
確保把這個.dll放到你的外國電腦上,一切都應該順利進行。
這根本不會工作*。 System.Speech.dll是SAPI客戶端層的包裝器;不匹配將由SR引擎報告,該引擎獨立於SAPI客戶層。 – 2013-09-20 16:13:44
我在我的朋友計算機上遇到了同樣的問題。所以我做了這個(它只是代碼的一部分,因爲所有的代碼都很長):
...
RecognizerInfo recognizerInfo = null;
foreach (RecognizerInfo ri in SpeechRecognitionEngine.InstalledRecognizers())
{
if ((ri.Culture.TwoLetterISOLanguageName.Equals("en")) && (recognizerInfo == null))
{
recognizerInfo = ri;
break;
}
}
SpeechRecognitionEngine SpeachRecognition = new SpeechRecognitionEngine(recognizerInfo);
GrammarBuilder gb = new GrammarBuilder(startLiserninFraze);
gb.Culture = recognizerInfo.Culture;
grammar = new Grammar(gb);
SpeachRecognition.RequestRecognizerUpdate();
SpeachRecognition.LoadGrammar(grammar);
SpeachRecognition.SpeechRecognized += SpeachRecognition_SpeechRecognized;
SpeachRecognition.SetInputToDefaultAudioDevice();
SpeachRecognition.RecognizeAsync(RecognizeMode.Multiple);
...
所以這應該工作。我的朋友PC支持2個「en」或「eng」的實例。不知道爲什麼。所以代碼選擇第一個。我在互聯網上發現了一些代碼,其中一些代碼是由我製作的。
SpeachRecognition.SpeechRecognized += SpeachRecognition_SpeechRecognized;
當一切都被識別時,使得事件發生。只是類型:
SpeachRecognition.SpeechRecognized + =
和壓TAB按鈕(ATLEAST在VS 2013)幾次。然後在代碼的底部它會產生這樣的事情:
void SpeachRecognition_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
//then will be some line that you need to replace with your code
}
我希望這會有所幫助。 :)
令人印象深刻的例外。你想讓你的中國用戶說英語嗎? – 2012-04-06 16:51:10
@HansPassant波蘭人可以說英語,但他們使用波蘭語的窗戶。這是例子。 – Hooch 2012-04-06 17:30:09
你能展示一些代碼(和語法片段)嗎?取決於你如何編寫語法,這可能是一個預期的錯誤。 – 2013-09-20 16:15:28