【问题标题】:Is it possible to use WIndows Speech Recognition Engine in a word pronunciation game?是否可以在单词发音游戏中使用 WIndows 语音识别引擎?
【发布时间】:2010-05-18 01:36:45
【问题描述】:

我用来创建一个使用 Windows 语音识别引擎或 SAPI 的应用程序。它就像一个发音游戏,当你正确发音时它会给你分数。但是当我开始使用 SAPI 进行实验时,它的识别能力很差,除非你在上面加载语法(XML),否则它会给出最好的识别结果。

但现在的问题是输入文本中最接近的发音将被识别。 例如:

数据库 -> dedebase -> 正确。

即使你读错了。它会给你正确的答案。

不使用xml语法

当您说数据库时,它会给您“在基础/基础/数据库/等...”

请发表您的答案、建议、说明。投票选出最佳答案。

is it possible or not?

顺便说一句,我在项目中使用 delphi 编译器......

【问题讨论】:

    标签: delphi delphi-2009 speech-recognition sapi voice-recognition


    【解决方案1】:

    我会做两件事:

    1. 使用ISpEnginePronunciation::GetPronunciations将原文转换为音素。
    2. 使用听写语法和发音语言模型强制 SAPI 向您返回一组音素 - 通过调用 ISpRecoGrammar::LoadDictation(L"Pronunciation", SPLO_STATIC) 来执行此操作。
    3. 将识别的音素与目标音素进行比较。

    请注意,ISpEnginePronunciation 在 SAPI 5.1 上不可用,因此仅限于 Vista 和 Windows 7。

    【讨论】:

    【解决方案2】:

    对于你想要的,最好不要使用语法。但它要求用户对语音识别引擎进行“最少”的基础训练。它不是很长并且相对愉快。它确实对识别准确性产生了影响(相信我,我的英语中有很重的法国口音)。
    它甚至可以作为游戏本身的初步练习。
    "Speech Enabling Delphi Applications (zip)" 上看到这个CodeRage 4 session 你可能会觉得有趣

    【讨论】:

      【解决方案3】:

      如果游戏的目的是鼓励用户使用最接近给定语言(例如 EN-US)的“标准发音”的发音,那么让用户训练识别器以适应用户的特定(未经修改的)语音模式可能会适得其反。您将部分训练识别器以更宽容用户的发音失误。

      无论您最终使用的是基于语法的识别还是基于听写的识别(Eric Brown 的帖子看起来很有希望),您可能还想查看“信心”分数。这些分数在执行识别后可用,它们给出了识别器对用户实际所说的内容与识别器认为用户所说的内容相匹配的信心程度的数值。根据识别器配置和用例,置信度分数可能有意义,也可能没有意义。

      如果您根据电话/音素/发音的文本表示来确定准确度得分,那么获得准确度得分的一种快速简便的方法是使用 Levenshtein 距离,该算法有许多免费可用的实现网络上。更好的评分算法可能是重新同步差异,比较的原子单位是单个音素。

      以下是一些用于 MSDN 文档搜索的关键字:
      ISpRecoResult -> GetPhrase -> SPPHRASE -> Rule -> SPPHRASERULE -> SREngineConfidence。

      http://msdn.microsoft.com/en-us/library/ee413319%28v=vs.85%29.aspx
      http://msdn.microsoft.com/en-us/library/ms720460%28v=VS.85%29.aspx

      【讨论】:

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