【发布时间】:2017-10-21 07:04:00
【问题描述】:
我在C# 创建win form 应用程序,它可以识别用户的声音然后响应它。当我尝试说什么时,出现此异常An unhandled exception of type 'System.InvalidOperationException' occurred in System.Speech.dll。
如果有人知道,请提供帮助。 这是我的代码以便更好地理解.....
public partial class Form1 : Form
{
SpeechRecognitionEngine recEngine = new SpeechRecognitionEngine();
public Form1()
{
InitializeComponent();
}
private void enableBtn_Click(object sender, EventArgs e)
{
recEngine.RecognizeAsync(RecognizeMode.Multiple);
disableBtn.Enabled = true;
}
private void Form1_Load(object sender, EventArgs e)
{
Choices command = new Choices();
command.Add(new String[] { "say hello" , "show my name"});
GrammarBuilder gBuilder = new GrammarBuilder();
gBuilder.Append(command);
Grammar gram = new Grammar(gBuilder);
recEngine.LoadGrammarAsync(gram);
recEngine.SetInputToDefaultAudioDevice();
recEngine.RecognizeAsync(RecognizeMode.Multiple);
recEngine.SpeechRecognized += recEngine_SpeechRecognized;
}
void recEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
switch (e.Result.Text)
{
case "say hello":
MessageBox.Show("Hello Quanit!!");
break;
case "show my name":
richTextBox1.Text += "\nQuanit";
break;
}
}
private void disableBtn_Click(object sender, EventArgs e)
{
recEngine.RecognizeAsyncStop();
disableBtn.Enabled = false;
}
}
【问题讨论】:
-
将异常的完整描述添加到问题及其被抛出的位置
-
它被扔在那条线上。 recEngine.RecognizeAsync(RecognizeMode.Multiple);
-
你有 recEngine.RecognizeAsync(RecognizeMode.Multiple);在两个地方,一个在
Form1_Load,另一个在enableBtn_Click。开始已经开始识别不是一个好主意,您可能只想保留 1。另一个问题是您尝试在异步模式下加载语法,但不要等待它加载。最好使用简单的LoadGrammar
标签: c# voice-recognition voice