我需要使用语音识别进行文件浏览,使用命令“显示数字”。我希望语音识别器在打开文件夹浏览器对话框时启动,并且当浏览器对话窗口关闭时,我需要关闭语音识别器。我怎样才能完全关闭语音识别器在代码隐藏中使用C#?完全关闭语音识别器
编辑:我的问题 我发现“丑”的解决方案:杀死sapisvr.exe
我需要使用语音识别进行文件浏览,使用命令“显示数字”。我希望语音识别器在打开文件夹浏览器对话框时启动,并且当浏览器对话窗口关闭时,我需要关闭语音识别器。我怎样才能完全关闭语音识别器在代码隐藏中使用C#?完全关闭语音识别器
编辑:我的问题 我发现“丑”的解决方案:杀死sapisvr.exe
为什么你要完全关闭WSR?启动和关闭需要相当长的时间。通过CoCreateing共享识别器实例(CLSID_SpSharedRecognizer),然后将识别器状态设置为SPRST_INACTIVE,可以使WSR停止侦听。那多了更快。
您的其他选择是使用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 ;)
}
如果你只想做一个和唯一一个识别,就可以离开了,而循环,并呼吁承认光秃秃的,但我不会除非房间完全保持沉默,并且你不会自言自语,否则不会推荐它。
这是我用什么:
Process[] processes = Process.GetProcessesByName("sapisvr");
foreach (var process in processes)
{
process.Kill();
}