user2476398
user2476398

Reputation:

Android SpeechRecognizer poor accuracy

I am using the Native SpeechRecognizer service in an Activity, and it "works" but I have some serious issues.

The returned 'speech to text' is quite frankly appalling, and very very poor, certainly unusable in an application (via the onResults callback). Sometimes the results are so way off I suspected a faulty mic but it occurs on many devices.

My required vocabulary is only 16 words. Is there a more efficient way to implement accuracy with such a limited vocabulary, perhaps a third party API?

I really need this working if the application is to be successful as entering via the touch screen is far too slow for our requirements.

App uses Android 4.4/Scala/Java/Some C Algs with NDK.

Any help greatly appreciated.

Upvotes: 1

Views: 545

Answers (2)

Fisher
Fisher

Reputation: 509

Usually, the results in onResults() has many candidates. You can compare every candidate with your target vocabulary, instead of just choose first one. This should raise the hit rate. You can also set the number of candidates, like intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5); as the Android documents described

        @Override
    public void onResults(Bundle results) {
        for (String res : resList) {
            //compare every "String res" with your target vocabulary, instead 
            //of just choose first one.
        }
    }

Upvotes: 0

Ryan S
Ryan S

Reputation: 4567

Unfortunately, you don't have much control over to Google Speech Recognition library, but you can either implement a more customizable library like PocketSphinx or you can attempt to run further analysis on the results. For example I use the doublemetaphone library to check if the words recognized sound like the ones you expect to hear.

Upvotes: 2

Related Questions