资讯 社区 文档 控制台
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术
AR与VR
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
信息服务
智能园区

简介

概述

本文档是百度语音开放平台Andriod SDK的用户指南,描述了在线合成,离线合成等相关接口的使用说明。 合成的策略是边下载边播放。区别于Rest Api一次性下载整个录音文件。

纯离线语音合成SDK可直接在设备终端进行语音合成,首次使用需要联网,其余时间均可以使用离线合成,为您提供稳定一致、流畅自然的合成体验。

离线语音合成SDK需要申请SN。将SN填入SDK后,首次联网会自动下载授权文件。TtsMode.MIX 及TtsMode.OFFLINE的离线合成均需要授权文件没有过期。

兼容性

类别 兼容范围
系统 支持Android 2.3 以上版本 API LEVEL 9
机型 上市的android手机和平板。对其它android设备及订制系统不做官方支持
硬件要求 要求设备上有麦克风
网络 支持移动网络(包括2G等)、WIFI等网络环境
开发环境 建议使用最新版本Android Studio 进行开发

版本更新

日期 jar文件版本 更新内容
2022-11-29 com.baidu.tts_2.6.3.c2aaa9f_20220922113422.jar 1、提升SDK稳定性;
2、离线发音人听感调优
2022-03-30 com.baidu.tts_2.6.3.f684811_20220114193233.jar 1、修复离线发音badcase,采用先进端到端合成技术,音质、韵律、情感合成效果全面提升;
2、中英文本资源合并,中、英、粤语种切换无需重新初始化,使用更便捷
2021-10-19 com.baidu.tts_2.6.2.6a752b5_20211019163918.jar 新增对在离线混合模式下5G网络的支持,提升稳定性
2021-03-24 com.baidu.tts_2.6.2.2.20200629_44818d4.jar 优化离线合成引擎
2020-12-23 com.baidu.tts_2.6.2.2.20200629_44818d4.jar bug修复,提升稳定性
2020-07-21 com.baidu.tts_2.6.2.2.20200629_44818d4.jar 增加2个精品音库,调整合成字节数
2020-05-21 com.baidu.tts_2.6.1.109.20200424_be04a21.jar bug修复
2019-12-25 com.baidu.tts_2.6.1.103.20191014_618cb8c.jar 更新离线引擎及离线发音资源
2019-11-18 com.baidu.tts_2.5.1.103.20190806_a05bdd9.jar 修正32位机型授权时间
2019-08-21 com.baidu.tts_2.5.1.103.20190215_69ab312.jar 新增 TtsMode.OFFLINE 模式

NDK so库架构

共计5个架构目录:armeabi,armeabi-v7a,arm64-v8a,x86,x86_64,每个架构下均有以下5个so库文件。 如果为了节省安装包体积,可以只使用armeabi目录,性能损失微小。

资源名称 资源大小
libbd_etts.so 约4M
libBDSpeechDecoder_V1.so 约700k
libgnustl_shared.so 约900K

如果仅需要在线功能,请使用纯在线合成sdk

DEMO压缩包说明

DEMO压缩包下载即可运行,其中DEMO内已经附带了SDK的库。

  • com.baidu.tts_x.x.x.xxxxx_xxxxx.jar 位于 app/libs 目录下。
  • armeabi,armeabi-v7a,arm64-v8a,x86,x86_64 5个架构目录位于app\src\main\jniLibs 目录下

功能测试

AppId AppKey SecretKey 包名 序列号SN 5个信息必须完全正确后,SDK会自动下载鉴权文件。否则会有-102或-109错误。

可以在百度云网站上申请自己语音合成的应用后,会有appId、appKey、appSecret及android包名 4个鉴权信息, 修改app/src/main/assets/auth.properties 里的4个字段 , 并修改app/build.gradle里 defaultConfig.applicationId为包名:

修改app/src/main/assets/auth.properties 里的全部字段:

# 网页上应用的appId,申请纯离线SDK的必备信息
appId:160xxx99
# 网页上应用的appKey
appKey:qCGpxxxxqnnCwyDxxxxxxxx
# 网页上应用的secretKey
secretKey:Axxxxxxxr1dR0cxxxxxx
# 测试或正式购买的SN,随邮件一起提供
sn:9b45e272-7b2c7603-0051-00af-xxxxx
# 包名,这个值必须和app/build.gradle 里 defaultConfig.applicationId一致,即必须为context.getPackageName()
applicationId:com.baidu.tts.sample

