完全关闭语音识别器

时间:2012-02-18 17:46:23

标签: c# speech-recognition

我需要使用语音识别进行文件浏览,使用命令“show numbers”。我希望在打开文件夹浏览器对话框时启动Speech Recognizer,当浏览器对话框窗口关闭时,我希望语音识别器关闭。如何在代码隐藏中使用C#完全关闭语音识别器?

编辑: 我找到了“丑陋”的解决方案来解决我的问题:杀死sapisvr.exe

3 个答案:

答案 0 :(得分:0)

为什么要完全关闭WSR?启动和关闭需要相当长的时间。通过CoCreateing共享识别器实例(CLSID_SpSharedRecognizer),然后将识别器状态设置为SPRST_INACTIVE,可以使WSR停止侦听。那个很多更快。

答案 1 :(得分:0)

您的另一个选择是使用inproc SpeechRecognitionEngine。

创建引擎并加载适当的语法(即使它只是听写语法),然后只要文件浏览器对话框打开就调用Recognize()。

像这样(spitballing,而不是从VS复制):

// This goes in your application initialization code
var engine = new SpeechRecognitionEngine();
// Set event handlers here...
// Load grammar here...

// This goes in your code where you open the dialog and want
// speech recognition
while (isFileDialogOpen) {
    engine.Recognize(); // It's probably not called 'engine' in your code ;)
}

如果你只想进行一次识别,你可以省略while循环并调用识别裸,但我不推荐它,除非房间完全沉默,你不要自言自语。 / p>

答案 2 :(得分:0)

这就是我使用的:

Process[] processes = Process.GetProcessesByName("sapisvr");
foreach (var process in processes)
    {
        process.Kill();
    }