1

このプログラムは例外をスローしています。これを解決するにはどうすればよいですか?

例外は、「このシステムでは音声認識を使用できません。SAPI および音声認識エンジンが見つかりません」です。

public partial class Form1 : Form
{
    SpeechRecognizer rec = new SpeechRecognizer();
    public Form1()
    {
        InitializeComponent();
        rec.SpeechRecognized += rec_SpeechRecognized;

    }
    void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
        lblLetter.Text = e.Result.Text;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        var c = new Choices();
        for (var i = 0; i <= 100; i++)
            c.Add(i.ToString());
        var gb = new GrammarBuilder(c);
        var g = new Grammar(gb);
        rec.LoadGrammar(g);
        rec.Enabled = true;

    }
4

2 に答える 2

1

システムに必要なコンポーネントがインストールされていないか、完全に信頼できるアプリケーションで実行されていない可能性があります。

直接の呼び出し元に対する完全な信頼。このメンバーは、部分的に信頼されたコードでは使用できません。詳細については、部分的に信頼されたコードからのライブラリの使用を参照してください。

ソース

それとは別のエラーが発生すると思っていたでしょうが。この問題はすべてのマシンで発生しますか? それとも 1 つまたは 2 つのマシンで発生しますか? 後者の場合は、必要なコンポーネントがインストールされていないことを示しています。

オブジェクトの初期化をフォーム コンストラクターに移動し、ブロックSpeechRecognizerでラップしてみてください。try ... catchこれにより、a) 本当にこれが問題の原因であるかどうかがわかり、b) 正常に回復できるようになります。

于 2010-09-04T10:16:25.713 に答える
1

これを実行しようとしているオペレーティング システムは何ですか? Windows 7 Professional でコードを正常に実行しました。

私の疑いではSystem.Speech、SAPI/音声認識エンジンはフレームワーク内で提供されていますが、デフォルトで Windows 7 に付属していますが、インストールされていません。フォルダーを調べて、これを判断するためにwindows\system32呼び出されるサブフォルダーがあるかどうかを確認しますSpeech

System.Speech.dllReflector と、System.Speech.Recognition.SpeechRecognizer最終的に を呼び出して というクラスをインスタンス化するためのコンストラクターを使用して簡単に調べたところSystem.Speech.Internal.SapiInterop.SapiRecognizer、アンマネージ コンポーネントをインストールする必要があることは明らかです。

Speech SDK 5.1をダウンロードしてインストールしてみてください。

于 2010-09-04T10:25:13.620 に答える