Ошибка в программе java sphinx
Привет я делаю программное обеспечение в 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 ответа
У меня была такая же ошибка и я ее исправил. вы просто найдете файл HelloWord.jar в папке bin sphinx, просто включите файл jar в свой проект, и он будет работать нормально
путь к файлу jar: sphinx4-1.0beta6-bin\sphinx4-1.0beta6\bin\HelloWorld.jar
Не ясно, какая строка на самом деле является строкой 22 в вашем коде, но я подозреваю, что это так:
cm = new ConfigurationManager(HelloWorld.class.getResource("helloworld.config.xml"));
Я думаю, что helloworld.config.xml
не может быть найден, так getResource
возвращает ноль, который вы передаете ConfigurationManager
,
Существуют различные причины, по которым конфигурация не может быть найдена, например:
- Он не находится на пути к классам (например, не упакован в файл JAR, не скопирован в
bin
справочник по затмению) - Это не в нужном месте - этот код будет пытаться найти его относительно
HelloWorld.class
тогда как вы можете иметь его в "корне пакета"
Трудно сказать больше без дополнительной информации от вас.
Предполагая, что это так, это не имеет ничего общего со Сфинксом.
Если вы используете версию src, убедитесь, что у вас есть lib/sphinx4.jar, если нет, перейдите в верхний каталог (например, sphinx4.0beta-src) и введите ant.
Затем вы можете запустить его, набрав:
sphinx4> java -mx256m -jar bin/HelloWorld.jar
Если вы хотите больше информации, перейдите: CMU-Sphinx-Helloword