3

我用来创建一个使用Windows语音识别引擎或SAPI的应用程序。它就像一个游戏的发音,它给你正确的发音时得分。但是当我开始使用SAPI进行实验时,除非您加载语法(XML),否则它的识别效果不佳,因此无法识别。可以在单词发音游戏中使用WIndows语音识别引擎吗?

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

数据库 - > dedebase - >正确。

即使您错误地发现它。它给你正确的答案。

不使用XML语法

时,你说它的数据库给你“在基础/基/数据库/等等......”

请发表你的答案,建议,澄清。为最佳答案投票。

is it possible or not? 

由我使用的项目Delphi编译的方式....

回答

2

你想要的东西,它可能是最好不要使用的语法。但它要求用户进行语音识别引擎的“最小”基本培训。这不是很长,相对愉快。它确实对识别的准确性有所影响(相信我,我的英语口音强烈)。
它甚至可以作为游戏本身的初步练习。
您可能会发现有趣的,看看这个CodeRage 4 session"Speech Enabling Delphi Applications (zip)"

+0

谢谢!弗朗索瓦。链接在我的项目中很有用.... – XBasic3000 2010-05-19 05:01:13

4

我会做两件事情:

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

注意ISpEnginePronunciation上不可SAPI 5.1,所以这仅限于Vista和Windows 7

+0

你有一点。我会尽力检查。 – XBasic3000 2010-05-28 01:08:42

+1

使用'LoadDictation'与“发音”主题与使用默认主题并通过'ISpRecoResult'从'pszPronunciation'获取手机之间有什么区别? – 2010-11-19 19:00:03

+0

嗨,如何比较这两个? – 2013-05-25 14:44:57

2

如果游戏的一点是要鼓励用户使用发音最接近发言对于给定语言(例如EN-US)的“标准发音”,然后让用户训练识别器以适应用户的特定(未修改的)语音模式可能会适得其反。你会部分地训练识别器,以便更加宽容用户的发音失误。无论你最终使用基于语法的识别还是基于听写的识别(Eric Brown的帖子看起来非常有前途),你可能还想看看“自信”分数。这些分数在识别完成后可用,并且它们给出了一个数字值,以表示识别器对用户实际说的内容与识别器认为用户所说的内容相匹配的自信程度。根据识别器配置和使用情况,置信度分数可能有意义,也可能没有意义。

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

下面是MSDN文档狩猎一些关键字:
ISpRecoResult - > GetPhrase - > SPPHRASE - >规则 - > 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

+0

嗨,如何获得数值?输出是SP_LOW_CONFIDENCE,SP_NORMAL_CONFIDENCE或SP_HIGH_CONFIDENCE – 2013-05-25 14:58:13

+0

@Knight SPPHRASEPROPERTY结构的SREngineConfidence字段有一个数字值。请参阅http://msdn.microsoft.com/en-us/library/ms720456(v=vs.85).aspx – 2013-05-25 18:00:10

+0

非常感谢您的回复。我真的很感谢你的帮助 – 2013-05-26 18:04:10