【问题标题】:Sphinx Lexical Error parsing grammar fileSphinx 词法错误解析语法文件
【发布时间】:2013-04-15 20:10:44
【问题描述】:

我一直在用 Java 制作一个语音识别程序,只是为了看看它是如何工作的。直到一天前,一切都运行良好。我不知道发生了什么,因为我没有更改代码中的任何内容。

由于它出现了一个词法错误,我想我只需要粘贴我的语法文件。

controls.gram:

#JSGF V1.0;

grammar controls;

public <intro> = "Computer";

public <statement> = <open> | <ignore>;

public <open> = "open" ("chrome" | "word");

public <navigate> = "navigate" "to" (("face" book") | ("stack" "overflow"));

public <ignore> = ("don't" "worry") | ("never" "mind");

public <thanks> = "thanks";

错误日志:

Exception in thread "main" edu.cmu.sphinx.jsgf.parser.TokenMgrError: Lexical error at line 11, column 77.  Encountered: "\r" (13), after : "\"));"
at edu.cmu.sphinx.jsgf.parser.JSGFParserTokenManager.getNextToken(JSGFParserTokenManager.java:1197)
at edu.cmu.sphinx.jsgf.parser.JSGFParser.jj_ntk(JSGFParser.java:1012)
at edu.cmu.sphinx.jsgf.parser.JSGFParser.item(JSGFParser.java:643)
at edu.cmu.sphinx.jsgf.parser.JSGFParser.sequence(JSGFParser.java:568)
at edu.cmu.sphinx.jsgf.parser.JSGFParser.alternatives(JSGFParser.java:484)
at edu.cmu.sphinx.jsgf.parser.JSGFParser.item(JSGFParser.java:676)
at edu.cmu.sphinx.jsgf.parser.JSGFParser.sequence(JSGFParser.java:568)
at edu.cmu.sphinx.jsgf.parser.JSGFParser.alternatives(JSGFParser.java:484)
at edu.cmu.sphinx.jsgf.parser.JSGFParser.item(JSGFParser.java:676)
at edu.cmu.sphinx.jsgf.parser.JSGFParser.sequence(JSGFParser.java:568)
at edu.cmu.sphinx.jsgf.parser.JSGFParser.alternatives(JSGFParser.java:484)
at edu.cmu.sphinx.jsgf.parser.JSGFParser.RuleDeclaration(JSGFParser.java:450)
at edu.cmu.sphinx.jsgf.parser.JSGFParser.GrammarUnit(JSGFParser.java:313)
at edu.cmu.sphinx.jsgf.parser.JSGFParser.newGrammarFromJSGF(JSGFParser.java:128)
at edu.cmu.sphinx.jsgf.parser.JSGFParser.newGrammarFromJSGF(JSGFParser.java:241)
at edu.cmu.sphinx.jsgf.JSGFGrammar.loadNamedGrammar(JSGFGrammar.java:697)
at edu.cmu.sphinx.jsgf.JSGFGrammar.commitChanges(JSGFGrammar.java:613)
at edu.cmu.sphinx.jsgf.JSGFGrammar.createGrammar(JSGFGrammar.java:300)
at edu.cmu.sphinx.linguist.language.grammar.Grammar.allocate(Grammar.java:116)
at edu.cmu.sphinx.linguist.flat.FlatLinguist.allocate(FlatLinguist.java:300)
at edu.cmu.sphinx.decoder.search.SimpleBreadthFirstSearchManager.allocate(SimpleBreadthFirstSearchManager.java:646)
at edu.cmu.sphinx.decoder.AbstractDecoder.allocate(AbstractDecoder.java:87)
at edu.cmu.sphinx.recognizer.Recognizer.allocate(Recognizer.java:168)
at [MY PACKAGE].Utils.<init>(Utils.java:23)
at [MY PACKAGE].Launcher.<clinit>(Launcher.java:8)

我已尝试删除所有空白字符,将其编码为 ANSI、UTF(带和不带 BOM)。所有这些都无济于事......

有人可以帮我吗?

【问题讨论】:

  • 你缺少一个引号:public = "navigate" "to" (("face" "book") | ("stack" "overflow"));
  • 嘘!谢谢! :D 天哪,我为此绞尽脑汁已经很久了。如果你回答这个问题,我会给你一些代表。
  • 语法高亮其实在这里给出了答案... :)
  • 是的,我在来这里查看评论后注意到了它:) 如果只有 Eclipse 有语法文件语法突出显示...
  • 您可以定义自己的语法在 Notepad++ 中突出显示

标签: java speech-recognition sphinx4 jsapi


【解决方案1】:

您缺少报价:

public = "navigate" "to" (("face" "book") | ("stack" "overflow"));

这应该可以解决它:-)

【讨论】:

    猜你喜欢
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 2013-01-23
    • 2017-06-25
    相关资源
    最近更新 更多