2016-12-31 4 views
0

자바에서 Sphinx4를 사용하여 프로그램을 개발 중입니다.sphinx4 만 사용자 지정 단어를 인식합니다.

음향 모델과 문법을 매우 단순하고 간결하게 만들고 싶습니다.

제 글은 단어 하나 하나를 인식하여 부부 단어를 이해하는 데 사용됩니다.

예를 들어, 단어는 {man, bye, good, yo} 이고 "man"이라고 말하면 프로그램에서이를 "man"으로 즉시 인식해야합니다.

프로그램이 단어를 인식하면 다른 단어를 기다리지 않아야합니다.

누구나 나를 그런 문서를 만들 때 참조 할 수있는 문서 또는 예제/데모로 안내 할 수 있습니까?

여기는 지금까지 작성한 코드입니다. tutorial에 설명 된대로

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 문법을 작성할 수 있습니다

#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(); 
}