2012-04-06 51 views
0

私の音声認識に問題があります。 "英語"のウィンドウで問題なく動作します。 これはまた、一部の「外部」ウィンドウでも機能します。しかし、いくつかだけ。C#音声認識エラー - 文法の言語が音声認識装置の言語と一致しません

私はその例外を取得しています: 文法の言語は音声認識

の言語と一致していない私は辞書に私自身の言葉を追加しました。

どうすれば修正できますか?

+0

印象的な例外。中国語のユーザーに英語を話すようにしていますか? –

+0

@HansPassantポーランド人は英語を話すことができますが、ポーランドの窓を使用しています。これは例です。 – Hooch

+0

いくつかのコード(および文法の断片)を表示できますか?どのように文法を書いているかによって、これは予想されるエラーかもしれません。 –

答えて

-1

あなたの現在のバージョンは不明ですが、私は答えようとします。

あなたの英語版Windowsのバージョンに

、Cに移動してください:\プログラムファイル\リファレンスアセンブリ\マイクロソフト\ Frameworkの[YOUR .NETバージョン]

あなたはSystem.Speech.dllを見つける必要があり、

ていることを確認しますこのDLLをあなたの外国のコンピュータに持ち込むことができ、すべてがスムーズに動くはずです。

+1

これは*全く動作しません。 System.Speech.dllはSAPIクライアント層のラッパーです。この不一致は、SAPエンジンのクライアント層とは無関係のSRエンジンによって報告されます。 –

-1

私は友達のコンピュータで同じ問題を抱えていました。だから、これは動作するはず

... 
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は、 "en"または "eng"の2つのインスタンスをサポートしていました。理由は分かりません。コードは最初のものを選択します。私はインターネット上にいくつかのコードを見つけましたが、これは私が作ったものです。

SpeachRecognition.SpeechRecognized += SpeachRecognition_SpeechRecognized; 

すべてが認識されたときにイベントを行うようにされています。ちょうどタイプ:

SpeachRecognition.SpeechRecognized + =

と(少なくともVS 2013年)プレスTABボタンを数回。コードの最後に次のようなコードが生成されます。

void SpeachRecognition_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
    { 
     //then will be some line that you need to replace with your code 
    } 

これが役立つことを願っています。 :)