上云无忧 > 文档中心 > 百度智能云离线语音合成 Android-SDK 简介
离线语音合成
百度智能云离线语音合成 Android-SDK 简介

文档简介:
概述: 本文档是百度语音开放平台Andriod SDK的用户指南,描述了在线合成,离线合成等相关接口的使用说明。 合成的策略是边下载边播放。区别于Rest Api一次性下载整个录音文件。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

概述

本文档是百度语音开放平台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库架构

共计4个架构目录:armeabi-v7a,arm64-v8a,x86,x86_64,每个架构下均有以下4个so库文件。

资源名称 资源大小
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-v7a,arm64-v8a,x86,x86_64 4个架构目录位于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.g
etPackageName() 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_uniq
ue":["ETTS_UNIQUE:4.9.0_c7fb03b"]} SynthesizerTool.getModelInfo("/path/to/bd_e
tts_common_text_txt_all_mand_eng_middle_big_v4.1.0_20211223.dat"); //{"data_type"
:"text","version":"40100","domain":"common","date":"20211223","language":"mand_e
ng","quality":"middle"} SynthesizerTool.getModelInfo("/path/to/bd_etts_navi_spee
ch_m15_mand_eng_high_am-style24k_v4.6.0_20210721.dat") //离线男声 {"data_type":"s
peech","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-sty
le24k_v4.6.0_20210721.dat") //离线女声 //{"data_type":"speech","version":"40600","d
omain":"navi","date":"20210721","language":"mand_eng","speaker":"f7","gender":"fema
le","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_n
avi_speech_c1_mand_eng_high_am-style24k_v4.6.0_20210721.dat") //离线度丫丫 //{"dat
a_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 下在线优先( 如果在线连接百度服务器失败或者超时4s,那么切换成离线合成), 其它网络状况离线合成。
  • MIX_MODE_HIGH_SPEED_SYNTHESIZE: WIFI 5G 4G 3G 下在线优先( 如果在线连接百度服务器失败或者超时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)报集团。

相似文档
  • DEMO 中已经集成了 SDK。您可以参考DEMO,集成SDK。 集成前,请先测通DEMO,了解调用原理。 如果您自己代码过于复杂,可以使用一个helloworld项目了解集成过程。
  • 简介: DEMO在SDK的基础上,封装了调用逻辑,您可以直接使用SDK,或者使用DEMO封装好SDK接口的类。也可以对比参考DEMO中对SDK的调用封装。 使用SDK方式的话,比较底层,开发者需要自行实现一部分逻辑。
  • 离线及在线选择: int initTts(TtsMode ttsMode); 初始化tts引擎,可以指定纯在线,离在线混合引擎,纯离线引擎。 TtsMode.ONLINE 纯在线。断网即不可使用。 TtsMode.MIX 离在线混合。 断网或者网络请求超时使用离线。 TtsMode.OFFLINE 纯离线。 任意网络状态都可以使用。
  • 简介: 本文档是百度离线语音合成iOS SDK的用户指南,描述了离线语音合成SDK相关接口的使用说明。 概念解释: 语音合成是实现人机语音交互,建立一个有听和讲能力的交互系统所必需的关键技术。随着语音技术的发展,百度自主研发了语音合成系统(TTS),功能是接收用户发送的文本,生成语音发送给用户。
  • 集成指南: 强烈建议用户首先运行SDK包中的Demo工程,Demo工程中详细说明了语音合成的使用方法,并提供了完整的示例。一般情况下,您只需参照demo工程即可完成所有的集成和配置工作。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部