c# – SpeechRecognition将背景噪声识别为语音

c# – SpeechRecognition将背景噪声识别为语音,第1张

概述我在我的程序中使用MSDN的SpeechRecognitionEngine.问题是它将背景噪声识别语音. 例如,如果用手指敲击,敲击桌子,或移动我的椅子,它会将其作为语音选择. 为什么在世界上它会将背景噪声识别为语音. 我对齐我的手指听起来不像我说的“记事本”! 这是代码 using System;using System.Threading;using System.Speech;usi 我在我的程序中使用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();    }        }
总结

以上是内存溢出为你收集整理的c# – SpeechRecognition将背景噪声识别为语音全部内容,希望文章能够帮你解决c# – SpeechRecognition将背景噪声识别为语音所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1252113.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存