我在使用Microsoft语音识别器时遇到问题。我试图让它经常听我的意思,只有在HELLO这个词得到承认之后,它才会显示我说的话。这部分似乎正在工作,但是在15-20秒之后,因为对象“sre”被破坏(我认为),识别器停止响应。
static void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
List<string> words = new List<string>();
int count = e.Result.Words.Count;
for (int i = 0; i < count; i++)
{
words.Add(e.Result.Words[i].Text);
}
if (e.Result.Confidence > 0.7)
{
if (words[0].ToString() == "Hello")
{
switch (count)
{
case 2:
t.Text = words[1];
break;
case 3:
t.Text = words[1] + " " + words[2];
break;
}
}
}
}
private void InitializeSpeechGrammar()
{
t = UserMessage;
SpeechRecognitionEngine sre= new SpeechRecognitionEngine();
sre.SetInputToDefaultAudioDevice();
sre.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(sre_SpeechRecognized);
var grammarBuilder = new GrammarBuilder();
grammarBuilder.Append(new Choices("Hello"));
grammarBuilder.AppendWildcard();
sre.BabbleTimeout = TimeSpan.FromSeconds(3);
sre.InitialSilenceTimeout = TimeSpan.FromSeconds(3);
var CommToRecognize = new Choices();
CommToRecognize.Add(new string[] { "Red", "Green", "Blue", "Yellow", "Grey" });
grammarBuilder.Append(CommToRecognize);
Grammar g = new Grammar(grammarBuilder);
sre.LoadGrammar(g);
sre.RecognizeAsync(RecognizeMode.Multiple);
}
所以,有RecognizeMode.Multiple
模式:
sre.RecognizeAsync(RecognizeMode.Multiple);
我应该使用这种模式吗?或者还有别的我做错了吗?