2013-04-09 53 views
0

我试图将语音识别添加到我的应用程序中。但不幸的是,我找不到添加通用占位符的方法。例如,我想说“我找计算器”,然后我用这个语法:将通用占位符添加到SRGS语法

<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> 

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

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

我怎么能做到这一点?提前致谢!

+1

嗯...牛排溢出。 – Jacob 2013-04-09 22:37:23

回答

1

仅仅因为无法严格定义“任何单词”,没有办法识别“任何单词”。 “fasdfewqrqew”算作你想认识的一个词吗?我当然不会。

我确定你想识别一个单词列表,可能很大。然后你可以把它们全部列在SRGS语法中。你可以找到一个带有频繁词汇here的单词列表,只需要 将列表转换成语法。

如果您想增加列表范围,您还可以将音节序列替换为文法中的单词列表。您可以从语音词典中提取音节列表,如CMUSphinx project中的CMUDict。这会给你更多的变体与更少的变体,但准备在结果中得到无意义的单词。

+0

感谢您的解释。经过一些研究,我发现这个:http://stackoverflow.com/questions/3046921/how-to-mix-grammar-rules-dictation-free-speech-with-speechrecognizer-in-c?rq=1这实际上解决了我的问题wp8以外的问题。但我想,我先从一个巨大的列表开始,然后添加无法识别的特殊字词。 – Matt 2013-04-10 19:26:00

相关问题