Java 如何使用sphinx字典作为语法文件

Java 如何使用sphinx字典作为语法文件,java,speech-recognition,speech-to-text,cmusphinx,Java,Speech Recognition,Speech To Text,Cmusphinx,我正在开发用于语音到文本转换的Java应用程序。 使用了斯芬克斯库和演示helloworld的作品。 我已经编辑了语法文件,并在其中添加了更多语法,效果很好 现在我想要的是,它应该接受现实世界字典中存在的所有输入单词,那么我应该怎么做呢 我需要通过创建新规则将所有这些单词添加到我的语法文件中吗?语法用于具有有限短语集的任务。在你的情况下,你需要使用一个。一旦构建或获得,它就可以在调用时使用。您可以直接使用声学模型和字典以及实时语音识别器,而无需涉及语法文件的内容。 至于创建一个语法文件与完整的字

我正在开发用于语音到文本转换的Java应用程序。 使用了斯芬克斯库和演示helloworld的作品。 我已经编辑了语法文件,并在其中添加了更多语法,效果很好

现在我想要的是,它应该接受现实世界字典中存在的所有输入单词,那么我应该怎么做呢


我需要通过创建新规则将所有这些单词添加到我的语法文件中吗?

语法用于具有有限短语集的任务。在你的情况下,你需要使用一个。一旦构建或获得,它就可以在调用时使用。

您可以直接使用声学模型和字典以及实时语音识别器,而无需涉及语法文件的内容。 至于创建一个语法文件与完整的字典将是无用的,以及耗时。 同样对于解码来说,扫描语法文件中的每一个单词,然后找到匹配的单词,然后选择最好的单词,也需要很多时间。 简单的解决方法是直接使用声学模态和字典,而不指定语法。 你们可以看看斯芬克斯的演示

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import edu.cmu.sphinx.api.Configuration;
import edu.cmu.sphinx.api.SpeechResult;
import edu.cmu.sphinx.api.StreamSpeechRecognizer;

public class TranscriberDemo {       

    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
                .setLanguageModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us.lm.bin");
LiveSpeechRecognizer recognizer = new LiveSpeechRecognizer(configuration);
// Start recognition process pruning previously cached data.
recognizer.startRecognition(true);
SpeechResult result = recognizer.getResult();
// Pause recognition process. It can be resumed then with startRecognition(false).
recognizer.stopRecognition();
        SpeechResult result;
        while ((result = recognizer.getResult()) != null) {
            System.out.format("Hypothesis: %s\n", result.getHypothesis());
        }
        recognizer.stopRecognition();
    }
}