Android 语音识别更改 return 语言

Android Speech Recognision change return language

我正在开发一个 android 应用程序,它接受语音输入并将结果文本设置为 TextView。虽然要识别的语音语言不是英语,但应用程序提供的结果文本是英语。说的详细一点,我创建的语音识别意图是这样的:

Locale locale = new Locale.Builder().setLanguage("bn").setScript("Beng").setRegion("BD").build();
intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,locale);
intent.putExtra(RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES,locale);
intent.putExtra(RecognizerIntent.EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE,locale);

RecognitionListener onResult() 方法如下所示:

public void onResults(Bundle results) {
    ArrayList<String> voiceResults = results
            .getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
    if (voiceResults == null) {
        text = "";
        Log.e("Listener","No voice results");
    } else {
        text = voiceResults.get(0);
        display.setText(text);
    }
}

我想要 results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION) 到 return 一个由孟加拉字母组成的 ArrayList。

预期行为:

当前输出:

使用下面的方法达到想要的输出,设置[​​=12=]:

 private void getAudioInput() {
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "bn-BD");
        intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "I am Listening...");
        try {
            startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
        } catch (ActivityNotFoundException ignored) {

        }
    }

然后使用 onActivityResult() 使用您在 startActivityForResult() 中使用的相同请求代码接收结果,目的如下:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQ_CODE_SPEECH_INPUT) {
            if (resultCode == RESULT_OK && null != data) {
                ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                if (result != null) {
                    bangla_text = result.get(0);
                    textOutput.setText(bangla_text);
                }
            }
        }
    }