我正在使用SpeechRecognitionEngine
来识别WPF应用程序中的语音。该应用程序使用小型自定义语法,并尝试使用RecognizeMode.Multiple
异步检测单词。
问题是,如果我单击我放置在界面上的TextBox控件内部,识别器会再运行两到三个单词,然后停止运行。 在应用程序的输出窗口中,我可以看到大约4个线程被关闭。
如果我没有点击TextBox,一切正常;我甚至可以在应用程序窗口外面点击记事本或其他东西,识别仍然有效。
我正在使用Windown 7 Home Premium x64和Visual Studio 2010。
以下是相关的代码部分:
try
{
var c = new Choices();
c.Add("copy");
c.Add("cut");
c.Add("paste");
c.Add("delete");
c.Add("select all");
c.Add("compile");
c.Add("refactor");
c.Add("spellcheck");
c.Add("exit");
var gb = new GrammarBuilder(c);
var g = new Grammar(gb);
SpeechRecognitionEngine recognitionEngine = new SpeechRecognitionEngine();
recognitionEngine.SetInputToDefaultAudioDevice();
recognitionEngine.LoadGrammar(g);
recognitionEngine.SpeechRecognized +=
new EventHandler<SpeechRecognizedEventArgs>(rec_SpeechRecognized);
recognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
}
catch (Exception ex)
{
MessageBox.Show(ex + "");
}
private void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
Console.Out.WriteLine(e.Result.Text + " ");
}