Question

Comment modifier le langage de l'entrée et de la sortie audio dans mon code Android? Dois-je modifier ce code pour modifier le langage de sortie d'entrée audio? {Je souhaite définir une variable à EN en anglais en anglais ou définir une variable sur TR pour sélectionner le turc si cela est possible?}

 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;
    }

Ou cela m'aide à changer? -> extra_language_preference

Était-ce utile?

La solution

Cela devrait fonctionner dans la plupart des cas:

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

ou

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

Où vous choisissez le lieu que vous voulez et passez, c'est toString () à extra_language_preference

Cependant, pour être correct, vous devriez essayer de faire une vérification de la langue et observer les "voix" retournées. Manuellement ou automatiquement, choisissez la chaîne "Voice" que vous souhaitez, puis utilisez-le pour la valeur de reconnaissance.extra_language_preference.

Voici un code pour exécuter la vérification de la langue:

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);
}

Où LanguageDeTailschecker est quelque chose comme ceci:

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);
        }
        }
}

Autres conseils

Je définis la langue intentionnelle sur le turc comme ça:

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);

Si vous souhaitez spécifier une reconnaissance linguistique, vous devez mettre:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, language);

language est une chaîne avec le format régional.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top