Microsoft语音识别器停止识别

时间:2017-01-10 21:42:50

标签: wpf speech-recognition

我在使用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);

我应该使用这种模式吗?或者还有别的我做错了吗?

0 个答案:

没有答案