android - Android ICS 上的 App 内语音触发控制和离线语音识别

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

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

最佳答案

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

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

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

剩下其他具有 RESTful 服务的替代识别提供程序,例如 iSpeech , AT&TNuance ,但同样,如果您采用这种方法,您将耗尽电池并使用大量数据。更不用说在Android平台上发生的音频冲突。

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

在谷歌、处理器制造商和原始设备制造商研究出如何提供此类功能之前,这可能是您唯一的选择,而无需安装在设备上的每个应用程序都想参与其中,这是不可避免的......

我不确定这个回复是否真的提供和回答了,更排除了一些!

祝你好运

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

关于android - Android ICS 上的 App 内语音触发控制和离线语音识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21110975/

相关文章:

java - (Android Studio) 如何将位图保存到内部存储?

android - 如何设置 spannable textview 之间的边距?

objective-c - SFTranscriptionSegment 的时间戳始终为 0

.net - HTML5 应用程序的服务器端语音识别

java - 线程 "AWT-EventQueue-0"javax.speech.EngineStateError : Invalid EngineState 中的异常

android - gralloc_goldfish(634) : Emulator without GPU emulation detected

android - 在 Android Ice Cream Sandwich 上隐藏状态栏

android - GoogleAuthException 未知来源

java - 在Android Studio 中使用Java 调用setPlaybackParams() 时,如何防止MediaPlayer 启动?

java - "cannot be resolved to a type"是什么意思,我该如何解决? Java 安卓 4.0