2012-02-18 79 views
0

我需要使用语音识别进行文件浏览,使用命令“显示数字”。我希望语音识别器在打开文件夹浏览器对话框时启动,并且当浏览器对话窗口关闭时,我需要关闭语音识别器。我怎样才能完全关闭语音识别器在代码隐藏中使用C#?完全关闭语音识别器

编辑:我的问题 我发现“丑”的解决方案:杀死sapisvr.exe

回答

0

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

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 ;) 
} 

如果你只想做一个和唯一一个识别,就可以离开了,而循环,并呼吁承认光秃秃的,但我不会除非房间完全保持沉默,并且你不会自言自语,否则不会推荐它。

0

这是我用什么:

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