项目涉及文字转语音的需求,用Android原生提供的TTS生成的语音太单调,机器声音太明显,故寻求第三方更好的支持,用科大讯飞的语音包收费,百度语音免费而且不限制调用次数,主页鲜明说永久免费的智能语音开放平台,故使用百度语音来支持。
1. 地址: http://yuyin.baidu.com/,登录网址百度语音开发者平台,创建应用(图下方声明免费使用和无限制)。
2. 建好应用之后就能得到AppId相关的信息。
3.因为只需要文字转语音的功能,下载sdk得到的DEMO是一个大杂烩,于是把文字转语音的功能单独扣出来自定义封一个DEMO,效果如下,当语音引擎初始化成功后,播放按钮会变成红色,点击就会将显示的文字读出来:
4. 代码集成首先将官网SDK的DEMO中jar包放到app的libs下,assets离线资源和jniLibs放到src/main下,离线声音模型便来自assets中的.dat文件,jnilibs不必多说,是需要的so库。
5. 将SythActivity和这个Activity涉及到相关的类都从demo中提出来,删繁就简,官方demo中的注释已经很好了,比如更换离线的男女声的设置,纯在线还是离在线融合(离线没有单独的),语速语调等等的设置,都给出了详尽的注释,只要换成自己项目在平台上的appId,appKey,secretKey, 接着初始化引擎()成功后,就能正常的播报文字转换的语音了,initialTts()是执行初始化的语句,成功的message通过handler捕捉,下面的代码在初始化成功后就会将按钮的状态从不可点击,变成可点击的状态,并且背景色变红:
/**
* 合成demo。含在线和离线,没有纯离线功能。
* 根据网络状况优先走在线,在线时访问服务器失败后转为离线。
*/
public class