私はAndroid=で音声認識APIに取り組んでいて、言語設定が変更されると音声の結果がどのように変化するかを知りました。プログラムで設定する方法はありますか?または意図があります。音声言語設定画面を昼食するには?または他に何?注:このインテントを追加で使用しようとしました:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en-US");
しかしそれは効果がなかった
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
解決策はありませんが、回避策があります...
intent.putExtra("Android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES", new String[]{"en"});
ここをチェック 完全なストーリー。
これは動作します:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en_US");
「en-US」の代わりに「en_US」を使用する必要があります。前者はJavaロケールタグの正しい形式です。
使用することをお勧めします
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.US.toString());
そのような詳細を覚えないようにします。
これを試しましたか:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
最後に、次の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);
これが誰かを助けることを願っています。
使ってみた
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
しかし、それは私にはうまくいきませんでした(システム言語を取っていませんでした)。このようにここで助けました:
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault().toString());
このコードは音声認識で言語を設定するためのものです
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);