【发布时间】:2015-04-17 06:19:08
【问题描述】:
我在我的程序中使用 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,0, 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");
}
}
}
【问题讨论】:
-
阅读文档,您可能想查看 BabbleTimeout、InitialSilenceTimeout、EndSilenceTimeout 和 EndSilenceTimeoutAmbiguous 属性?
-
刚刚更新了代码并添加了所有设置为 0 的属性。没有改变任何东西
-
@JackBarn 你为什么要为
BabbleTimeout尝试0?我没有检查其他人,但BabbleTimeout0 是默认值。几秒钟左右的值会发生什么? -
@SAM 我将其设置为 ti 0 以排除任何 poisiblites。我改变它的价值没有做任何事情。
-
我怀疑在这种情况下,报告的“语音”的置信度得分非常低。低置信度结果有点像您在静态中仔细聆听可能的声音;如果你足够认真地听,你可能会发现一些听起来有点像演讲的东西,但你可能不会打赌。
标签: c# speech-recognition noise