sphinx4仅识别自定义字词

时间:2016-12-31 02:31:51

标签: java voice-recognition cmusphinx

我正在使用Sphinx4开发一个程序。

我希望将声学模型和语法简化为非常简单和简洁,以适合我的使用。

我的用处就是理解几个单词,一字一句地识别。

例如,单词将是{man,bye,good,yo} 当我说“男人”时,我希望程序立即将其识别为“男人”;

一旦程序识别出一个单词,程序就不应该等待任何其他单词。

有人可以引导我参考我可以参考创建这样的东西的文档或示例/演示吗?

这是我到目前为止编写的代码。

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

1 个答案:

答案 0 :(得分:0)

你可以像tutorial中所描述的那样编写JSGF语法:

#JSGF V1.0;

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

将其放在名为src的{​​{1}}文件夹中。

你可以像这样使用它:

hello.jsgf