我想在我的应用程序中添加语音命令监听器。服务应该监听预定义的关键字,如果说出关键字,它应该调用一些方法。
语音命令识别(激活命令)应该可以在不向 Google 语音服务器发送请求的情况下工作。
我怎样才能在安卓上做到这一点?
感谢您发布一些有用的资源。
我想在我的应用程序中添加语音命令监听器。服务应该监听预定义的关键字,如果说出关键字,它应该调用一些方法。
语音命令识别(激活命令)应该可以在不向 Google 语音服务器发送请求的情况下工作。
我怎样才能在安卓上做到这一点?
感谢您发布一些有用的资源。
您可以使用 Pocketsphinx 来完成此任务。查看Pocketsphinx android 演示,例如如何在离线时有效地收听关键字并对特定命令做出反应,例如关键短语“哦,强大的计算机”。执行此操作的代码很简单:
您创建一个识别器并添加关键字定位搜索:
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 个音节。