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);
}
}
}
}
我正在开发一个 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);
}
}
}
}