Android 使用语音识别的部分结果
我创建了一个简单的应用程序,以测试所有可用选项(即extra)。我阅读了有关的内容,如果启用此选项,我将从服务器接收与语音识别相关的任何部分结果。但是,当我在Android 使用语音识别的部分结果,android,speech-recognition,android-2.3-gingerbread,Android,Speech Recognition,Android 2.3 Gingerbread,我创建了一个简单的应用程序,以测试所有可用选项(即extra)。我阅读了有关的内容,如果启用此选项,我将从服务器接收与语音识别相关的任何部分结果。但是,当我在ACTION\u RECOGNIZE\u SPEECH意图中添加此额外内容时,语音识别不再起作用:列表不会显示任何结果 protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == VOICE_RE
ACTION\u RECOGNIZE\u SPEECH
意图中添加此额外内容时,语音识别不再起作用:列表不会显示任何结果
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == VOICE_RECOGNITION_REQUEST_CODE) {
switch(resultCode) {
case RESULT_OK:
Log.i(TAG, "RESULT_OK");
processResults(data);
break;
case RESULT_CANCELED:
Log.i(TAG, "RESULT_CANCELED");
break;
case RecognizerIntent.RESULT_AUDIO_ERROR:
Log.i(TAG, "RESULT_AUDIO_ERROR");
break;
case RecognizerIntent.RESULT_CLIENT_ERROR:
Log.i(TAG, "RESULT_CLIENT_ERROR");
break;
case RecognizerIntent.RESULT_NETWORK_ERROR:
Log.i(TAG, "RESULT_NETWORK_ERROR");
break;
case RecognizerIntent.RESULT_NO_MATCH:
Log.i(TAG, "RESULT_NO_MATCH");
break;
case RecognizerIntent.RESULT_SERVER_ERROR:
Log.i(TAG, "RESULT_SERVER_ERROR");
break;
default:
Log.i(TAG, "RESULT_UNKNOWN");
break;
}
}
Log.i(TAG, "Intent data: " + data);
super.onActivityResult(requestCode, resultCode, data);
}
private void processResults(Intent data) {
Log.i(TAG, "processResults()");
ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
// list of results
ListView listOfResults = (ListView)(findViewById(R.id.list_of_results));
listOfResults.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, matches));
// number of elements of above list
TextView resultsCount = (TextView)(findViewById(R.id.results_count));
resultsCount.setText(getString(R.string.results_count_label) + ": " + matches.size());
}
但是,启用此选项后,
processResults
方法中的ArrayList匹配
只有一个空元素。我建议不要依赖部分搜索结果,因为谷歌文档说明:
根据我的经验,谷歌几乎总是忽略部分搜索结果的请求
但是,我不认为设置EXTRA\u PARTIAL\u RESULTS
会阻止正常EXTRA\u RESULTS
返回。它应该没有任何效果。我已经在代码中对此进行了测试,添加EXTRA\u PARTIAL\u结果
不会改变输出
另外,除非您使用的是SpeechRecognizer
,否则Android不会向您发送这些错误代码
查看额外部分结果
不会干扰结果。从中获取代码,然后在此方法中添加额外代码:
private void sendRecognizeIntent()
{
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say the magic word");
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 100);
startActivityForResult(intent, SPEECH_REQUEST_CODE);
}
我想了解为什么我在Android 2.3.5上的测试(带有
EXTRA\u PARTIAL\u结果
选项)不起作用。您使用了哪些说明来请求部分结果?(我只是在原意中添加了这个额外的内容:请参阅我在问题末尾添加的详细信息)。您使用了哪些说明来访问部分结果?应该有完整的结果一起返回。。。是否?从这里获取代码:然后添加intent.putExtra(RecognizerIntent.EXTRA\u PARTIAL\u RESULTS,true);注意:我在Android 4.0.3Soon上进行了测试,我将从您的链接中尝试代码!如果同样的问题会发生,是什么原因造成的?Android的2.3.5版本或语音识别器的版本(我有语音搜索2.1.3)?我刚刚在安装了语音搜索2.1.3的Android 2.3.5上尝试了您的链接中的代码:当我添加intent.putExtra(RecognizerIntent.EXTRA\u PARTIAL\u RESULTS,true)代码>,结果列表始终为空。我想这个问题是由语音搜索应用程序引起的:我可以尝试用最新版本更新它!有趣的怪虫子。顺便说一句,它在Droid X上工作,Android版本为2.3.3,语音搜索2.1.4额外部分结果的内部是什么?一个常量字符串值(“Android.speech.EXTRA.PARTIAL\u RESULTS”
),可用于启用或禁用“pratial RESULTS”选项,因此我将其设置为布尔值true
。
private void sendRecognizeIntent()
{
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say the magic word");
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 100);
startActivityForResult(intent, SPEECH_REQUEST_CODE);
}