c# - MS System.Speech.Recognizer 和 SpeechRecognitionEngine 的准确性

标签 c# .net vb.net speech-recognition

我目前正在通过从 xml 文件加载一个非常简单的规则来测试 SpeechRecognitionEngine。事实上,它是介于(“解密电子邮件”、“删除加密”)或(“加密电子邮件”、“添加加密”)之间的简单操作。

我已经训练了我的 Windows 7 PC,并额外添加了加密和解密这两个词,因为我意识到它们非常相似。识别器在区分这两者方面已经存在问题。

我遇到的问题是它过于频繁地识别事物。我将置信度设置为 0.93,因为在安静的房间里,当我说出确切的词时,有时我的声音只能达到 0.93。但是,如果我打开 radio ,播音员的声音或歌曲可能意味着此识别器认为它以超过 0.93 的置信度听到了“解密电子邮件”一词。

也许 Lady Gaga 正在隐藏 Applause 以 secret 解密电子邮件:-)

任何人都可以帮助解决如何使该识别器可行的问题。

事实上,识别器还将键盘噪音识别为“解密电子邮件”。我不明白这怎么可能。

对于我的编辑伙伴,至少有两个用于 MS Speech Microsoft.Speech 和 System.Speech 的托管命名空间 - 对于这个问题,知道它是 System.Speech 很重要。

最佳答案

如果 System.Speech 识别器正在监听的唯一是“加密电子邮件”,那么识别器将生成很多误报。 (特别是在嘈杂的环境中。)如果您并行添加一个 DictationGrammar(特别是发音语法),DictationGrammar 将拾取噪音,您可以在事件处理程序中检查(例如)语法名称以丢弃伪造的认可。

一个(子集)示例:

    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/

相关文章:

c# - 为什么 Microsoft 的这段示例代码会崩溃?

vb.net - catch SocketException

c# - 为可观察集合实现中介设计模式

c# - 如何使用 Windsor 容器注入(inject) Func<T,U>

c# - 如何从客户端设置 HTMLEditorExtender HTML

c# - 在本地调试 Azure 函数提供了一个有趣的 AppDomain.CurrentDomain.BaseDirectory 路径

c# - Moq 验证方法失败,即使方法将被调用

c# - 在 C# 中使用 LINQ 的条件过滤器

c# - C#中switch语句的多个变量

asp.net - 如何最好地生成 CSV(逗号分隔文本文件)以供使用 ASP.NET 下载?