Как установить язык в распознавании речи на Android?

Я работаю над программой Recognition API в android и выяснил, что речевые результаты варьируются при изменении настроек языка, есть ли способ установить его программным путем? Или есть намерение обедать на экране настроек языка речи? Или что еще? Примечание. Я попытался использовать это намерение дополнительно:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en-US"); 

Но это было неэффективно

Solutions Collecting From Web of "Как установить язык в распознавании речи на Android?"

Как говорит паргат, это сделает это:

 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US"); 

Кроме того, ваше приложение может запросить список поддерживаемых языков, отправив упорядоченную передачу RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS так:

  Intent detailsIntent = new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS); sendOrderedBroadcast( detailsIntent, null, new LanguageDetailsChecker(), null, Activity.RESULT_OK, null, null); 

Где LanguageDetailsChecker выглядит примерно так:

 public class LanguageDetailsChecker extends BroadcastReceiver { private List<String> supportedLanguages; private String languagePreference; @Override public void onReceive(Context context, Intent intent) { Bundle results = getResultExtras(true); if (results.containsKey(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE)) { languagePreference = results.getString(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE); } if (results.containsKey(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES)) { supportedLanguages = results.getStringArrayList( RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES); } } } 

Полный код проверяет этот проект github: https://github.com/gast-lib

Нет решения, но обмануть …

 intent.putExtra("android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES", new String[]{"en"}); 

Проверьте здесь полную историю.

Вы пробовали это:

 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US"); 

Это будет работать:

 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en_US"); 

Вы должны использовать «en_US» вместо «en-US». Первый – правильный формат тега локали Java.

Предполагается, что вы используете

 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.US.toString()); 

Чтобы избежать запоминания таких деталей.

Я, наконец, получил свое приложение, чтобы ограничить результаты распознавания голоса на указанный язык ввода (передача его, например, «ja» для японского или «fr» для французского), добавив все 3 из следующих дополнительных функций:

 String languagePref = "de";//or, whatever iso code... intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, languagePref); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, languagePref); intent.putExtra(RecognizerIntent.EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE, languagePref); 

Надеюсь, это поможет кому-то.

Я использовал этот код:

 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US"); 

Надеюсь, вы сможете запустить приложение сейчас.