Android中的离线语音识别(JellyBean)

rmo*_*ney 78 android speech-recognition offline speech-to-text google-now

看起来谷歌已经从Google即时版为第三方应用程序提供了离线语音识别功能.它被名为Utter的应用程序使用.

有没有人看过如何使用这个离线语音rec进行简单的语音命令的任何实现?您是否只使用常规的SpeechRecognizer API并自动运行?

bra*_*all 71

Google确实在该搜索更新中悄然启用了离线识别功能,但在SpeechRecognizer类中(目前)还没有可用的API或其他参数.{请参阅本文底部的编辑}该功能可用,无需额外编码,但是用户的设备需要正确配置才能开始工作,这就是问题所在,我想象为什么很多开发人员假设他们"缺少某些东西".

此外,由于硬件限制,谷歌限制某些Jelly Bean设备使用离线识别.哪些适用的设备没有记录,事实上,没有任何文件记录,因此为用户配置功能已经证明是一个试验和错误的问题(对他们而言).它适用于一些直接 - 对于那些它没有,这是我提供给他们的'指南'.

  1. 确保默认的Android语音识别器设置为Google而不是Samsung/Vlingo
  2. 从Google语音搜索设置中卸载您已安装的所有脱机识别文件
  3. 转到您的Android应用设置,看看您是否可以卸载Google搜索和Google语音搜索应用的更新.
  4. 如果您无法执行上述操作,请转到Play商店,看看您是否有选项.
  5. 重启(如果你达到2,3或4)
  6. 从Play商店更新Google搜索和Google语音搜索(如果您已达到3或4或无论如何都有更新).
  7. 重启(如果你达到了6)
  8. 安装英国英国脱机语言文件
  9. 重启
  10. 使用绝对!有连接
  11. 切换到飞行模式并试一试
  12. 一旦它工作,其他语言的离线识别,如英语美国也应该开始工作.

编辑:暂时将设备区域设置更改为英语英国似乎也启动了这项工作.

一些用户报告说他们在开始工作之前仍然需要多次重启,但他们最终都会到达那里,通常莫名其妙地触发了什么触发器,其关键在于Google搜索APK,所以不在公共领域或AOSP的一部分.

根据我的建议,Google在决定是否使用离线或在线识别之前测试连接的可用性.如果连接最初可用但在响应之前丢失,则Google将提供连接错误,它不会退回到脱机状态.作为旁注,如果已经发出了对网络合成语音的请求,则如果失败则没有提供错误 - 您会收到静音.

Google搜索更新在Google即时中未启用其他功能,事实上,如果您尝试在没有互联网连接的情况下使用它,则会出错.我提到这一点,因为我想知道这种能力是否会像它出现的那样安静地被撤回,因此不应该依赖于生产.

如果您打算开始使用SpeechRecognizer类,请注意,有一个相关的主要错误,需要您自己的实现来处理.

无法专门请求offline = true,无需操作数据连接就无法控制此功能.垃圾.您将收到数以百计的用户电子邮件,询问您为什么没有启用这么简单的东西!

编辑:自API级别23以来,添加了一个新参数EXTRA_PREFER_OFFLINE,Google认可服务似乎确实遵守了该参数.

希望以上有所帮助.


use*_*828 20

我想改进答案/sf/answers/1237225881/向用户发送带有图片的指南.这句话是"对于那些没有的人,这是我向他们提供的'指南'." 我想改进.

用户应在这些图像中单击以蓝色突出显示的四个按钮:

转到Android应用程序设置,选择语言和输入, 编辑Google语音输入的设置, 选择下载离线语音识别, 在ALL选项卡中选择您的语言.

然后,用户可以选择任何所需的语言.下载完成后,他应断开与网络的连接,然后单击键盘的"麦克风"按钮.

它适用于我(android 4.1.2),然后语言识别开箱即用,无需重新启动.我现在可以指示终端仿真器的shell指令!在华硕的padfone 2上,离线速度比在线快两倍.

这些图像是根据cc by-sa 3.0获得许可的,其归属地址为stackoverflow.com/a/21329845/2987828; 因此,您可以将这些图像添加到此归属的任何位置.

(这是stackoverflow.com上所有图像和文本的标准政策)


Nik*_*rev 18

Android上的简单灵活的离线识别是由开源语音识别工具包CMUSphinx实现的.它完全脱机,快速和可配置工作它可以持续监听关键字,例如.

您可以在此处找到最新的代码和教程.

  • 嗨,CMUSphinx也适用于印度口音吗? (2认同)

Leo*_*sse 7

总之,我没有实施,而是解释.

谷歌没有为第三方应用程序提供离线语音识别功能.离线识别只能通过键盘访问.Ben Randall(utter的开发者!)在Android Police的一篇文章中解释了他的解决方法:

我已经实现了自己的键盘,并在Google Voice Typing和用户默认键盘之间切换,其中包含一个不可见的编辑文本字段和透明的Activity来获取输入.肮脏的黑客!

这是唯一的方法,因为离线语音输入只能由IME或系统应用程序触发(这是我的root hack).另一种类型的识别API ...没有触发它,只是因服务器错误而失败....在解决方法上浪费了很多工作!但至少我已准备好实施......

来自Utter!声称是第一个在果冻豆中使用离线语音识别的非IME应用程序

  • 我认为这就是他在最新更新之前所说的.根据你的引用:"Randall接着解释说Utter!现在使用SpeechRecognizer,它已被更新,允许开发人员在一系列应用程序中使用离线识别,而之前的离线语音输入代码Recognizerintent需要一个有效的IME令牌." (4认同)