Java sphinx4仅识别自定义单词
我正在用java中的Sphinx4开发一个程序 我想减少声学模型和语法,使之非常简单和简洁,适合我的使用 我的用途就是理解几个词,逐字辨认 例如,单词应该是{man,bye,good,yo} 当我说“人”时,我希望程序能立即识别出它是“人” 一旦程序识别出一个单词,程序就不应该等待任何其他单词 有人能给我一个文档或一个示例/演示,我可以参考它来创建这样一个东西吗 这是我到目前为止编写的代码Java sphinx4仅识别自定义单词,java,voice-recognition,cmusphinx,Java,Voice Recognition,Cmusphinx,我正在用java中的Sphinx4开发一个程序 我想减少声学模型和语法,使之非常简单和简洁,适合我的使用 我的用途就是理解几个词,逐字辨认 例如,单词应该是{man,bye,good,yo} 当我说“人”时,我希望程序能立即识别出它是“人” 一旦程序识别出一个单词,程序就不应该等待任何其他单词 有人能给我一个文档或一个示例/演示,我可以参考它来创建这样一个东西吗 这是我到目前为止编写的代码 private static void recognizeWord(LiveSpeechRecognize
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);
}
您可以这样编写JSGF语法,如中所述:
#JSGF V1.0;
grammar hello;
public <greet> = man | bye | good | yo;
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();
}