ошибка в программе java sphinx - PullRequest
1 голос
/ 02 марта 2012

Привет, я делаю программное обеспечение в Java, в котором я хочу разработать речевое программное обеспечение ... Я запускаю сфинкс-код Hello в Java.

import edu.cmu.sphinx.frontend.util.Microphone;
import edu.cmu.sphinx.recognizer.Recognizer;
import edu.cmu.sphinx.result.Result;
import edu.cmu.sphinx.util.props.ConfigurationManager;

public class HelloWorld {

    public static void main(String[] args) {
        ConfigurationManager cm;

        if (args.length > 0) {
            cm = new ConfigurationManager(args[0]);
        } else {
            cm = new ConfigurationManager(HelloWorld.class.getResource("helloworld.config.xml"));
        }

        Recognizer recognizer = (Recognizer) cm.lookup("recognizer");
        recognizer.allocate();

        // start the microphone or exit if the programm if this is not possible
        Microphone microphone = (Microphone) cm.lookup("microphone");
        if (!microphone.startRecording()) {
            System.out.println("Cannot start microphone.");
            recognizer.deallocate();
            System.exit(1);
        }

        System.out.println("Say: (Good morning | Hello) ( Bhiksha | Evandro | Paul | Philip | Rita | Will )");

        // loop the recognition until the programm exits.
        while (true) {
            System.out.println("Start speaking. Press Ctrl-C to quit.\n");

            Result result = recognizer.recognize();

            if (result != null) {
                String resultText = result.getBestFinalResultNoFiller();
                System.out.println("You said: " + resultText + '\n');
            } else {
                System.out.println("I can't hear what you said.\n");
            }
        }
    }
}

пока я пытаюсь запустить эту программу, я получаю эту ошибку ...

Exception in thread "main" java.lang.NullPointerException
    at edu.cmu.sphinx.util.props.SaxLoader.load(SaxLoader.java:74)
    at edu.cmu.sphinx.util.props.ConfigurationManager.<init>(ConfigurationManager.java:58)
    at HelloWorld.main(HelloWorld.java:22)

Пожалуйста, предложите ...

Спасибо

Ответы [ 3 ]

2 голосов
/ 28 марта 2012

У меня была такая же ошибка и я ее исправил.вы просто найдете файл HelloWord.jar в папке sphinx bin, просто включите файл jar в свой проект, и он будет нормально запускать


путь к файлу jar: sphinx4-1.0beta6-bin \ sphinx4-1.0beta6 \ Bin \ HelloWorld.jar

1 голос
/ 14 ноября 2012

Если вы используете версию src, убедитесь, что у вас есть lib / sphinx4.jar, если нет, перейдите в верхний каталог (например, sphinx4.0beta-src) и введите ant.

Тогда вы можетезапустите его, набрав:

sphinx4> java -mx256m -jar bin/HelloWorld.jar

Если вы хотите больше информации, перейдите: CMU-Sphinx-Helloword

1 голос
/ 02 марта 2012

Не ясно, какая строка на самом деле строка 22 в вашем коде, но я подозреваю, что это так:

cm = new ConfigurationManager(HelloWorld.class.getResource("helloworld.config.xml"));

Я предполагаю, что helloworld.config.xml не может быть найдено,поэтому getResource возвращает ноль, который вы передаете ConfigurationManager.

Существуют различные причины, по которым конфигурация не может быть найдена, например:

  • Этоне в пути к классам (например, не упакован в файл jar, не скопирован Eclipse в каталог bin)
  • Он не в нужном месте - этот код попытается найти его относительно HelloWorld.class,тогда как вы можете иметь его в «корне пакета»

Трудно сказать больше без дополнительной информации от вас.

Предполагая, что - это дело,это не имеет никакого отношения к Сфинксу.

...