C# 语音识别基于键控的异步识别
我试图让我的程序只在按下shift键(即所谓的按键通话)时才听我说话,并且我尝试使用以下代码,但当按下该键超过1-2秒时,我出现以下错误: System.Speech.dll中发生“System.InvalidOperationException”类型的未处理异常 其他信息:识别器进行识别时,无法执行此操作。 以下是代码的一部分:C# 语音识别基于键控的异步识别,c#,C#,我试图让我的程序只在按下shift键(即所谓的按键通话)时才听我说话,并且我尝试使用以下代码,但当按下该键超过1-2秒时,我出现以下错误: System.Speech.dll中发生“System.InvalidOperationException”类型的未处理异常 其他信息:识别器进行识别时,无法执行此操作。 以下是代码的一部分: private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.ShiftKey)
{
label1.BackColor = Color.Green;
label1.Text = "Speak";
RecEngine.RecognizeAsync(RecognizeMode.Multiple);
e.SuppressKeyPress = true;
}
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.ShiftKey)
{
label1.BackColor = Color.Yellow;
label1.Text = "Ready";
RecEngine.RecognizeAsyncStop();
e.SuppressKeyPress = true;
}
}
按下按钮时,会重复调用
Form1\u KeyDown
功能
你需要检查按钮是否已经按下
private bool recognitionRunning;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.ShiftKey && !recognitionRunning)
{
label1.BackColor = Color.Green;
label1.Text = "Speak";
RecEngine.RecognizeAsync(RecognizeMode.Multiple);
e.SuppressKeyPress = true;
recognitionRunning = true;
}
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.ShiftKey)
{
label1.BackColor = Color.Yellow;
label1.Text = "Ready";
RecEngine.RecognizeAsyncStop();
e.SuppressKeyPress = true;
recognitionRunning = false;
}
}