选定解决方案
先抛结果:选中的是第三方集成方案:科大讯飞
公司项目需求分析
语音播报需求
1.产品加入了RFID,通过RFID唯一标识登录到数据库。 2.通过蓝牙设备扫描到RFID,检索数据库得到产品的名称 3.然后通过android系统语音播报当前产品的名称。实现产品的快速分拣。 4.其他需求:要求能控制语速播放,需求随时中止或者开始一段短少文字播放。
项目特点
需要语音合成,又称文字转语音转换(Text to Speech,TTS)技术,
解决的主要问题是如何将文字信息转化为可听的声音信息(即音频数据)。
播放的语音其他很短不超过20个字。
产品的名称是有限的,预存到系统了的。不像是小说文字播放是任意。这样选择解决方案好选了。
研究
目前Android原生的SpeechRecognizer做法应该有两种
- 默认调用原生SpeechRecognizer,并稍作修改
- 调用第三方SDK集成进项目:目前稍微稳定的:科大讯飞语音,百度语音
原生的TTS每台手机情况不一样,需要安装语音引擎,可控配置不多,百度语音公司没人使用过。 最后选定了科大讯飞。
方案实现思路:
选定科大讯飞之后,结合使用场景,及讯飞收费情况,会有多个android机需要播放, 目前架构是:
后端
在后端掊口引入实现讯飞SDK,使用过的语音(文字)缓存下来。下次同时的产品名出现,就不需要再走讯飞掊口。因为我们的产品是有限个数,然后同名的产品也会很多重复,缓存之后省下请求数。
安卓前端
app这边不直接调用讯飞,走后端api,得到语音文件。同样的重复的文字语音也要缓存在手机,减少api请求。省流量。减少api压力。
最后上讯飞官方文档:www.xfyun.cn/services/on…