cmu sphinx4 java-FileNotFoundException引起的运行时异常

cmu sphinx4 java-FileNotFoundException引起的运行时异常,java,filenotfoundexception,runtimeexception,sphinx4,Java,Filenotfoundexception,Runtimeexception,Sphinx4,我最近用Sphinx4做了一个Java项目。我在网上找到了代码,并对其进行了精简,以测试Sphinx4是否正常工作: public class App { private static final String ACOUSTIC_MODEL = "resource:/edu/cmu/sphinx/models/en-us/en-us"; private static final String DICTIONARY_PATH = "

我最近用Sphinx4做了一个Java项目。我在网上找到了代码,并对其进行了精简,以测试Sphinx4是否正常工作:

public class App 
{
    private static final String ACOUSTIC_MODEL =
            "resource:/edu/cmu/sphinx/models/en-us/en-us";
    private static final String DICTIONARY_PATH =
            "resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict";

    public static void main(String[] args) throws Exception {
        Configuration configuration = new Configuration();
        configuration.setAcousticModelPath(ACOUSTIC_MODEL);
        configuration.setDictionaryPath(DICTIONARY_PATH);

        configuration.setGrammarName("dialog");
        LiveSpeechRecognizer jsgfRecognizer =
                new LiveSpeechRecognizer(configuration);

        jsgfRecognizer.startRecognition(true);

        while (true) {

            String utterance = jsgfRecognizer.getResult().getHypothesis();

            if (utterance.startsWith("hello")) {
                System.out.println("Hello back!");
            }
            else if (utterance.startsWith("exit")) {
                break;
            }
        }

        jsgfRecognizer.stopRecognition();
    }
}
但是,它给了我这个错误:

Exception in thread "main" java.lang.RuntimeException: Allocation of search manager resources failed
    at edu.cmu.sphinx.decoder.search.WordPruningBreadthFirstSearchManager.allocate(WordPruningBreadthFirstSearchManager.java:247)
    at edu.cmu.sphinx.decoder.AbstractDecoder.allocate(AbstractDecoder.java:103)
    at edu.cmu.sphinx.recognizer.Recognizer.allocate(Recognizer.java:164)
    at edu.cmu.sphinx.api.LiveSpeechRecognizer.startRecognition(LiveSpeechRecognizer.java:47)
    at com.weebly.controllingyourcomputer.bartimaeus.App.main(App.java:27)
Caused by: java.io.FileNotFoundException: 
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:93)
    at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
    at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
    at java.net.URL.openStream(URL.java:1038)
    at edu.cmu.sphinx.linguist.language.ngram.SimpleNGramModel.open(SimpleNGramModel.java:403)
    at edu.cmu.sphinx.linguist.language.ngram.SimpleNGramModel.load(SimpleNGramModel.java:277)
    at edu.cmu.sphinx.linguist.language.ngram.SimpleNGramModel.allocate(SimpleNGramModel.java:114)
    at edu.cmu.sphinx.linguist.lextree.LexTreeLinguist.allocate(LexTreeLinguist.java:334)
    at edu.cmu.sphinx.decoder.search.WordPruningBreadthFirstSearchManager.allocate(WordPruningBreadthFirstSearchManager.java:243)
    ... 4 more
线程“main”java.lang.RuntimeException中的异常:分配搜索管理器资源失败 在edu.cmu.sphinx.decoder.search.WordPruningBreadHfirstSearchManager.allocate(WordPruningBreadHfirstSearchManager.java:247) 位于edu.cmu.sphinx.decoder.AbstractDecoder.allocate(AbstractDecoder.java:103) 位于edu.cmu.sphinx.recognizer.recognizer.allocate(recognizer.java:164) 位于edu.cmu.sphinx.api.LiveSpeechRecognizer.startRecognition(LiveSpeechRecognizer.java:47) 在com.weebly.controllingyourcomputer.bartimaius.App.main(App.java:27)上 原因:java.io.FileNotFoundException: 位于java.io.FileInputStream.open0(本机方法) 在java.io.FileInputStream.open(FileInputStream.java:195) 位于java.io.FileInputStream。(FileInputStream.java:138) 位于java.io.FileInputStream。(FileInputStream.java:93) 位于sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90) 位于sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188) 在java.net.URL.openStream(URL.java:1038) 位于edu.cmu.sphinx.linguist.language.ngram.simplegrammodel.open(simplegrammodel.java:403) 位于edu.cmu.sphinx.linguist.language.ngram.simplegrammodel.load(simplegrammodel.java:277) 位于edu.cmu.sphinx.language.ngram.simplegrammodel.allocate(simplegrammodel.java:114) 位于edu.cmu.sphinx.linguist.lextree.lextreelineguist.allocate(lextreelineguist.java:334) 在edu.cmu.sphinx.decoder.search.WordPrunningBreadHfirstSearchManager.allocate(WordPrunningBreadHfirstSearchManager.java:243) ... 4更多 我想可能是因为找不到声学模型或字典路径,因此,我将
资源:
字符串更改为
%HOME%\\Downloads\\sphinx4-5prealpha-src\\sphinx4-5prealpha-src\\sphinx4 data\\src\\main\\resources\\edu\\cmu\\sphinx\\models\\en us
或带有斜杠或
C:\Users\Username\…
的路径,但这些路径都不起作用。我知道路径存在,因为我从实际资源的属性窗口复制并粘贴了它们

所以我的问题是:是我从原始源代码中删除的一些代码导致了这个错误,是路径有问题,还是完全不同

编辑

顺便说一下,我正在使用Maven构建我的项目。我将Sphinx4网站上指定的依赖项添加到我的pom.xml中,但它不起作用(它不识别导入,例如
edu.com.sphinx.xxx
),所以我从他们说要下载的网站下载JAR,并将它们添加到Eclipse中Java构建路径中的项目“库”

是不是我从原始源代码中删除的一些代码 是什么导致了这个错误

是的,你删除的太多了

要识别语法,您需要打三个电话:

    configuration.setGrammarPath(GRAMMAR_PATH);
    configuration.setGrammarName(GRAMMAR_NAME);
    configuration.setUseGrammar(true);