我需要使用語音識別進行文件瀏覽,使用命令「顯示數字」。我希望語音識別器在打開文件夾瀏覽器對話框時啓動,並且當瀏覽器對話窗口關閉時,我需要關閉語音識別器。我怎樣才能完全關閉語音識別器在代碼隱藏中使用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();
}