您可以在最新的Google搜索设置中设置多种语音语言。 但问题是SpeechRecognizer只能识别默认语言。
我实施了......
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仅包含默认语言的结果。
我怎样才能得到正确的结果?
感谢。
答案 0 :(得分:11)
即使在任何地方都没有记录,我已经能够发现,在上次更新中引入了多语言支持,Google搜索现在在RecognizerIntent中采用了一个名为&#34; android的新功能。 .speech.extra.EXTRA_ADDITIONAL_LANGUAGES&#34 ;.正如其名称所示,它是一个字符串数组,除了主要语言之外,还将用于指定其他语言,它们仍然由RecognizerIntent.EXTRA_LANGUAGE提供。问题是Google Search会忽略RecognizerIntent.EXTRA_LANGUAGE,如果没有同时提供新的额外内容。这意味着在代码中添加以下行足以解决问题:
intent.putExtra("android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES", new String[]{});
但请注意,即使这样可行,也不会改变Google搜索中存在错误的事实。正如我之前所说,这个新的附加内容没有在任何地方记录,Google搜索没有遵循Android的语音识别API的规范。作为Google搜索和Android的开发者,Google应该:
更改Android中语音识别API的规格, 但这会破坏向后兼容性。
更新Google搜索应用,以便正确遵循 当前规范。
第二个选项显然是最合乎逻辑的选项,因此我们应该让Google知道错误,以便他们解决问题。看起来官方的Google搜索帮助论坛是正确的地方,但到目前为止,Google的任何人都没有关注我为此创建的主题(https://productforums.google.com/forum/#!topic/websearch/PUjEPmdSzSE/discussion)。因此,如果您遇到此问题,请在那里发布您的投诉以吸引Google的注意,让我们看看我们是否以这种方式获得正式答案。
答案 1 :(得分:2)
我发现我的申请存在同样的问题。
我试试。
我正在等待Google更新。
以下是此案例的问题:https://code.google.com/p/android/issues/detail?id=75347
支持网站上的链接:https://productforums.google.com/d/topic/websearch/PUjEPmdSzSE/discussion