OK, there is a new beta to test at:
This will recalibrate any time that it experiences a fast background noise level jump that could previously result in the VAD getting confused and hanging. It will use all the available samples in the ringbuffer up to that point in time to calibrate in place in a fraction of a second.
Loud noise levels will still be a challenging situation for recognition so it shouldn’t be expected that this will remove all traces of long or confused recognitions in environments with competing noise that is as loud or louder than speech — what we’re looking for here is that the VAD doesn’t become stuck in a particular state, but the usual compromised recognition results in environments with lots of noise and sudden noise level changes are to be expected.
I am also trying out an isSuspended and an isListening property for PocketsphinxController which you can check out in this version, although I am not committing to adding them for 1.65.
In order to add this calibration change and the other fixes while keeping things maintainable it was necessary to refactor the listening loop, so please let me know about any other odd behavior you see.