I use Pocketsphinx for wakeup word detection in my Android app. After initializing pocketsphinx and after start listening via
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());
}
}
the recognition quality is very good.
But over time the recognition quality is getting worse. This means my wakeup word detection is so bad then, that I have to say ma wakeup word about 5 times until the speechrecognizer detect it. If I reinitialize the speechrecognizer again the wakeup word detection quality is very good again but is getting worse over time like before.
What can I do to keep the good quality over time without permananet reinitializing the pocketsphinx SpeechRecognizier again?