CMUSphinx德国指挥&控制应用程序,准确性差

时间:2017-04-17 11:50:25

标签: java cmusphinx sphinx4

我正在尝试使用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/

我有什么明显的遗失吗?问题在哪里?

提前致谢并致以亲切的问候。

2 个答案:

答案 0 :(得分:1)

嗯,准确性不是很好,可能原始数据库没有像你这样的很多例子。部分你的方言也有所贡献,德国人用z表示7,而不是s。您房间的部分回声也有所贡献。我不确定你是如何录制你的音频的,如果你之间使用了一些压缩或编解码器,它可能也会导致错误的准确性。

您可能希望收集数百个样本并执行MAP调整以提高准确性。

答案 1 :(得分:0)

我尝试将Pocketsphinx与Eng和German模型一起使用,并且预定义/有限的一组短语时,准确性很高!您可以忘掉一些一般的事情,例如“您能在市中心找到我的餐馆吗?”。

要使用Pocketshinx达到良好的精度,请执行以下操作:

  • 在通过声学示例训练通用模型时,请检查您的麦克风,音频设备,文件和所有内容是否为16 kHz。
  • 您应该创建自己的有限词典,在准确性急剧下降的情况下,不能使用cmusphinx-voxforge-de.dic。
  • 您应该创建自己的语言模型。
  • 您可以尝试修改发音文件以适合您的口音。

您可以搜索Jasper project on GitLab,以了解其实现方式。 或者,您可以使用documentation