我正在研究源码TestPocketSphinxAndAndroidASR.java https://github.com/mistrykajal16/AndroidPocketSphinx/blob/master/src/ca/ilanguage/labs/pocketsphinx/ui/TestPocketSphinxAndAndroidASR.java我不太清楚的第一件事是系统如何知道which要调用的识别器(即 Google 或 CMUSphinx)。
我可以看到识别活动是通过以下方式启动的:
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
但据我所知,这段代码并不特定于 GVR(Google 语音搜索)或 CMUSphinx。
那么 Android 如何知道which识别器启动?
之前在 onCreate() 中,有一个对 Android PocketSphinx 设置的引用:
mUsePocektSphinxASR = prefs.getBoolean(PreferenceConstants.PREFERENCE_USE_POCKETSPHINX_ASR, false);
但搜索entire项目仅生成下一个语句,该语句使用此布尔值来显示不同的 Toast:
if (mUsePocektSphinxASR){
Toast.makeText(TestPocketSphinxAndAndroidASR.this, "Would be working offline, using PocketSphinx Speech recognizer...", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(TestPocketSphinxAndAndroidASR.this, "Working online, Using system speech recognizer (Google speech recognition server)... ", Toast.LENGTH_LONG).show();
}
所以我不明白系统如何知道(基于该偏好)启动哪个识别器。
安卓怎么知道which识别器启动?