Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

нет решения, кроме обмана...

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

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

Ответ 3

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

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

Ответ 4

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

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

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

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

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

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

Ответ 5

Наконец-то я получил свое приложение, чтобы ограничить результаты распознавания голоса указанным языком ввода (передача его, например, "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);

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

Ответ 6

Я попытался использовать

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());

но это не сработало для меня (не принимал системный язык). Помог здесь вот так:

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

Ответ 7

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

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

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