Voice command keyword listener in Android

前端 未结 1 1825
甜味超标
甜味超标 2020-12-03 09:33

I would like to add voice command listener in my application.Service should listen to predefined keyword and and if keyword is spoken it should call some method.

Vo

1条回答
  •  情深已故
    2020-12-03 09:47

    You can use Pocketsphinx to accomplish this task. Check Pocketsphinx android demo for example how to listen for keyword efficiently in offline and react on the specific commands like a key phrase "oh mighty computer". The code to do that is simple:

    you create a recognizer and just add keyword spotting search:

    recognizer = SpeechRecognizerSetup.defaultSetup()
            .setAcousticModel(new File(modelsDir, "hmm/en-us-semi"))
            .setDictionary(new File(modelsDir, "lm/cmu07a.dic"))
            .setKeywordThreshold(1e-40f)
            .getRecognizer();
    
    recognizer.addListener(this);
    recognizer.addKeyphraseSearch("keywordSearch", "oh mighty computer");
    recognizer.startListening("keywordSearch);
    

    and define a listener:

    @Override
    public void onPartialResult(Hypothesis hypothesis) {
        if (hypothesis == null)
              return;
        String text = hypothesis.getHypstr();
        if (text.equals(KEYPHRASE)) {
          //  do something and restart listening
          recognizer.cancel();
          doSomething();
          recognizer.startListening("keywordSearch");
        }
    } 
    

    You can adjust keyword threshold for the best detection/false alarm match. For the ideal detection accuracy keyword should have at least 3 syllables, better 4 syllables.

    0 讨论(0)
提交回复
热议问题