1

こんにちは、音声ソフトウェアを開発したい Java でソフトウェアを作成しています... Java で「Hello」スフィンクス コードを実行しています。

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)

提案してください...

ありがとう

4

3 に答える 3

3

私は同じエラーがあり、それを修正しました。Sphinx の bin フォルダーに HelloWord.jar ファイルが見つかります。この jar ファイルをプロジェクトに含めるだけで、正常に実行されます。


jar ファイルのパス: sphinx4-1.0beta6-bin\sphinx4-1.0beta6\bin\HelloWorld.jar

于 2012-03-28T10:27:04.287 に答える
2

どの行が実際にコードの 22行目であるかは明確ではありませんが、次のように思われます。

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

私の推測ではhelloworld.config.xml、それは見つからないので、getResourcenull を返しますConfigurationManager

構成が見つからない場合、次のようなさまざまな理由が考えられます。

  • クラスパス上にありません (たとえば、jar ファイルにバンドルされていない、binEclipse によってディレクトリにコピーされていない)
  • それは正しい場所ではありません - そのコードは に対して相対的に見つけようとしますHelloWorld.classが、「パッケージルート」にあるかもしれません

あなたからの情報がなければ、これ以上言うのは難しいです。

だとすれば、スフィンクスと関係ありません。

于 2012-03-02T11:26:51.410 に答える
2

src バージョンを使用している場合は、lib/sphinx4.jar があることを確認してください。そうでない場合は、トップ ディレクトリ (たとえば、sphinx4.0beta-src) に移動し、ant と入力します。

次に、次のように入力して実行できます。

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

さらに詳しい情報が必要な場合は、CMU-Sphinx-Helloword にアクセスしてください。

于 2012-11-14T14:53:06.070 に答える