web-dev-qa-db-ja.com

Androidの音声認識で言語を設定するにはどうすればよいですか?

私はAndroid=で音声認識APIに取り組んでいて、言語設定が変更されると音声の結果がどのように変化するかを知りました。プログラムで設定する方法はありますか?または意図があります。音声言語設定画面を昼食するには?または他に何?注:このインテントを追加で使用しようとしました:

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

しかしそれは効果がなかった

19
Mr.Me

Pargatが言うように、これはそれを行います:

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

また、アプリは、次のようにRecognizerIntent.ACTION_GET_LANGUAGE_DETAILSの順序付けされたブロードキャストを送信することで、サポートされている言語のリストをクエリできます。

    Intent detailsIntent =  new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
    sendOrderedBroadcast(
            detailsIntent, null, new LanguageDetailsChecker(), 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);
        }
    }
}

完全なコードについては、このgithubプロジェクトをチェックしてください: https://github.com/gast-lib

45
gregm

解決策はありませんが、回避策があります...

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

ここをチェック 完全なストーリー。

12
Arnav M.

これは動作します:

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

「en-US」の代わりに「en_US」を使用する必要があります。前者はJavaロケールタグの正しい形式です。

使用することをお勧めします

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

そのような詳細を覚えないようにします。

9
orina1123

これを試しましたか:

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

最後に、次の3つすべての追加機能を追加することで、音声認識結果を指定された言語入力に制限する(たとえば、日本語の場合は「ja」、フランス語の場合は「fr」)アプリを取得しました。

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

これが誰かを助けることを願っています。

6
kwishnu

使ってみた

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

しかし、それは私にはうまくいきませんでした(システム言語を取っていませんでした)。このようにここで助けました:

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

このコードは音声認識で言語を設定するためのものです

  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