3

私は現在、特定のことが言われている場合、Javaコード(Eclipseを使用)に何らかの機能を実行させようとしています。私はSphinx4ライブラリを使用していますが、これは私が現在持っているものです:

私がやりたいことは、次の行にあります。

IF (TRUE) someFunction();

私のスピーチが Hello Computer、Hello Jarvis、Good Morning Computer、または Good Morning Jarvis の場合に関数を実行することです。つまり、音声が .gram ファイル内のコードの "public < greeting >" 行と一致する場合に関数を実行します。さらに具体的に言えば、私のスピーチがその文法規則に一致する場合は、"greet" を返します。意味不明だったらすみません…

これが私のlistener.javaファイルです:

package speechRecognition;

import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
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 Listener {

    public void someFunction(){
        System.out.println("Did Something");
    }

    public static void main(String[] args) {
        ConfigurationManager cm;
        if (args.length > 0) { cm = new ConfigurationManager(args[0]);
        } else { cm = new ConfigurationManager(Listener.class.getResource("configurations.config.xml")); }

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

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

        while (true) {
            Result result = recognizer.recognize();
            if (result != null) {
                String resultText = result.getBestFinalResultNoFiller();
                if (resultText != "" && resultText != null) {
                    IF (TRUE) someFunction();
                }
            } else {
                System.out.println("I can't hear what you said.\n");
            }
        }
    }
}

そして、ここに私の Dictionary.gram があります:

#JSGF V1.0;
grammar dictionary;

public <greet> = (Hello | Good Morning) (Jarvis | Computer);
4

1 に答える 1