我只是从一个短文本文件创建了一个语言模型。我对英语和荷兰语都这样做,主要是通过减少可能性来减少识别时间。
我都使用Sphinx工具包和basesphinx lm到二进制转换器创建了它们。
可以在这里找到荷兰语言模型:http://pastebin.com/txkxiAc6
英文可以在这里找到:http://pastebin.com/fr3Epj5b
它们都很小,但是英语的人会认识到它需要认识的一切。
荷兰人使用荷兰语Voxforge打包和字典。英文版本使用cmusphinx-en-us-8khz-5.2.tar.gz和Pocketsphinx的默认字典。
代码是这样的:
Public static main(){
configuration = new Configuration();
configuration.setAcousticModelPath("src/main/resources/"+language+"/model");
configuration.setDictionaryPath("src/main/resources/"+language+"/dict.dict");
configuration.setLanguageModelPath("src/main/resources/"+language+"/model.lm.bin");
context = new Context(configuration);
recognizer = context.getInstance(Recognizer.class);
recognizer.allocate();
----------GET INPUT STREAM AND SEND TO METHOD-------------
RecognizeText(inputstream,outputstream)
}
private static String RecognizeText(InputStream stream, OutputStream os) throws Exception {
context.setSpeechSource(stream, TimeFrame.INFINITE);
Result result;
while ((result = recognizer.recognize()) != null) {
SpeechResult speechResult = new SpeechResult(result);
return speechResult.getHypothesis();
}
return "";
}
可以将'language'变量设置为荷兰语或英语以获取正确的语言。英语有效,但荷兰语无效。
我的错误在哪里?我似乎找不到。
荷兰声学模型文件夹包含以下内容:
feat.params
mdef
means
mixture_weights
noisedict
transition_matrices
variances
最佳答案
荷兰模式很旧,已经5年没有更新了。我刚刚在cmusphinx网站上上传了一个新模型。
https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Dutch/
它应该更准确,但仍仅用13个小时的数据进行训练。英语模型的训练时间超过1000小时。我们需要更多转录的荷兰数据。
关于java - Sphinx4荷兰语语言模型不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40135581/