我正在尝试使用CMUSphinx和Java实现德语命令和控制应用程序。到目前为止,应用程序应该只识别几个单词(数字从1到9,是/否)。
不幸的是,准确性非常糟糕。看来,如果一个单词被正确识别,那只是偶然的。
这是我到目前为止的java代码(改编自教程):
public static void main(String[] args) throws IOException {
// Configuration Object
Configuration configuration = new Configuration();
// Set path to the acoustic model.
configuration.setAcousticModelPath("resource:/cmusphinx-de-voxforge-5.2");
// Set path to the dictionary.
configuration.setDictionaryPath("resource:/cmusphinx-voxforge-de.dic");
// use grammar
configuration.setGrammarPath("resource:/");
configuration.setGrammarName("dialog");
configuration.setUseGrammar(true);
LiveSpeechRecognizer recognizer = new LiveSpeechRecognizer(configuration);
recognizer.startRecognition(true);
SpeechResult result;
while ((result = recognizer.getResult()) != null) {
System.out.format("Hypothesis: %s\n", result.getHypothesis());
}
recognizer.stopRecognition();
}
这是我的语法文件:
#JSGF V1.0;
grammar dialog;
public <digit> = 1 | 2 | 3 | 4 |5 | 6 | 7 | 8 | 9 | ja | nein;
我从这里下载了德语声学模型和字典:https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/German/
有什么明显的东西我在这里不见了吗?问题出在哪儿?
在此先感谢您的亲切问候。
好吧,准确性不是很好,可能原始数据库没有像你这样的很多例子。部分你的方言也有所贡献,德国人用z表示7,而不是s。您房间的部分回声也有所贡献。我不确定你是如何录制你的音频的,如果你之间使用了一些压缩或编解码器,它可能也会导致精确度不佳。
您可能希望收集几百个样本并执行MAP自适应以提高准确性。
我试图使用带有英语和德语模型的pocketsphinx,当它带有预定义/有限的短语集时,准确性也很好!你可以忘记一般的事情,比如“你能不能在市中心找到我的餐馆”。
使用pocketsphinx实现良好的准确性:
您可以搜索Jasper project on GitLab以了解它是如何实现的。或者你可以使用检查documentation