资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

常见问题

播放多段长文本

建议使用sdk内部的队列缓存。 int speak(String text, String utteranceId); 如一开始一次性调用10次speak方法,收到合成结束的onSynthesizeFinish回调后(可以收到utteranceId参数),再加入1句新的。保持sdk内部队列中一直有10个句子。 SDK内部会按照队列次序不断合成。自动按照次序播放

控制播放暂停及自定义播放

SDK是无论何种场景都会一直播放。比如有电话接入,需要暂停播放。用户需要自行实现,收到系统电话接入的事件调用pause方法, 结束后调用resume方法。

如果觉得SDK的播放方式您不满意,可以调用synthesize() 方法仅合成不播放。通过onSynthesizeDataArrived 获取音频数据,自行处理播放。

高亮当前在读的文字

onSpeechProgressChanged()根据播放音频的时长百分比回调进度,由于每个字的发音不是等长的,和实际读的文字会有误差。当一次合成的文件较长时,误差尤为明显。

播放过程中切换发音人

无论是在线还是离线发音人, 均要求在引擎空闲时切换。 SDK内部有合成队列和播放队列。其中合成队列独立,调用的句子在合成队列结束后加入播放队列。

引擎空闲是指合成队列为空,即合成全部完成。 即onSynthesizeFinish中,收到的utteranceId为最后一个。utteranceId参数是speak或synthesize方法的第二个参数。

也可以随时调用stop方式,比如最近的一句话说完时,清空播放队列和合成队列,达到引擎空闲的状态。

具体请参见demo的SwitchSpeakerListener类。

常见错误码及解决方案

错误码 含义 可能原因 自查指南 解决办法
-102 离线授权下载license失败 1.网络不佳
2.授权码额度耗尽
3.SN已经绑定其他设备
导致下载license失败
1. 检查离线联网授权时的网络环境;
2.确认SN序列号是否还有额度
3.确认SN之前是否绑定过其他设备(刷机等更改设备信息的操作都是导致下载license失败)
1. 更换稳定的网络环境;
2. 补充SN序列号额度
3. 如绑定过其他设备更换新的授权SN
-108 离线合成引擎初始化失败 loadmodel的资源文件 离线音库文件 没加载 1.确认音库文件是否下载;2.是否在指定位置加载;3. 判断模型文件是否有效 点击 1.如加载位置没有对应的文本和音库文件,手动复制文件到指定位置;2.可以尝试删除应用,重新安装测试
同上 loadmodel时合成引擎不空闲 sdk只支持同一语种的不同发音人使用loadModel方法切换,例如,度小美切换度丫丫。如果是中文切英文或者粤语,需要反初始化后再初始化 如需要切换不同的文本资源,请先调用release方法,再次执行新的文本资源初始化
同上 其他 初始化添加LoggerProxy.printable(true);保存启动app到报错的完整日志 提供日志,百度侧进一步判断
-119 SN序列号不合法 SN序列号不在有效期内 核对绑定的SN序列号 更换合法SN序列号
同上 SN序列号已被绑定 需要确认SN序列号是否已经绑定其他设备,或者设备刷机等导致cuid变更操作 反馈给百度侧,进一步判断
鉴权未通过 鉴权信息错误 需要确认SN序列号外的其他鉴权信息 填写正确的鉴权信息,注意空格
-204 离线合成初始化失败 设备的系统时间超出license时效 确认设备的系统时间是否正常 校验系统时间
同上 license 超出有效期 确认SN序列号在有效期内 更换有效期内授权SN