Я знаю, что этот вопрос задавался несколько раз, но я не нашел ответ, который мне подходит.Допустим, я хочу узнать шведский язык.Я говорю «på» и получаю это слово в списке результатов, но я также получаю английское слово «paw», которое произносится так же.Есть ли способ ограничить список результатов словами только на одном языке?
Я пробовал EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE при вызове RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS, но это не ограничивает мой список результатов при выполнении фактического распознавания речи.EXTRA_LANGUAGE не имеет никакого значения.
Ограничение длины списка результатов также не работает, потому что совпадения для моего предпочтительного языка не обязательно должны стоять на первом месте в списке результатов.Это не проблема со шведским, то же самое происходит, когда я использую испанский как выбранный и предпочитаемый язык.
Приложение, которое я пишу, должно распознавать отдельные слова чаще, чем законченные предложения.
Locale def = Locale.getDefault();
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getApplication().getPackageName());
//intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, def.toLanguageTag());
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, def.toLanguageTag());
intent.putExtra("android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES", new String[]{def.toLanguageTag()});
speechInput = SpeechRecognizer.createSpeechRecognizer(MainActivity.this);
speechInput.setRecognitionListener(recognitionListener);
speechInput.startListening(intent);