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

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

数据库 -> dedebase -> 正确。

即使你发音错误。它会给你正确的答案。

不使用 xml 语法

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

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

is it possible or not?

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

有帮助吗?

解决方案

你想要的东西,它可能是最好不要使用的语法。但它要求用户做语音识别引擎的“最小”的基本训练。这不是很长,比较愉快。它真的让上识别精度(相信我,我有我的英语强大的法国口音)的差异。结果 它甚至可以包括为游戏本身进行初步的做法。结果 您可能会发现有趣的,看看上的 CodeRage 4届:// cc.embarcadero.com/download.aspx?id=27264" 相对= “nofollow noreferrer”> “语音启用Delphi应用程序(ZIP)”

其他提示

我会做两件事:

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

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

如果游戏的一点是要鼓励用户使用发音最接近“标准发音”对于给定的语言(例如EN-US)说话,然后让用户列车识别器,以适应用户的特定(未改性)的语音模式可能会适得其反。你会是部分训练识别更为用户的发音失误的宽容。

无论你最终使用基于语法的识别或基于听写识别(埃里克·布朗的职位看起来非常有前途),你可能也想看看“信心”的分数。这些成绩是可以一直进行识别后,他们给一个数值的识别如何有信心的是,用户实际说了什么,识别器认为该用户是否匹配所述。根据识别器的配置和使用的情况下,置信度得分可以是或可以不是有意义。

如果您是立足你的准确度得分关掉手机/音位/语音的文字表述,一个快速简便的方法来得到一个准确的分数是使用Levenshtein距离的算法,其中有免费提供的许多实现网络上。一个更好的评分算法可能是一个重新同步差异,与比较是单个手机的原子单元。

下面是MSDN DOC狩猎一些关键字:结果 ISpRecoResult - > GetPhrase - > SPPHRASE - >规则 - > SPPHRASERULE - > SREngineConfidence

http://msdn.microsoft。 COM / EN-US /库/ ee413319%28V = vs.85%29.aspx 结果 http://msdn.microsoft.com/en -us /库/ ms720460%28V = VS.85%29.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top