![](/img/trans.png)
[英]Using JSGF grammar instead of DMP language model (use -jsgf instead of -lm) in CMU Sphinx (pocketsphinx)
[英]How to generate string using a JSGF grammar in Java?
JSpeech語法格式允許用戶為大括號中的單獨字符串指定標簽,如下所示:
<jump> = jump { primitive jump } [up] |
jump [to the] (left { primitive jump_left } |right { primitive jump_right } );
要么
<effects> = nothing happens { NOTHING_HAPPENS } | ( [will] die | dies ) { OBJECT_DESTRUCTION } | (get|gets) new (coin|coins) { COIN_INCREASE };
在參考規范的 4.6.1節中將更加詳細地描述使用標簽。
在Sphinx4您可以使用捕捉這些標簽getTags()
在RuleParse方法。 因此,如果用戶說“ 跳轉到左側 ”,則將返回以下標記“ 原始jump_left ”
現在,我想做相反的事情-給定標簽,我想將其與字符串匹配。 因此,對於“ NOTHING_HAPPENS ”,我希望獲得“ 什么也不會發生 ”,對於“ OBJECT_DESTRUCTION ”,則希望獲得所有可能的選擇:“ 將死亡,死亡,死亡 ”。
有沒有這樣的方法可以以這種方式解析語法文件,或者我必須對其進行硬編碼?
我的解決方案是生成JSGF文件定義的所有可能的句子。 可以使用Sphinx的Grammar類提供的dumpRandomSentences或getRandomSentence方法輕松完成此操作,並將其返回給Recognizer,后者將打印出標簽。
我的項目的示例代碼:
for (int i = 0; i < 20000; i++) {
String utterance = grammar.getRandomSentence();
String tags;
try {
tags = parser.getTagString(utterance);
System.out.println(tags+" ==> "+utterance);
} catch (GrammarException e) {
error(e.toString());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.