1

構成ファイルを分析して、Sphinx に慣れようとしています。

残念ながら、私はそれをコンパイルすることができませんでした。helloworld の例と同じクラスの内容を使用してこれを行い、リストされている構成ファイルを削除して、 http://cmusphinx.sourceforge.net/sphinx4/javadoc/edu/cmu/sphinx/util/propsに示されているものに置き換えました。/doc-files/ConfigurationManagement.html

null ポインター例外が発生しましたが、その理由がわかりません。sphinx4.jar、WSJ_8gau....jar、js.jar、jsapi.jar をインポートしました。構成ファイルから読み取っていることはわかっています。そのままにしておくと、正しくコンパイルされていました

HelloWorld.class.getResource("helloworld.config.xml")。以下は、わずかな変更を加えたコードです。

package speechcapture;
//import edu.cmu.sphinx.demo.helloworld.HelloWorld;
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 capturespeech {
    public void speechtolist(String[] args){
           ConfigurationManager cm;

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

            Recognizer recognizer = (Recognizer) cm.lookup("recognizer");
            recognizer.allocate(); //Where error occurs

            // start the microphone or exit if the program 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 program 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");
                }
         }      
    }   
}
4

1 に答える 1

0

Recognizer は次の行で null でした:

        Recognizer recognizer = (Recognizer) cm.lookup("recognizer");
        recognizer.allocate(); //Where error occurs

「認識機能」という名前のコンポーネントが構成 xml ファイルにないためです。XML ファイルを更新するときは、コードが同期していることを確認してください。

詳細については、元のディスカッションを参照してください。

https://sourceforge.net/p/cmusphinx/discussion/sphinx4/thread/91efe5b7/?limit=25#52da

于 2013-07-11T16:47:45.000 に答える