Search code examples
javaandroiddatabasevoice-recognitioncmusphinx

How to see if word exists in Pocketsphinx dictionary?


I simply want to see if a string exists in a dictionary file. (Dictionary file at bottom of question)

I want to check if the voice recognizer can recognize a word or not. For example, the recognizer will not be able to recognize a string of ahdfojakdlfafiop, because that is not defined in the dictionary. So, can I check if a word is in the dictionary of pocktsphinx?

Something like:

    if(myString.existsInDictionary){
startListeningBecauseExists();
    }else(
//Doesn't exist in dictionary!!!
       }

I just want a way to be able to tell if the recognizer can listen for what I want it to listen to.

here is the dictionary file:

https://raw.githubusercontent.com/cmusphinx/pocketsphinx-android-demo/master/app/src/main/assets/sync/cmudict-en-us.dict

Thanks,

Ruchir


Solution

  • In C there is ps_lookup_word function which allows you to lookup for the word:

    if (ps_lookup_word(ps, "abc") == NULL) {
        // do something
    }
    

    In Java wrapper it's a method Decoder.lookupWord:

    if(decoder.lookupWord("abc") == null) {
        // do something
    }
    

    In Android, you can access decoder from Recognizer:

    if(recognizer.getDecoder().lookupWord("abc") == null) {
        // do something
    }