包名需要填写在demo中的app/build.gradle文件中 。demo的包名填写在`applicationId "com.baidu.tts.sample"

如果您依旧不清楚5个信息如何填写,请查看demo中doc_integration_DOCUMENT/sn_fill.docx 图文教程

鉴权说明

离线合成功能需要一个正式授权文件。正式授权由SDK内部管理,无对外接口。正式授权文件在第一次在线联网调用initTts方法时,SDK自动下载正式授权文件。正式授权文件有效期为具体购买的时长。

AppId AppKey SecretKey 包名 序列号SN 5个信息必须完全正确后,SDK会自动下载鉴权文件。否则会有-102错误。

  1. 每个序列号激活时sdk自动下载鉴权信息,鉴权信息中含有过期时间。如果过期后这个sn对应的鉴权失败,离线合成不可使用。
  2. 如果授权文件没有过期,填入新的SN,授权文件会失效,SDK会自动更新授权文件。
  3. 同一台设备,如果app卸载后,授权信息会一并删除。这时重新安装输入之前的SN,新下载的授权文件过期时间不变,即同sn绑定。

举例说明:

SN1 是 2019年3月1号申请的,有效期截止日期在2020年3月1号。

SN2 是 2019年3月1号申请的,有效期截止日期在2021年4月1号。

  • 有一个APP在2019年4月15号首次使用SN1填入SDK,如果激活成功,那么这个设备的授权文件在2020年3月1号过期(SN1的有效期截止日期)。
  • 如果App没有卸载过,在2020年2月1日填入SN2到SDK,则原授权文件失效,会使用SN2下载新的授权文件,新的授权文件过期时间为2021年4月1号(SN2的有效期截止日期)。
  • 如果在2019年3月17号这个app有卸载,APP再次安装时,SDK会根据SN1下载授权文件,过期时间依旧是2020年3月1号。
  • 如果卸载后重新安装的APP中填入的是SN2,SDK则会根据SN2下载授权文件,新的授权文件过期时间为2021年4月1号过期(SN2的有效期截止日期)。

鉴权注意点

添加SN参数, 必须定义在调用auth方法之前

 mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_AUTH_SN, "YOUR_SN");

版本库信息

SynthesizerTool.getEngineInfo(); 
//:{"version":"40900","domain":["navi","common","user_custom"],"language":["chn","eng"],"quality":["high","middle"],"etts_unique":["ETTS_UNIQUE:4.9.0_c7fb03b"]}
SynthesizerTool.getModelInfo("/path/to/bd_etts_common_text_txt_all_mand_eng_middle_big_v4.1.0_20211223.dat");
//{"data_type":"text","version":"40100","domain":"common","date":"20211223","language":"mand_eng","quality":"middle"}
SynthesizerTool.getModelInfo("/path/to/bd_etts_navi_speech_m15_mand_eng_high_am-style24k_v4.6.0_20210721.dat") //离线男声
{"data_type":"speech","version":"40600","domain":"navi","date":"20210721","language":"mand_eng","speaker":"m15","gender":"male","quality":"high","authorize":"69612fabc71dfb5e"}
SynthesizerTool.getModelInfo("/path/to/bd_etts_navi_speech_f7_mand_eng_high_am-style24k_v4.6.0_20210721.dat") //离线女声
//{"data_type":"speech","version":"40600","domain":"navi","date":"20210721","language":"mand_eng","speaker":"f7","gender":"female","quality":"high","authorize":"9e65a1cdffe67625"}
SynthesizerTool.getModelInfo("/path/to/bd_etts_navi_speech_yy_mand_eng_high_am-style24k_v4.6.0_20210721.dat") //离线度逍遥
//{"data_type":"speech","version":"40600","domain":"navi","date":"20210721","language":"mand_eng","speaker":"yy","gender":"male","quality":"high","authorize":"f40220e7f646448b"}
SynthesizerTool.getModelInfo("/path/to/bd_etts_navi_speech_c1_mand_eng_high_am-style24k_v4.6.0_20210721.dat") //离线度丫丫
//{"data_type":"speech","version":"40600","domain":"navi","date":"20210721","language":"mand_eng","speaker":"c1","gender":"female","quality":"high","authorize":"18f579991a0919f6"}

语言

目前只有中英文混合这一种语言,优先中文发音。 示例: ” I bought 3 books” 发音 “three”; “我们买了 3 books” 发音“三”

标注发音

该功能适用于多音字或特殊名词的发音设置,如: 重(chong2)报集团, “重”发音 chong第二声

在线和离线判别(仅MIX模式,使用纯离线可忽略此部分)

以6s超时的MIX_MODE_DEFAULT和MIX_MODE_HIGH_SPEED_NETWORK为例

离在线混合模式: WIFI下强制尝试在线优先。其它网络情况可以设置是否为在线优先(如果连接失败,那么切换成离线合成)或者直接离线合成。

  • MIX_MODE_DEFAULT: WIFI下在线优先(连接百度服务器失败或者超时1.2s,那么切换成离线合成), 其它网络状况下离线合成。
  • MIX_MODE_HIGH_SPEED_SYNTHESIZE_WIFI: WIFI下在线优先(连接百度服务器失败或者超时1.2s,那么切换成离线合成), 其它网络状况下离线合成。
  • MIX_MODE_HIGH_SPEED_NETWORK: WIFI 5G 4G 3G 2G下在线优先( 如果在线连接百度服务器失败或者超时4s,那么切换成离线合成), 其它网络状况离线合成。
  • MIX_MODE_HIGH_SPEED_SYNTHESIZE: WIFI 5G 4G 3G 2G下在线优先( 如果在线连接百度服务器失败或者超时1.2s,那么切换成离线合成), 其它网络状况离线合成。

上文中的超时1.2s,也可以设置PARAM_MIX_MODE_TIMEOUT 为3s或者2s。

建议使用场景: 在小说阅读、导航播报等场景中,若存在网络信号不稳定(频繁断网)的情况,您可以使用百度提供的纯离线模式。若您需要在移动网络下不想消耗流量,或是对响应速度有较强需求,请选择纯离线模式。我们推荐您使用 MIX_MODE_HIGH_SPEED_NETWORK模式;

发音

离线支持16种发音

离线合成SDK默认自带4个普通音库资源文件,精品音库资源文件需单独下载。2.6.2及之前版本SDK暂不支持兼容当前版本资源文件,需配合旧版本资源文件使用。

SDK默认自带离线资源文件

资源文件 具体文件名
m15 离线男声(度小宇) bd_etts_common_speech_duxiaoyu_mand_eng_high_am-style24k_v4.6.0_20210721_20220822104311.dat
f7 离线女声(度小美) bd_etts_navi_speech_f7_mand_eng_high_am-style24k_v4.6.0_20210721.dat
yy 离线度逍遥 bd_etts_common_speech_duxiaoyao_mand_eng_high_am-style24k_v4.6.0_20210721_20220822104311.dat
c1 离线度丫丫 bd_etts_common_speech_duyaya_mand_eng_high_am-style24k_v4.6.0_20210721_20220822104311.dat
中文离线文本模型 bd_etts_common_text_txt_all_mand_eng_middle_big_v4.1.0_20220720.dat

需要单独下载的精品音库资源文件

资源文件 具体文件名
f4 离线度小娇 bd_etts_common_speech_duxiaojiao_mand_eng_high_am-tac-csubgan16k_v4.9.0_20221010_20221024180557.dat
c3 离线度米朵 bd_etts_common_speech_dumiduo_mand_eng_high_am-style24k_v4.6.0_20210721_20220822104311.dat
wyg 离线度博文 bd_etts_common_speech_dubowen_mand_eng_high_am-style24k_v4.6.0_20210721_20220822104311.dat
c4 离线度小童 bd_etts_common_speech_c4_mand_eng_high_am-style24k_v4.6.0_20210721.dat
f8 离线度小萌 bd_etts_navi_speech_f8_mand_eng_high_am-style24k_v4.6.0_20210721.dat
f12dt 度小乔 bd_etts_common_speech_duxiaoqiao_mand_eng_high_am-style24k_v4.6.0_20210721_20220822104311.dat
f17 度小鹿 bd_etts_common_speech_duxiaolu_mand_eng_high_am-style24k_v4.6.0_20210721_20220822104311.dat
f10tw 度小台 bd_etts_common_speech_duxiaotai_mand_eng_high_am-style24k_v4.6.0_20210721_20220822104311.dat
m8 度小贤 bd_etts_navi_speech_m8_mand_eng_high_am-style24k_v4.6.0_20210721.dat
gezi 度小雯 bd_etts_common_speech_duxiaowen_mand_eng_high_am-style24k_v4.6.0_20210721_20220822104311.dat
粤语离线文本模型 bd_etts_common_text_txt_all_cant_eng_middle_big_v4.5.0_20211222.dat
f13can 度小粤 bd_etts_navi_speech_f13can_cant_eng_high_am-style24k_v4.6.0_20210721.dat
英文离线文本模型 bd_etts_common_text_txt_all_mand_eng_middle_big_v4.1.0_20220720.dat(同中文)
fnat 度小译 bd_etts_common_speech_fnat_mand_eng_high_am-style24k_v4.9.0_20211130.dat

在线时支持11种发音

普通音库:普通女声 普通男声 情感男声<度逍遥> 情感儿童声<度丫丫>

精品音库: 度逍遥-磁性男声 度博文-情感男声 度小童-活泼男童 度小鹿-甜美女声 度小娇-情感女声 度米朵-可爱女童 度小萌-可爱女童

具体效果可以在http://ai.baidu.com/tech/speech/tts_online上测试

注意

  1. 在线合成的声音和离线合成的声音会有略微不同。在线合成的效果好。
  2. 在极端网络的情况下,可能在线合成与离线合成频繁切换。

合成效果 通过对PARAM_SPEAKER(发音人)、PARAM_PITCH(音调)、PARAM_VOLUME(音量)和PARAM_SPEED(语速)参数的调整,可以获得不同的发声效果,更好满足您业务场景中的播报需求。 如音调越高,声音听起来会显得越年轻。

合成和播放

synthesize 方法直接合成。不播放。 开发者可以通过onSynthesizeDataArrived 获取音频数据,自行处理。 speak 方法先合成为音频,之后立即播放。等同调用 synthesize方法,再调用系统播放器。

在SDK内部中有队列,可以不断调用synthesize或者speak方法,将合成的文本添加到队列中。

其它事项

  1. 每次合成的文本不超过120 GBK字节,即60个汉字或者字母数字。
  2. 合成的耗时同文本长度成正比。对合成速度敏感的话,请自行按照标点切分成短句。
  3. 多音字可以通过标注自行定义发音。格式如:重(chong2)报集团。
上一篇
HTTP SDK
下一篇
集成指南