C#程序异常

时间:2010-09-04 10:10:25

标签: c# sapi

这个程序抛出异常,我该如何解决?

  

例外情况是“此系统无法使用语音识别功能。无法找到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;

    }

2 个答案:

答案 0 :(得分:1)

听起来好像您没有在系统上安装必要的组件,或者您可能没有在完全受信任的应用程序中运行:

  

对直接来电者完全信任。该成员不能由部分信任的代码使用。有关更多信息,请参阅使用部分受信任的代码中的库。

Source

虽然我原本以为你会得到一个不同的错误。这个问题是在所有机器上发生还是只发生一两个?如果是后者则会指出它是未安装的必需组件。

尝试将SpeechRecognizer对象的初始化移动到表单构造函数中并将其包装在try ... catch块中。这将a)告诉你这是否真的导致问题,b)让你优雅地恢复。

答案 1 :(得分:1)

您尝试在哪个操作系统上运行此操作系统?我已经在Windows 7 Professional上成功执行了代码。

我怀疑,虽然框架内提供了System.Speech,但SAPI /语音识别引擎并未随其安装,但默认情况下它们附带Windows 7。查看windows\system32文件夹,看看是否有一个名为Speech的子文件夹来确定这一点。

我刚刚使用Reflector快速查看System.Speech.dllSystem.Speech.Recognition.SpeechRecognizer的构造函数最终调用并实例化了一个名为System.Speech.Internal.SapiInterop.SapiRecognizer的类,这使得它非常清楚您需要安装非托管组件。

尝试下载并安装Speech SDK 5.1