我在我的程序中使用MSDN的SpeechRecognitionEngine.问题是它将背景噪声识别为语音.
例如,如果用手指敲击,敲击桌子,或移动我的椅子,它会将其作为语音选择.
为什么在世界上它会将背景噪声识别为语音.
我对齐我的手指听起来不像我说的“记事本”!
这是代码
using System; using System.Threading; using System.Speech; using System.Speech.Synthesis; using System.Speech.Recognition; namespace SpeachTest { public class MainClass { static void Main() { MainClass main = new MainClass(); SpeechRecognitionEngine sre = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US")); Choices choiceList = new Choices(); choiceList.Add(new string[]{"Open","Close","Then","Volume","Up","Firefox","Notepad","Steam","turn","the","Now" } ); GrammarBuilder builder = new GrammarBuilder(); builder.Append(choiceList); Grammar grammar = new Grammar(new GrammarBuilder(builder,10) ); sre.SpeechRecognized += main.sreRecognizedEvent; sre.SpeechDetected += main.sreDetectEvent; sre.SpeechRecognitionRejected += main.sreRejectEvent; sre.RecognizeCompleted += main.sreCompleteEvent; sre.InitialSilenceTimeout = TimeSpan.FromSeconds(0); sre.BabbleTimeout = TimeSpan.FromSeconds(0); sre.EndSilenceTimeout = TimeSpan.FromSeconds(0); sre.EndSilenceTimeoutAmbiguous = TimeSpan.FromSeconds(0); sre.SetInputToDefaultAudioDevice(); sre.LoadGrammar(grammar); while(true){ sre.Recognize(); } } void sreRecognizedEvent(Object sender,SpeechRecognizedEventArgs e){ Console.Write("Reconized ~ " + e.Result.Text + " ~ with confidence " + e.Result.Confidence); Console.WriteLine(); } void sreDetectEvent(Object sender,SpeechDetectedEventArgs e){ Console.WriteLine("Detected some type of input"); } void sreRejectEvent(Object sender,SpeechRecognitionRejectedEventArgs e){ Console.WriteLine("Rejected Input ~ " + e.Result.Text) ; } void sreCompleteEvent(Object sender,System.Speech.Recognition.RecognizeCompletedEventArgs e){ Console.WriteLine("Completed Recongnization"); } } }
解决方法
避免使用任何过滤算法,您可以检查当前显示的
Confidence属性.它介于0.0和1.0之间,其中1非常有信心.我发现0.7效果很好,但你可以搞砸试错.
void sreRecognizedEvent(Object sender,SpeechRecognizedEventArgs e) { if(e.Result.Confidence >= 0.7) { Console.Write("Reconized ~ " + e.Result.Text + " ~ with confidence " + e.Result.Confidence); Console.WriteLine(); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。