Continuous Speech Recognition Android - Without Gaps

Ronen Rabinovici picture Ronen Rabinovici · May 17, 2015 · Viewed 19.1k times · Source

I have an activity that implements RecognitionListener. To make it continuous, every time onEndOfSpeech() I start the listener again:

speech.startListening(recognizerIntent);

But, it takes some time (around half a second) till it starts, so there is this half a second gap, where nothing is listening. Therefore, I miss words that were spoken in that time difference.

On the other hand, when I use Google's Voice input, to dictate messages instead of the keyboard - this time gap does not exist. Meaning - there is a solution.

What is it?

Thanks

Answer

Nana Ghartey picture Nana Ghartey · May 17, 2015

I'll recommend using CMUSphinx to recognize speech continuously. To achieve continuous speech recognition using google speech recognition api, you might have to resort to a loop in a background service which will take too much resources and drains the device battery.

On the other hand, Pocketsphinx works really great. It's fast enough to spot a key phrase and recognize voice commands behind the lock screen without users touching their device. And it does all this offline. You can try the demo.

If you really want to use google's api, see this