向SRGS语法添加通用占位符

本文关键字:占位符 添加 SRGS 语法 | 更新日期: 2023-09-27 18:08:15

我试图将语音识别添加到我的应用程序中。但不幸的是,我找不到添加通用占位符的方法。例如,我想说"我正在寻找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"。如果我使用这种语法,识别器总是找到"我正在寻找"。很好,但是漏掉了重要的一个词。如果我没有使用任何语法,那么我会得到像"I and looking four steak overflow"这样的东西。这里我得到了重要的词,但不能用规则来约束"我是"answers"寻找"。

我的需求当然是"我正在寻找牛排溢出"。

我怎样才能做到这一点?提前感谢!

向SRGS语法添加通用占位符

没有办法识别"any word",因为你不能严格定义"any word"。"fasdfewqrqew"算一个你想认识的单词吗?我肯定不会。

我确定你想要识别一个特定的单词列表,可能很大。然后你就可以在SRGS语法中列出它们。你可以在这里找到一个包含常用单词的单词列表将列表转换为语法

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