аудио вход и выход (Android в коде) - PullRequest
0 голосов
/ 15 января 2012

Как изменить язык ввода и вывода звука в моем коде Android?Должен ли я отредактировать этот код, чтобы изменить язык вывода звука?{Я хочу установить одну переменную на En для речевого языка на английском или установить переменную на Tr для выбора турецкого языка, если это возможно?}

 public Intent getRecognizeIntent()
    { 
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        intent.putExtra(RecognizerIntent.EXTRA_PROMPT, prompt);
        intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 100);
        return intent;
    }

Или это поможет мне измениться?-> EXTRA_LANGUAGE_PREFERENCE

Ответы [ 3 ]

1 голос
/ 21 июня 2016

Я установил для RecognizerIntent язык турецкий, например:

language = "tr-TR";
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, language);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, language);
intent.putExtra(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES, language);
intent.putExtra(RecognizerIntent.EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE,language);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, language);
intent.putExtra(RecognizerIntent.EXTRA_RESULTS, language);
startActivityForResult(intent, REQUEST_CODE);
0 голосов
/ 29 июня 2016

Если вы хотите указать распознавание языка, вам нужно поставить:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, language);

где language - строка в формате Locale.

0 голосов
/ 07 марта 2012

Это должно работать в большинстве случаев:

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

или

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

Где вы выбираете нужный язык и передаёте его toString () в EXTRA_LANGUAGE_PREFERENCE

Однако, чтобы быть точным, вы должны попытаться выполнить проверку языка и наблюдать возвращенные «голоса». Вручную или автоматически выберите нужную «голосовую» строку и затем используйте ее для значения RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE.

Вот код для проверки языка:

public static void getLanguageDetails(Context context,
        OnLanguageDetailsListener andThen)
{
    Intent detailsIntent = new Intent(
            RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
    LanguageDetailsChecker checker = new LanguageDetailsChecker(andThen);
    context.sendOrderedBroadcast(detailsIntent, null, checker, 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);
        }
        }
}
...