Сплит гипотеза на отдельные ключевые фразы
Я использую Pocketsphinx в своем приложении для Android. У меня есть относительно небольшой набор команд, которые нужно распознавать независимо, поэтому я использовал поиск по ключевым словам из файла, который выглядит следующим образом:
one/1.0/
done/1.0/
recognition on/1e-10/
recognition off/1e-10/
Фактический список не на английском языке, поэтому эти ключевые слова выбраны произвольно для примера. Я понимаю, что эти пороговые значения могут быть несколько ниже оптимальных, и что короткие слова могут не соответствовать друг другу.
Проблема возникает в этом методе:
@Override
public void onPartialResult(Hypothesis hypothesis) {
if (hypothesis != null) {
Log.d(
"Sphinx",
"\"" + hypothesis.getHypstr() + "\" recognized"
);
}
}
Обратите внимание, что некоторые слова звучат очень похоже. Дело в том,
«Один» приводит к"done one" recognized
«Готово» приводит к"one done" recognized
К сожалению, я не смог найти никакой документации поhypstr_get
(Я был бы признателен, если бы вы могли направить меня к этому), но, по-видимому, он возвращает объединенную строку вероятных совпадений в порядке возрастания вероятности.
Как я могу получить актуальные команды изhypothesis
? Я не могу просто разделитьhypothesis.getHypstr()
пробелами, поскольку некоторые команды являются ключевыми фразами, а не ключевыми словами. Я хочу только один, наиболее вероятный результат.
Благодарю.