2016-12-31 17 views
0

私はjavaでSphinx4を使ってプログラムを開発しています。sphinx4はカスタムワードのみを認識します

私は、音響モデルと文法を、私の使い方に合った非常に簡単で簡潔にしたいと思っています。

私の使っているのは、カップルの言葉を理解することであり、単語ごとに認識しています。

例えば、単語は{人、小、善、よ} となります。私が "人"と言うときは、プログラムで "人"とすぐに認識したいと思っています。

プログラムが単語を認識すると、プログラムは他の単語を待つべきではありません。

誰かが、私がそのようなことを作成するために参照できるドキュメントまたはデモに私を導くことができますか?

ここまでは私がこれまでに書いたコードです。

tutorialで説明したようにあなたは、このようJSGF文法を書くことができます
private static void recognizeWord(LiveSpeechRecognizer recognizer) { 
    String[] words = {"man", "bye", "good", "yo"}; 
    System.out.println("RECOGNIZING A WORD. AVAILABLE WORDS: " + Arrays.toString(words)); 

    recognizer.startRecognition(true); 

    SpeechResult result; 
    while ((result = recognizer.getResult()) != null) { 
     System.out.format("The word is: %s\n", recognizer.getResult().getResult().toString()); 
    } 

    recognizer.stopRecognition(); 
} 
public static void main(String[] args) throws Exception { 

    Configuration configuration = new Configuration(); 

    // Set path to acoustic model. 
    configuration.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us"); 
    // Set path to dictionary. 
    configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict"); 
    // Set language model. 
    configuration.setLanguageModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us.lm.bin"); 

    LiveSpeechRecognizer recognizer = new LiveSpeechRecognizer(configuration); 

    recognizeWord(recognizer); 
} 

答えて

0

#JSGF V1.0; 

grammar hello; 
public <greet> = man | bye | good | yo; 

hello.jsgfとフォルダsrcでそれを入れてください。

あなたはこのようにそれを使用することができます:

public static void main(String[] args) throws Exception { 

    Configuration configuration = new Configuration(); 
    configuration.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us"); 
    configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict");   
    configuration.setGrammarPath("file:src"); 
    configuration.setGrammarName("hello"); 
    configuration.setUseGrammar(true); 

    LiveSpeechRecognizer recognizer = new LiveSpeechRecognizer(configuration); 

    recognizer.startRecognition(true); 

    SpeechResult result; 
    while ((result = recognizer.getResult()) != null) { 
     System.out.format("The word is: %s\n", recognizer.getResult().getResult().toString()); 
    } 

    recognizer.stopRecognition(); 
} 
関連する問題