前段时间写了一个关于百度语音唤醒文章,最近有做了一个讯飞语音的应用,在这里把学习的资料整理一下。
唤醒的整个过程如下:
(图源自讯飞官网)
讯飞的语音唤醒功能实现起来挺方便的(相比百度,百度语音Android端的语音唤醒是基于service实现的)百度语音唤醒识别效果对于不建议使用的唤醒词识别较差,而讯飞相对较容易。并且讯飞语音唤醒可以自己设定很多参数,来提高识别率,百度提供给用户的设置接口很少。俗话说“鱼和熊掌不可兼得”,一句话总结这两个平台就是——百度免费,讯飞收费。
大家可以根据自己项目的实际需求作抉择。
下面我们就言归正传:
我们先来讲一讲讯飞语音唤醒的参数设置。下面是讯飞官方文档的内容
唤醒业务类型,分为如下几种:
唤醒:wakeup;(单唤醒词,多唤醒词,或特定人唤醒)
注册:enroll;(特定人唤醒注册,又称为“训练”,用于特定人唤醒时,注册用户唤醒词)
唤醒识别:oneshot;
唤醒门限值:
格式:id:门限值;* (*代表可多个),根据资源携带的唤醒词个数按照“id:门限;id:门限” 的格式传入。门限值越高,则要求匹配度越高,才能唤醒。
是否必须设置:否
默认值:0
值范围:[-150, 150]
持续唤醒:
在持续唤醒时,唤醒一次后,当前会话依然继续,录音还在继续,当有匹配的唤醒 时,会返回结果;否则,唤醒一次后,当前会话已结束,录音也结束,不会再监听。
此参数对唤醒识别不起作用,见IVW_SST。
是否必须设置:否
默认值:0
值范围:{null, 0, 1}
唤醒资源路径:
唤醒需要使用本地资源,通过此参数设置本地资源所在的路径。多个资源间,以英文分号”;”分隔。 与IVW_ENROLL_RES_PATH一样,用于使用的资源,需要通过 ResourceUtil.generateResourcePath(Context, com.iflytek.cloud.util.ResourceUtil.RESOURCE_TYPE, java.lang.String)生成标准的资源路径值。 请参考 ResourceUtil.generateResourcePath(Context, com.iflytek.cloud.util.ResourceUtil.RESOURCE_TYPE, java.lang.String)。
是否必须设置:是(在非注册时)
默认值:null
值范围:有效的资源文件路径
引擎类型:
设置使用的引擎类型:在线、离线、混合。在申请了离线合成资源和权限, 或使用语记方式时,可以选择使用本地或在线的方式进行语音服务。使用在线模式(又称云端模式)时,需要使用网络,产生一定流量,但有更好的识别 或合成的效果,如更高的识别匹配度,更多的发音人等。使用离线模式(又称本地模式)时,不需要使用网络,且识别和合成的速度更快,但同 时要求使用对应的离线资源或安装“语记”(安卓或iOS平台)。在混合模式时,可以通过混合类型、 云端超时、本地置信门限 使用对应的策略,提高识别准确度与成功率。详情参见前面的几个参数说明。
在离线或混合模式下,需要设置对应的资源。请参考
合成资源路径:ResourceUtil.TTS_RES_PATH;
识别资源路径:ResourceUtil.ASR_RES_PATH;
唤醒资源路径:IVW_RES_PATH;
关于离线资源的其他介绍,参考ResourceUtil类的说明。
是否必须设置:否
默认值:”cloud”
值范围:{ “cloud”, “local”,”mixed” }
讯飞 语音唤醒实现起来相当简单,具体步骤如下
- 申请账号
首先需要去讯飞开放平台申请一个账号,之后注册一个自己的应用,这里我们以Android端为例来说明。对于第一次使用讯飞语音的人,首先先要创建一个应用
- 开通服务
大家可以根据自己的实际需求开通相应的服务。