将通用占位符添加到SRGS语法

时间:2013-04-09 22:35:51

标签: c# windows-phone-8 voice-recognition

我尝试在我的应用中添加语音识别功能。但遗憾的是,我找不到添加通用占位符的方法。例如,我想说“我正在寻找stackoverflow”然后我使用这个语法:

<grammar root="start" {...}>
  <rule id="start" scope="public">
    I am       
    <one-of>         
      <item> looking for</item>
      <item> listening to</item> 
    </one-of>
  </rule>

<!-- here could be any word -->

</grammar>

我的问题是,如何实现“stackoverflow”的搜索。如果我使用这种语法,识别器总会找到“我正在寻找”。太棒了,但重要的一句话不见了。 如果我没有使用任何语法,那么我会得到类似“我和四个牛排溢出”的东西。在这里,我得到了重要的一句话,但不能用规则约束“我是”和“寻找”。

我的需要当然是“我正在寻找牛排溢出”。

我怎么能实现这个目标?提前谢谢!

1 个答案:

答案 0 :(得分:1)

没有办法识别“任何单词”只是因为你不能严格定义“任何单词”。 “fasdfewqrqew”是否算作您想要识别的单词?我肯定不会。

我确定你想要识别某个单词列表,可能很大。然后你可以在SRGS语法中列出所有这些。您可以找到包含频繁单词here的单词列表 将列表转换为语法。

如果你想增加列表覆盖率,你也可以在语法中输入音节序列而不是单词列表。您可以从CMUSphinx project的CMUDict中提取语音词典中的音节列表。这将为您提供更少变体的变体,但准备在结果中获取无意义的单词。