it-swarm.com.de

Wie stelle ich die Sprache bei der Spracherkennung auf Android ein?

Ich arbeite auf dem Spracherkennungs-API in Android und fand heraus, dass die Sprach Ergebnisse zuteilen variieren, wenn die Spracheinstellungen geändert werden, ist es eine Möglichkeit, es programmatisch zu setzen? Oder gibt es die Absicht, den Bildschirm mit den Spracheinstellungen zu Mittag zu essen? oder was noch? Hinweis: Ich habe versucht, diese Absicht zusätzlich zu verwenden:

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

aber es war unwirksam

17
Mr.Me

Wie Pargat sagt, das wird es tun:

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

Außerdem kann Ihre App die Liste der unterstützten Sprachen abfragen, indem Sie wie folgt eine RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS geordnete Sendung senden:

    Intent detailsIntent =  new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
    sendOrderedBroadcast(
            detailsIntent, null, new LanguageDetailsChecker(), null, Activity.RESULT_OK, null, null);

wobei LanguageDetailsChecker in etwa so aussieht:

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

Den vollständigen Code finden Sie in diesem github-Projekt: https://github.com/gast-lib

43
gregm

es gibt keine Lösung, aber ein Hackaround ...

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

schau hier die komplette Geschichte.

12
Arnav M.

Das wird funktionieren:

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

Sie müssen "en_US" anstelle von "en-US" verwenden. Ersteres ist das richtige Format des Java-Locale-Tags.

Es wird empfohlen, dass Sie verwenden 

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

um nicht an solche Details zu denken.

9
orina1123

Hast du das probiert:

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

Ich habe meine App endlich dazu gebracht, die Ergebnisse der Spracherkennung auf eine bestimmte Spracheingabe zu beschränken (z. B. "ja" für Japanisch oder "fr" für Französisch), indem alle drei der folgenden Extras hinzugefügt werden:

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

Hoffe das hilft jemandem.

6
kwishnu

Ich habe versucht zu benutzen

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

aber es hat für mich nicht funktioniert (hat die Systemsprache nicht genommen). Hat hier so geholfen:

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

Mit diesem Code wird die Sprache bei der Spracherkennung eingestellt.  

  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);
0
dileep krishnan