我在我的Android应用中使用Pocketsphinx进行唤醒单词检测。初始化Pocketsphinx之后并开始通过
收听private void setup() {
try {
final Assets assets = new Assets(ListeningActivity.this);
final File assetDir = assets.syncAssets();
mRecognizer = SpeechRecognizerSetup.defaultSetup()
.setAcousticModel(new File(assetDir, "models/en-us-ptm"))
.setDictionary(new File(assetDir, "models/lm/words.dic"))
.setKeywordThreshold(Float.valueOf("1.e-" + 2 * sensibility))
.getRecognizer();
mRecognizer.addKeyphraseSearch(WAKEWORD_SEARCH, getString(R.string.wake_word));
mRecognizer.addListener(this);
mRecognizer.startListening(WAKEWORD_SEARCH);
Log.d(LOG_TAG, "... listening");
} catch (IOException e) {
Log.e(LOG_TAG, e.toString());
}
}
识别质量非常好。
但是随着时间的流逝,识别质量越来越差。这意味着我的唤醒词检测非常糟糕,以至于我不得不说大约5次唤醒词,直到语音识别器检测到它为止。如果我再次重新初始化语音识别器,则唤醒词检测质量会再次达到很好,但随着时间的流逝会像以前一样变差。
我如何做才能保持长时间的良好质量,而无需permananet再次重新初始化Pocketsphinx SpeechRecognizier?