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

C# 将通用占位符添加到SRGS语法,c#,windows-phone-8,voice-recognition,C#,Windows Phone 8,Voice Recognition,我正在尝试将语音识别添加到我的应用程序中。但不幸的是,我没有找到添加通用占位符的方法。例如,我想说“我正在寻找stackoverflow”,然后我使用以下语法: <grammar root="start" {...}> <rule id="start" scope="public"> I am <one-of> <item> looking for</item>

我正在尝试将语音识别添加到我的应用程序中。但不幸的是,我没有找到添加通用占位符的方法。例如,我想说“我正在寻找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”的搜索。如果我使用这种语法,识别器总是会找到“我正在寻找”。太好了,但重要的词不见了。 如果我没有使用任何语法,那么我会得到类似“我和四个牛排溢出”。在这里,我得到了一个重要的词,但不能用规则来约束“我是”和“寻找”

我需要的当然是“我在找牛排溢出来的”


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

仅仅因为不能严格定义“任何单词”,就无法识别“任何单词”。“fasdfewqrqew”算作你想识别的单词吗?我不确定

我肯定你想识别某个单词列表,可能很大。然后您可以在SRGS语法中列出所有这些。你可以找到一个包含常用词的单词列表,只需 将列表转换为语法


如果你想增加列表的覆盖范围,你也可以在语法中加入音节序列而不是单词列表。您可以从语音词典中提取音节列表,如CMUDict from。这将给你更多的变体,更少的变体,但准备在结果中得到无意义的单词。

mmmmmm。。。牛排溢出来了。谢谢你的解释。经过一些研究,我发现:这实际上解决了我在wp8之外的问题。但我想,我会从一个巨大的列表开始,然后添加一些无法识别的特殊单词。