J'ai travaillé sur l'API de reconnaissance vocale sous Android et découvert que les résultats de la parole varient en fonction de la modification des paramètres de langue. Y a-t-il un moyen de le définir par programme? ou y a-t-il une intention d'attaquer l'écran des paramètres de la parole ou quoi d'autre? note: j'ai essayé d'utiliser cette intention supplémentaire:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en-US");
mais c'était inefficace
Comme le dit Pargat, cela le fera:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
En outre, votre application peut interroger la liste des langues prises en charge en envoyant une diffusion ordonnée par RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS
comme suit:
Intent detailsIntent = new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
sendOrderedBroadcast(
detailsIntent, null, new LanguageDetailsChecker(), null, Activity.RESULT_OK, null, null);
où LanguageDetailsChecker ressemble à 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);
}
}
}
Pour le code complet, consultez ce projet github: https://github.com/gast-lib
il n'y a pas de solution mais un hackaround ...
intent.putExtra("Android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES", new String[]{"en"});
vérifier ici l'histoire complète.
Cela fonctionnera:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en_US");
Vous devez utiliser "en_US" au lieu de "en-US". Le premier est le bon format de balise de paramètres régionaux Java.
Il est suggéré que vous utilisiez
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.US.toString());
pour éviter de se souvenir de tels détails.
Avez-vous essayé ceci:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
Enfin, mon application a restreint les résultats de la reconnaissance vocale à une langue spécifiée (par exemple, "ja" pour le japonais ou "fr" pour le français) en ajoutant les 3 extras suivants:
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);
J'espère que ça aide quelqu'un.
J'ai essayé d'utiliser
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
mais cela n’a pas fonctionné pour moi (n’a pas pris la langue du système). ici comme ceci:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault().toString());
Ce code sert à définir la langue de reconnaissance vocale
String languagePref = "te-IN";//this is for telugu
//kannada ---> "kn-IN"
//tamil---> "ta-IN".....
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, languagePref);