我正在使用安装了Google搜索版本3.6.14.1337016的SpeechRecognizer(在Android 4.4.2上),使用2种语言en-US
和zh_HK
。我最近将Google搜索(重命名为Google App)更新为版本5.14.32.16.arm,返回结果的速度为慢(大约需要35秒)。这是我的代码:
speechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
speechRecognizer.setRecognitionListener(new CustomListener());
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "zh_HK");
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "zh_HK");
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
intent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, !isOnline());
intent.putExtra("android.speech.extra.EXTRA_ADDITIONAL_LANGUAGES", new String[]{"zh_HK", "en-US"});
speechRecognizer.startListening(intent);
其中CustomListener()
捕获onError
和onResults
,isOnline()
检测网络是否可用。
在更新Google搜索之前,结果会在3秒内返回。以下是更新后的时间表:
18:42:05.183 - onReadyForSpeech
18:42:05.513 - onBeginningOfSpeech
18:42:10.208 - onEndOfSpeech
18:42:45.663 - onResults
如何加快结果检索?
此外,由于我包含了zh_HK
,因此结果包含中文字符。但是,在每个字符之后添加空格。
更新前:
hello 你好嗎
更新后:
hello 你 好 嗎
这是一个已知的错误吗?
额外发现:
如果我卸载了所有离线语音识别语言,SpeechRecognizer
将有90%的机会返回SpeechRecognizer.ERROR_NETWORK
,而结果返回的可能性很小。这有什么关系?我检查了设备是否在线。