1

CMU sphinx ライブラリを使用してサウンドを録音しています。Java アプリケーションを開始するとき、次のように Recognizer と Configuration Manager を 1 回だけ割り当てます。

        cm = new ConfigurationManager(soundPart.class.getResource("hellongram.config.xml"));
        recognizer = (Recognizer) cm.lookup("recognizer");
        recognizer.allocate();

さらに、アプリケーションにサウンド録音ボタンがあります。ユーザーがクリックすると、以下のコードを使用してサウンドを録音します。

    Microphone microphone = (Microphone)MR.sp.cm.lookup("microphone");
    if (!microphone.startRecording()) {
        System.out.println("Cannot start microphone.");
        MR.sp.recognizer.deallocate();

        System.exit(1);
    }
    //MR.sp.pleaseStartSpeaking.setVisible(true);
    while(true){
    Result result = MR.sp.recognizer.recognize();
    if(result!=null){
        String resultText = result.getBestFinalResultNoFiller();
        MR.sp.lblYouSearched.setVisible(true);
        MR.sp.lblNewLabel.setVisible(true);
        MR.sp.lblNewLabel.setText(resultText);
        MR.textQuery = resultText.toLowerCase();
        break;
    }
    }

これは私が初めて行うときに機能します。ただし、ユーザーが録音ボタンを 2 回クリックすると、「マイクを開始できません」というエラーがスローされます。ここで私が間違っていること。2回目にマイクを取得できないのはなぜですか

4

1 に答える 1

0

あなたが使用したコードとあなたがやりたいことの違いは、使用したコードがマイクを開始および停止しないことであるため、ここマイクの RecordingThread を調べ、そのコードを取得したページを再読することをお勧めします。 、それは継続的に記録しています。start() と stop() を簡単に呼び出して目的のものを取得できるため、 RecordingThread は目的のように見えます。

于 2012-04-04T16:01:36.467 に答える