【问题标题】:InApp voice-triggered controlling and offline SpeechRecognition on Android ICSAndroid ICS上的应用内语音触发控制和离线语音识别
【发布时间】:2018-09-30 17:38:09
【问题描述】:

我目前正在开发一个跨平台应用程序,它应该在 Google GLASS(Android 4.0.4)、智能手机(Android 4.0.4 或更高版本)和其他可穿戴设备上运行。至少它会是 ICS – 冰淇淋三明治版本。
这个应用程序为我提供了由用户或系统触发的事件驱动的不同视图(网络 - 事件)。
对于用户的控制,我想实现语音识别,它只需要识别数字或至少单个数字以及向前和向后的命令。重要的是它还可以离线工作,它应该在应用程序运行时在后台工作,并且不应该覆盖用户界面。
相关工作:
SpeechRecognizer 似乎只有 jellybean 才有离线功能,(还没有找到在 Android 4.0.4 上使用它的方法)。
在我看来,实现自定义 IME 和使用 VoiceTyping 似乎非常昂贵和肮脏。 (就像 Utter!,顺便说一句。真的很棒!)
首次尝试使用 pocketsphinx 尚未成功。

【问题讨论】:

  • 对于冰淇淋三明治的离线语音识别,你可以试试最近更新的安卓版 pocketsphinx 演示 cmusphinx.sourceforge.net/wiki/tutorialandroid
  • 我已经试过这个demo了,app已经安装了,但是命令无法识别……我还没弄明白为什么。在 logcat 中我看不到任何错误,一切似乎都在加载...
  • 该演示在/mnt/sdcard/data/Android/edu.cmu.pocketsphinx中创建原始文件,分享它们。
  • @NikolayShmyrev 我确定你的意思是 /mnt/sdcard/Android/data/edu.cmu.pocketsphinx.demo/files 目录...raw filesthx
  • 你也可以分享一下logcat吗?你还在用昨天的版本吗?它以前坏了,但昨天才更新。

标签: android speech-recognition android-4.0-ice-cream-sandwich


【解决方案1】:

Jelly Bean 的离线语音功能由 Google 搜索应用在内部处理。 RecognizerIntentSpeechRecognizer API 都没有变化。

这对于您想要实现的目标并不理想,因为对非跨平台的封闭源应用程序的依赖会在工作中引发扳手......无论如何,一个简单的 offline = true 参数无处可见,您最终将不得不强制执行此行为。 顺便求了这个参数!

Google 使用专用处理器内核处理他们的唤醒短语,但它看起来像 unlikely that the manufacturers intend to expose this functionality to anyone other than OEMs

剩下的就是其他具有 RESTful 服务的替代识别提供商,例如 iSpeechAT&TNuance,但同样,如果您采用这种方法,您将耗电并使用大量数据。更别提Android平台上发生的音频冲突了。

最后,你得到了Sphinx。目前,我认为这是降低资源使用率的唯一可行解决方案,但它并不能解决音频冲突问题。很长一段时间以来,我一直致力于让它在我的应用程序中运行,但我仍然存在误报的重大问题,这些问题阻止了我将其包含在生产中。

在谷歌、处理器制造商和 OEM 解决如何提供此类功能之前,您可能是唯一的选择,而不需要安装在设备上的每个应用程序都需要一个动作,这是不可避免的.....

我不确定这个回复是否真的提供和回答,更多的不包括一些!

祝你好运

编辑:在可穿戴设备环境中,此类产品将可以访问专用内核 - 至少他们需要确保他们这样做并使用具有此类功能的处理器。从我与开发此类技术的公司的互动来看,他们经常忽略这一点或没有意识到它的必要性。

【讨论】:

  • 感谢您的全面概述,我可能会尝试使用 PocketSphinx lib 来实现它。我看到你在这种情况下已经有很多经验了。所以我将此答案标记为已接受,并希望很快会有更好的离线解决方案。
【解决方案2】:

我想对您的问题提出部分答案。由于您希望语音识别不干扰 UI,您可以创建一个服务,使用它可以使其成为连续语音识别器,避免图形小部件并避免“哔”声。 我使用以下方式并为我工作得很好: Android Speech Recognition Continuous Service

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多