我目前正在测试SpeechRecognitionEngine,方法是从XML文件加载一个非常简单的规则。事实上,它是一个简单的介于(“解密电子邮件”、“删除加密”)或(“加密电子邮件”、“添加加密”)之间的函数。
我已经训练了我的windows 7电脑,并且在我意识到它们非常相似的情况下添加了加密和解密的单词。识别器在区分这两者方面已经存在问题。
我现在的问题是它太频繁地识别事物。我把信心设为0.93,因为当我在一个安静的房间里说准确的话时,有时只能达到0.93。但是,如果我打开收音机,播音员的声音或一首歌可能意味着这个识别器认为它已经听到了超过0.93个字的信心“减少电子邮件”。
也许Lady Gaga是在掩饰掌声来秘密解密邮件:-)
有谁能帮忙弄清楚怎么做才能让这个识别器工作。
事实上,识别器也在接收键盘噪音,称之为“解密电子邮件”。我不明白这怎么可能。
除了我的编辑伙伴外,微软语音至少有两个托管命名空间:微软语音和系统语音-对于这个问题,重要的是要知道它是系统语音。
最佳答案
如果系统语音识别器只监听“加密电子邮件”,那么识别器将产生大量误报。(特别是在嘈杂的环境中。)如果并行添加听写语法(特别是发音语法),听写语法将拾取噪音,您可以在事件处理程序中检查语法的(例如)名称以丢弃虚假的识别。
(子集)示例:
static void Main(string[] args)
{
Choices gb = new Choices();
gb.Add("encrypt the document");
gb.Add("decrypt the document");
Grammar commands = new Grammar(gb);
commands.Name = "commands";
DictationGrammar dg = new DictationGrammar("grammar:dictation#pronunciation");
dg.Name = "Random";
using (SpeechRecognitionEngine recoEngine = new SpeechRecognitionEngine(new CultureInfo("en-US")))
{
recoEngine.SetInputToDefaultAudioDevice();
recoEngine.LoadGrammar(commands);
recoEngine.LoadGrammar(dg);
recoEngine.RecognizeCompleted += recoEngine_RecognizeCompleted;
recoEngine.RecognizeAsync();
System.Console.ReadKey(true);
recoEngine.RecognizeAsyncStop();
}
}
static void recoEngine_RecognizeCompleted(object sender, RecognizeCompletedEventArgs e)
{
if (e.Result.Grammar.Name != "Random")
{
System.Console.WriteLine(e.Result.Text);
}
}
关于c# - MS System.Speech.Recognizer和SpeechRecognitionEngine的准确性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18821566/