SpeechRecognizer возвращает ERROR_NO_MATCH в onResults, когда устройство находится в автономном режиме, когда оно возвращает частичные результаты в onPartialResults(). В последний раз, когда я играл с SpeechRecognizer, он работал нормально в офлайн-режиме, интересно, нашел ли кто-нибудь решение для него.SpeechRecognizer offline ERROR_NO_MATCH
ответ
В качестве работы я использую partialResults, возвращаемый inPartialResults(). В возвращенном комплекте «SpeechRecognizer.RESULTS_RECOGNITION» есть все термины минус последний термин, а «android.speech.extra.UNSTABLE_TEXT» имеет последний отсутствующий признанный термин.
@Override
public void onPartialResults(Bundle partialResults) {
ArrayList<String> data = partialResults.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
ArrayList<String> unstableData = partialResults.getStringArrayList("android.speech.extra.UNSTABLE_TEXT");
mResult = data.get(0) + unstableData.get(0);
}
Для того, чтобы ответить немного более ясно, что вам нужно включить частичные результаты первого и вызвать UNSTABLE_TEXT в определенной моды:
// When creating the intent, set the partial flag to true
intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS,true);
// When requesting results in onPartialResults(), the UNSTABLE_TEXT parameter to getSTtringArrayList() must be in quotes
ArrayList<String> unstableMatches = partialResults.getStringArrayList("android.speech.extra.UNSTABLE_TEXT");
onPartialResults() вызывается несколько раз now и onError() по-прежнему вызывается с помощью ERROR_NO_MATCH. Я в конечном итоге, используя раствор, похожий на тот, перечисленные здесь: https://github.com/nenick/QuAcc/blob/master/app/src/main/java/de/nenick/quacc/speechrecognition/speech/RecognizerListenerWithOfflineWorkaround.java
В двух словах:
- отслеживать частичных результатов, и было ли показано ошибка
- Сброс как в onBeginningOfSpeech()
- Сохранять частичные результаты в переменной, когда onPartialResults() вызывается
- Когда вызывается onError(), проверьте, является ли результат ERROR_NO_MATCH и объединяет SpeechRecognizer.RESULTS_RECOGNITION с «android.speech.extra.UNSTABLE_TEXT» в вашу часть ial результатов
- Звоните по результатам()
Можете ли вы показать свой код? – Raptor