WxBit 汉化版在周末悄悄发布一个里程碑更新,增加了“人工智能”分类,其中的百度语音识别、合成与唤醒,给 App Inventor 应用增加了嘴巴和耳朵。有别于“多媒体”分类中的语音合成与识别组件,百度语音交互组件不要求手机安装第三方语音识别应用与合成引擎,通用性更好。本站独有的语音交互组件,让我们轻松实现属于自己的语音助理。
人工智能组件
在开始介绍语音交互组件前,先要介绍自定义“应用包名(Package Name)”,在应用首屏(Screen1)的设计视图属性中设置。这个功能虽然已经上线有一段时间,但是应该很多同学没有注意,也没有用过。应用包名,在 App Inventor 中等同于应用ID,是应用的唯一标识,类似人的身份证号码。包名中只能包含数字、字母、点和下划线,点为分隔符,将包名分割为多个部分,每部分必须以字母开头。例如:com.wxbit.appinventor.aicompanion3,这是 ai伴侣的包名。_com.abc、com.123、.com.abc,这些都是错误格式的包名。
设置应用包名
如果不设置包名,系统生成APK的包名一般是这样:wxbit.ai_Q(32位唯一标识).项目名称,例如:wxbit.ai_QCCC18AB0D04C3B7CFD21E1D67A60AF0F.test。如果设置应用包名,系统默认会在前面加上“wxbit.”前缀。比如填写appinventor,则最后生成APK的包名就是:wxbit.appinventor。
如果需要使用离线合成和语音唤醒,正确设置应用包名是必须的步骤。
下面分别介绍百度语音交互3大组件:
一、百度语音识别
使用流式协议,能够听用户说,即时处理获得结果。不需要像Rest API,上传整个录音文件才获得结果。即时响应,能够给用户更好的使用体验。
百度语音识别功能概要
识别模式提供了多种配置,适用于不同的场景。
语音识别的场景模式
详细说明请参考文档:http://ai.baidu.com/docs#/ASR-Android-SDK/3557153c
二、百度语音合成
不同于Rest API下载完整个音频文件再播放,在线模式能够一边下载一边播放。百度语音合成不支持“纯离线”模式,首先都会尝试联网,如果选择的不是“纯在线模式”,联网超时后会使用内置的离线引擎合成语音。需要注意的是,第一次使用离线语音合成,一定需要联网下载授权文件。授权文件与 AppId、AppKey、SecretKey 和应用包名相关,详细配置本文最后再说明。
语音合成功能概要
纯在线模式:也就是不使用离线引擎,生成的APK文件较小,推荐使用。
WiFi在线,6秒超时:连接 WiFi 时使用在线合成,如果 6 秒还未连接成功和连接的不是 WiFi 网络,则使用离线合成。
WiFi与4G在线,6秒超时:连接 WiFi 和 4G 网络时使用在线合成,如果 6 秒还未连接成功或使用的是其他网络,则使用离线合成。
WiFi与4G在线,1.2秒超时:同上,连接超时时间为1.2秒。
WiFi在线,1.2秒超时:同“WiFi在线,6秒超时”,连接超时时间为1.2秒。
详细说明请参考文档:http://ai.baidu.com/docs#/TTS-Android-SDK/47c81acf
三、百度语音唤醒
此唤醒,并非点亮手机屏幕这个“唤醒”。而是应用听到用户说的特定关键词,会触发事件代码块。启用后台唤醒后,即使手机是锁屏状态,也一样可以触发事件代码块。后台唤醒功能,会加速电量消耗,请谨慎使用。
语音唤醒功能概要
系统内置支持10个关键词,分别是:小宝同学、拍照、播放、暂停、上一首、下一首、增大音量、减小音量、打开电灯、关闭电灯。如果需要自定义唤醒词,请到这里导出:http://ai.baidu.com/tech/speech/wake 。导出的唤醒词为 WakeUp.bin ,上传这个文件到项目的素材中即可。
在设计视图或逻辑视图中启用语音唤醒功能,当用户说到唤醒词,“被语音唤醒”事件会被触发,在这个代码块中完成对用户的回应。
因为语音唤醒,是离线识别,必须正确配置 AppId、AppKey、SecretKey 和应用包名。如果只是为了测试,可以留空以上三个参数,应用包名设置为:baidu 。生成APK的应用包名实际是 wxbit.baidu,使用了本文作者配置的百度语音应用。
下文介绍百度语音应用的创建,如果你已经有百度云服务帐号,直接进入控制台创建应用。
1、注册百度云帐号
打开 https://cloud.baidu.com,点击“管理控制台”,进入登录界面。如果没有百度帐号,请先注册一个,具体步骤这里不做赘述。注册完百度帐号,回到这里注册百度云帐号。
百度云注册
第一次登录百度云需要补充些信息,然后进入控制台。
百度云控制台
2、创建语音交互应用
从控制台进入“语音识别”创建应用,并选择“Android”,然后填写ai项目首屏设置的包名,加上“wxbit.”前缀。比如ai项目应用包名设置的是 com.appinventor.project,在这里应该填写:wxbit.com.appinventor.project 。
在百度云创建语音交互应用
3、获取 AppId、AppKey、SecretKey
查看应用详情
填写好应用包名与百度语音应用的参数,就可以使用百度语音组件啦。
这里有个使用百度语音组件实现的演示应用,供大家测试:语音交互功能演示.apk
语音交互功能演示
常见错误:
1、在调试助手中没问题,生成APK显示:错误-1:请正确配置Appld、AppKey 和 SecretKey
必须参考上面步骤创建百度语音应用,配置到组件中才能使用。
2、在调试助手中显示:错误: BaiduWP #WAKEUP_ ERROR: Wakeup engine has no license
调试助手使用的包名为:com.wxbit.appinventor.aicompanion3 或 edu.mit.appinventor.aicompanion3
需要参考上面步骤创建这2个包名的应用,才能在调试助手中调试语音唤醒功能
3、生成的APK显示:错误4004: App name unknown[(-3004)asr authentication failed[info:-3004]]
请检查确认应用的包名和百度语音控制台中的应用是否一致。
4、生成的APK显示:错误4004:App name unknown[(-3004)4: Open api request limit reached
需要在百度语音应用的控制台领取免费额度。
原文链接:App Inventor 语音交互技术,转载请注明来源!