您可以在最新Google搜索设置中设置多种语音语言。但问题是,语音识别器只能识别默认语言。
我实现……
private SpeechRecognizer mGoogleRecognizer;
private void startRecognition() {
mGoogleRecognizer = SpeechRecognizer.createSpeechRecognizer(m_context);
mGoogleRecognizer.setRecognitionListener(this);
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "ko-KR");
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Intellectual Personal Assistant");
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, m_context.getPackageName());
mGoogleRecognizer.startListening(intent);
}
@Override
public void onResults(Bundle results) {
ArrayList<String> resultList = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
}
请求韩语识别,但resultList只包含默认语言的结果。
我怎样才能得到正确的结果?
谢谢。
尽管这在任何地方都没有记录,但我已经能够发现,随着在其上次更新中引入多语言支持,谷歌搜索现在在RecognizerIntent中增加了一个新的额外功能,称为"android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES"。正如它的名字所暗示的那样,它是一个字符串数组,用于指定除了主语言之外的其他语言,主语言仍然由RecognizerIntent.EXTRA_LANGUAGE给出。问题是Google Search忽略了RecognizerIntent。EXTRA_LANGUAGE,如果这个新的extra没有附带的话。这意味着在代码中添加以下行就足以解决问题:
intent.putExtra("android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES", new String[]{});
但请注意,即使这工作,它并没有改变的事实,有一个错误在谷歌搜索。正如我之前所说的,这个新的额外功能没有任何文档记录,Google搜索也没有遵循Android语音识别API的规范。作为Google Search和Android的开发者,Google应该:
修改Android语音识别API的规范,
更新谷歌搜索应用程序,使其正确地遵循当前规范。
第二个选项显然是最合乎逻辑的,因此我们应该让Google知道这个bug,以便他们修复它。它看起来像官方的谷歌搜索帮助论坛是正确的地方,但到目前为止,没有人从谷歌已经注意到我在那里创建的线程(https://productforums.google.com/forum/#!topic/websearch/PUjEPmdSzSE/discussion)。所以,如果你遇到了这个问题,请在这里发表你的抱怨,以引起谷歌的注意,让我们看看我们是否能得到一个官方的答案。
我在我的应用程序中发现了同样的问题。
我只是尝试。
- 删除谷歌搜索3.6更新。这是工作。
- 修改默认语言。我只能使用默认语言。
我在等待Google更新。
下面是这个案例的问题:https://code.google.com/p/android/issues/detail?id=75347
支持网站链接:https://productforums.google.com/d/topic/websearch/PUjEPmdSzSE/discussion