1

Android SpeechRecognizer に問題があります。Android バージョン 2.3.5 では、英語 (en-GB) とドイツ語 (de-DE) の両方で完全に動作しますが、バージョン 4.0.3 では、指定された言語がドイツ語であるにもかかわらず、常に英語の音声を認識します。

これは、SpeechRecognizer に渡される私のインテントです。

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, language);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
        mContext.getPackageName());
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
        RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);

mRecognizer.startListening(intent);

変数は常に良いと確信しています(ドイツ語などが必要な場合はde-DE)。

私も追加しようとしました:

intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, language);

しかし、それも機能しません。

また、ドイツ語は SpeechRecognizer でサポートされていると確信しています。この BroadcastReceiver を使用して、利用可能な言語のリストを取得しています。

public class AndroidAvailableLanguagesChecker extends BroadcastReceiver {

    private List<String> supportedLanguages;

    public AndroidAvailableLanguagesChecker() {
        supportedLanguages = new ArrayList<String>();
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle results = getResultExtras(true);
        if (results.containsKey(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES)) {
            supportedLanguages = results
                .getStringArrayList(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES);
        }
    }

    public List<String> getSupportedLanguages() {
        return supportedLanguages;
    }
}




// using broadcast receiver
Intent detailsIntent = new Intent(
        RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS);
mChecker = new AndroidAvailableLanguagesChecker();
context.sendOrderedBroadcast(detailsIntent, null, mChecker, null,
        Activity.RESULT_OK, null, null);

なぜこれが機能しないのか、誰にも分かりますか?

前もって感謝します!

4

1 に答える 1

0

これは単なる仮定であり、今テストするわけではありませんが、おそらく言語は「de-DE」ではなく「de_DE」でなければならないので、試してみてください....

于 2013-03-24T21:45:21.340 に答える