这个程序抛出异常,我该如何解决?
例外情况是“此系统无法使用语音识别功能。无法找到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;
}
答案 0 :(得分:1)
听起来好像您没有在系统上安装必要的组件,或者您可能没有在完全受信任的应用程序中运行:
对直接来电者完全信任。该成员不能由部分信任的代码使用。有关更多信息,请参阅使用部分受信任的代码中的库。
虽然我原本以为你会得到一个不同的错误。这个问题是在所有机器上发生还是只发生一两个?如果是后者则会指出它是未安装的必需组件。
尝试将SpeechRecognizer
对象的初始化移动到表单构造函数中并将其包装在try ... catch
块中。这将a)告诉你这是否真的导致问题,b)让你优雅地恢复。
答案 1 :(得分:1)
您尝试在哪个操作系统上运行此操作系统?我已经在Windows 7 Professional上成功执行了代码。
我怀疑,虽然框架内提供了System.Speech
,但SAPI /语音识别引擎并未随其安装,但默认情况下它们附带Windows 7。查看windows\system32
文件夹,看看是否有一个名为Speech
的子文件夹来确定这一点。
我刚刚使用Reflector快速查看System.Speech.dll
,System.Speech.Recognition.SpeechRecognizer
的构造函数最终调用并实例化了一个名为System.Speech.Internal.SapiInterop.SapiRecognizer
的类,这使得它非常清楚您需要安装非托管组件。
尝试下载并安装Speech SDK 5.1。