【发布时间】:2013-09-04 01:42:32
【问题描述】:
我正在研究TestPocketSphinxAndAndroidASR.java 的源代码,我首先不太清楚的是系统如何知道要调用哪个识别器(即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 是如何知道要启动哪个识别器的呢?
在前面的 onCreate() 中,有一个对 AndroidPocketSphinx 设置的引用:
mUsePocektSphinxASR = prefs.getBoolean(PreferenceConstants.PREFERENCE_USE_POCKETSPHINX_ASR, false);
但在 整个 项目中搜索只会产生下一条语句,该语句使用此布尔值来显示不同的 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();
}
所以我不明白系统如何知道(基于该偏好)启动哪个识别器。
Android 如何知道要启动哪个识别器?
【问题讨论】:
-
什么是
TestPocketSphinxAndAndroidASR.java?请提供链接。 -
@Kaarel 抱歉,我没有意识到它不容易找到。我最初以为这是官方PocketSphinxAndroidDemo 的一部分,但由于您的问题,我意识到这实际上是a fork。在上面的更新中直接查看文件的链接,问题仍然存在。作者是如何做到这一点的?谢谢。
标签: android speech-recognition speech-to-text cmusphinx