【问题标题】:Fuzzy EmulateRecognize on Windows Speech RecognitionWindows 语音识别上的 Fuzzy EmulateRecognize
【发布时间】:2013-09-08 12:43:37
【问题描述】:

Microsoft C# API 提供 SpeechRecognitionEngine 来识别音频流。测试识别的一种方法是调用方法 SpeechRecognizer.EmulateRecognize

根据文档:

recognizers ignore case and character width when applying 
grammar rules to the input phrase

我想知道是否有办法处理更多 fuzzy 字符串,因为即使对于拼写错误的文本,置信度也非常低!远离现实生活......

  • 有了音频,我可以满怀信心地说 Hello、Helo、Hello
  • Text 引擎非常严格

编辑:出于什么目的?

我的语音引擎工作正常,但我也想从文本输入中触发它。

假设您在手机上使用 HTML5 SpeechRecognition。我想将识别的文本发送到引擎以获得与语音相同的行为

【问题讨论】:

  • 你能更具体地说明你在这里要求什么吗? EmulateRecognize 根据语法规则有效匹配字符串;我不希望 any 匹配拼写错误的文本。
  • 好吧,如果我说 Hello World 或 Helo World,SpeechEngine 会非常自信地识别我的演讲。如果我用字符串模拟同样的事情,引擎真的很严格。
  • 当您向识别器发送音频时,SR 引擎会做大量工作来创建一组音素(通过声学建模),然后创建一组字符串(通过音素建模)。在这个过程中,大部分的歧义都被消除了。 EmulateRecognize 不会生成通过 SR 引擎处理的音频;它跳过所有的建模,只进行字符串匹配。
  • Excatly 并且没有解决此问题的技巧或技巧? (我假设没有,但我问以防万一^^)

标签: c# speech-recognition fuzzy-search


【解决方案1】:

好的,我找到了答案! 我最好阅读文档!

SpeechRecognizer.EmulateRecognize

真的很简单,测试给定的字符串但是

SpeechRecognizer.SimulateRecognize

将尝试构建输入短语的“理想化”音频表示(基于引擎的词典和声学模型)

所以效果很好!

【讨论】:

    【解决方案2】:

    在 SpeechSynthesizer.Speak() 中输入您的字符串并将其用作 SpeechRecognitionEngine 的输入?

    【讨论】:

    • 呜呜那是个黑客!我喜欢这样,即使它是 CPU 密集型的:-P
    【解决方案3】:

    当您向识别器发送音频时,SR 引擎会执行大量工作来创建一组音素(通过声学建模),然后创建一组字符串(通过音素建模)。在这个过程中,大部分的歧义都被消除了。 EmulateRecognize 不会生成通过 SR 引擎处理的音频;它会跳过所有建模,只进行字符串匹配。

    如果不涉及大量工作(例如,实现 EmulateRecognize 执行的与 SAPI 兼容的 SR 引擎),没有办法解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多