2012-02-18 82 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(); 
    }