私のアプリケーションでは、ユーザーの発言を検出するためにSpeechRecognizerを使用しています。私のデバイスの言語は英語に設定されており、英語で何かを言うと完璧に機能しますが、ヘブライ語などの他の言語で何かを言うと、英語で機能するため、常に機能しません。デバイスの言語をヘブライ語に変換すると、問題なく動作します。デバイスの言語を設定することを避けようとしており、ユーザーの言語を自動的に検出したいと考えています。デバイスの言語が英語に設定されている場合でも、「OK Google」が機能し、ヘブライ語の正しい単語を検出することに気付きました。
それまでの間、私がやろうとしたことは、ユーザーが初めて私のアプリケーションに入るときに、彼の国に入るように頼むことです. 次に、彼の国がある場合 -> 国コードを取得し、国コードを使用してロケールを作成します。次に、このロケールが言語として音声認識エンジンに送信されます。しかし、それは役に立ちませんでした..
// example of how to get the locale using the country code
Locale myLocale = null;
String toSearch = "IL";
toSearch = toSearch.trim().toLowerCase();
for (Locale locale : Locale.getAvailableLocales())
{
if(locale.getCountry().trim().toLowerCase().contains(toSearch))
{
myLocale = locale;
break;
}
}
// example of how I'm sending the locale
Intent recIntent= new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
recIntent.putExtra(RecognizerIntent.ExtraLanguage,myLocale);