Android中的语音命令关键字监听器

时间:2014-06-20 07:16:07

标签: android voice-recognition google-voice

我想在我的应用程序中添加语音命令监听器.Service应该监听预定义的关键字,如果说出关键字,它应该调用一些方法。

语音命令识别(激活命令)应该无需向Google语音服务器发送请求。

如何在Android上执行此操作?

感谢您发布一些有用的资源。

1 个答案:

答案 0 :(得分:3)

您可以使用Pocketsphinx完成此任务。检查Pocketsphinx android demo,例如如何在离线状态下有效地监听关键字,并对特定命令做出反应,例如关键短语"哦强大的计算机"。这样做的代码很简单:

您创建了一个识别器,只需添加关键字定位搜索:

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);

并定义一个监听器:

@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");
    }
} 

您可以调整关键字阈值以获得最佳检测/误报警匹配。对于理想的检测精度,关键字应该至少有3个音节,更好的是4个音节。