Я только что создал языковую модель из короткого текстового файла. Я сделал это как для английского, так и для голландского языка, прежде всего, чтобы сократить время распознавания за счет уменьшения возможностей. Я создал их с помощью инструментария 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' может быть установлена на голландский или английский для правильного языка. Английский работает, а голландский нет. Где моя ошибка? Я не могу найти его.
Папка Dutch Acoustic Model содержит следующее:
feat.params
mdef
means
mixture_weights
noisedict
transition_matrices
variances