Comment configurer le langage dans la reconnaissance vocale sur android?
j'ai travaillé sur l'API de reconnaissance vocale sur android et j'ai découvert que les résultats de la parole varient allot lorsque les paramètres de langue sont changés , y a-t-il un moyen de le programmer ? ou y a-t-il une intention de déjeuner l'écran Paramètres du langage 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
8 réponses
comme le dit pargat, ceci le fera:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
en outre, votre application peut rechercher la liste des langues prises en charge en envoyant un RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS
ordonné de radiodiffusion comme suit:
Intent detailsIntent = new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
sendOrderedBroadcast(
detailsIntent, null, new LanguageDetailsChecker(), 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);
}
}
}
Pour le code complet découvrez ce projet github: https://github.com/gast-lib
Cela fonctionne:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en_US");
vous devez utiliser " en_US "au lieu de"en-US". Le premier est le bon format de Java locale tag.
il est suggéré d'utiliser
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.US.toString());
pour éviter de se rappeler de tels détails.
Avez-vous essayé ceci:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
j'ai finalement obtenu mon application pour restreindre les résultats de reconnaissance vocale à une entrée de 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);
Espérons que cela 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 le langage du système). Aidé ici comme ceci:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault().toString());
ce code est pour définir le langage dans la reconnaissance de la parole
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);
j'ai utilisé ce code:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
j'Espère que vous pouvez exécuter votre application.