【问题标题】:Voice command keyword listener in AndroidAndroid中的语音命令关键字侦听器
【发布时间】:2014-06-20 07:16:07
【问题描述】:

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

语音命令识别(激活命令)无需向 Google 语音服务器发送请求即可工作。

如何在 Android 上做到这一点?

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

【问题讨论】:

  • 不发送到谷歌服务器?然后,您正在寻找在设备上进行语音识别的 3rd 方库。预计要花 5 位数才能获得许可证,世界上只有 1 或 2 家公司这样做。

标签: android voice-recognition google-voice


【解决方案1】:

您可以使用 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 个音节。

【讨论】:

  • 我从官方页面下载了 Android 项目示例,使用 ADT 构建,但我收到以下错误:“java.io.FileNotFoundException:sync/models/grammar/digit.gram.md5 错误。”我做错了什么?
  • 可能你没有安装ant。确保在构建项目时执行自定义构建步骤。它必须在项目构建器列表中作为“资产列表构建器”。
  • 我尝试按照官方页面的安装手册进行操作,如果我尝试使用 ANT 进行构建,则会收到以下消息。工作区/PocketSphinx/build.xml:55:缺少 sdk.dir。确保使用 'android update project' 生成 local.properties 或通过 ANDROID_HOME 环境变量注入它。
  • 对于 pocketsphinx 项目中的每个资产文件,我都有相同的 filenotfoundexception - 我不是从源代码构建的。如果我将文件重命名为 *.md5,我会得到另一个 filenotfoundexception 来查找不带 .md5 的原始文件名 - 你找到解决方法了吗?
  • 我找到了参考并立即看到了问题 - 我正在将项目导入 intellij 并且 ant 自定义构建不会在该构建中生成 md5。
猜你喜欢
  • 2011-04-06
  • 1970-01-01
  • 2021-05-21
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
相关资源
最近更新 更多