Java 如何使用sphinx字典作为语法文件
我正在开发用于语音到文本转换的Java应用程序。 使用了斯芬克斯库和演示helloworld的作品。 我已经编辑了语法文件,并在其中添加了更多语法,效果很好 现在我想要的是,它应该接受现实世界字典中存在的所有输入单词,那么我应该怎么做呢Java 如何使用sphinx字典作为语法文件,java,speech-recognition,speech-to-text,cmusphinx,Java,Speech Recognition,Speech To Text,Cmusphinx,我正在开发用于语音到文本转换的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();
}
}