集成百度语音合成的一些问题

最近项目要用到语音合成(TTS)的功能,目前国内只有两家:科大讯飞:科大讯飞开发者平台  和 百度:百度语音 。科大讯飞支持完全离线,但是需要付费(成本高),又因为百度虽然目前没有开放纯离线模式下的语音合成SDK,但是开放了离在线融合语音合成SDK,会自动判断当前网络环境,自动匹配使用离线还是在线合成引擎。简言之,就是根据网络的不同状态,实现离线条件下的语音合成。有了这个,何必去用科大的付费呢。这里顺便吐槽一下科大讯飞的官方demo,只能说:没有最渣,只有更渣,首先我们从人家还在坚持用Eclipse写的demo就可见一斑,那李志(逼格)也是没谁了。废话到此为止。如果想使用Android Studio版本的demo,可以看这里:科大讯飞android版本demo


关于使用百度语音所遇到的问题:运行官方demo在有网条件下可以正常使用,但是在离线条件下报错

error (-102) offline engine download license failure [(-5) appcode=8516840-licensePath=/data/data/com.baidu.tts.sample/files/baidu-tts_license]-utteranceld= 0

即:-102 离线授权下载License失败。具体可以参看官方的 错误码说明  。

看到这个问题,我们一般都会去 问答社区 寻找答案。在这里我对(errcode:-102)这个问题的解决总结如下:

首先分析可能产生该问题的原因:

1.appid 和apikey填写错误

2.包名绑定包名填写错误

3.设置的授权文件下载路径没有权限,或者应用没有被授权读写权限

4.第一次使用时需要联网操作,或者连接的网络不够稳定。

从接入指南我们可以知道,apikey 和 secretkey 是用于 在线语音合成的,如果在线语音正常,则说明这里没有什么问题。appid是用于离线语音合成的,

那就检查一下appid,确认无误后,然后看一下配置文件AndroidManifest.xml 所需要的权限是否添加,接着就去看一下开发者平台,你所创建的应用的管理包名是否填写,

且与配置文件的是否一致。最后在第一次使用时,一定要确认联网。完成上述步骤,即可避免或者解决-102问题。


最后来理一下正确的接入流程:

1.创建应用;

2.然后new project 或者 直接 import project 官方的demo,然后看着 接入指南 将所需要的权限先添加进去;

3.查看你创建的应用的appid等信息,并修改对应的参数信息;

点击“查看key”:

4.将你的项目的包名提交给开发者平台;

5.确认网络良好,然后.....

6.然后就没有然后啦....

欢迎指教,如果有什么问题,大家可以评论和我交流...




发布了23 篇原创文章 · 获赞 14 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/wangcheeng/article/details/53504079
今日推荐