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

语音合成 Android SDK

1. 文档说明

文档名称 语音离线合成集成文档
所属平台 Android
提交日期 2025-11-11
概述 本文档是百度语音开放平台Andriod SDK的用户指南,描述了在线合成,离线合成等相关接口的使用说明。 合成的策略是边下载边播放,区别于Rest Api一次性下载整个录音文件。
离线语音合成SDK包含基础音库,在线语音合成SDK无需音库资源即可调用,请您前往语音合成SDK资源按需下载;若您在2025年11月27日及之前购买序列号或申请SN(序列号),请点击下载往期精品音库资源
离线语音合成SDK需要申请序列号,将序列号填入SDK后,首次联网会自动下载授权文件。TtsMode.MIX 及TtsMode.OFFLINE的离线合成均需要授权文件没有过期。

2. 版本说明

名称 版本号
语音合成 6.2.7
系统支持 android 5.1+
架构支持 armeabi-v7a,arm64-v8a,x86,x86_64

2.1 版本升级改动点说明:

  • 提升SDK稳定性
  • 离线发音人听感调优
  • 支持更多授权方式

3. SDK说明

文件名称 版本号 MD5值 说明
com.baidu.aipd.tts_6.2.7.53b015e_20250704180845.aar 6.2.7.53b015e 离线:1c8c04f8049e83c7253c190a4bde47fd
在线:c70520d17b48c028c887806489856a47
离线合成SDK约8.3M

4. Demo运行

百度云控制台下载Demo,下载完成后解压demo,并用android stdio打开该项目 安卓_1.png

4.1 配置包名和签名

从百度云控制台下载Demo之后,需要在build.gradle中配置好包名,且包名和控制台应用包名一致。 安卓_2.png

4.2 修改鉴权

4.2.1 离线SDK鉴权

若AppId、包名、序列号SN 3个信息完全正确,SDK将自动下载鉴权文件,否则会有-102或-109错误。

在百度云网站上申请自己的语音合成的应用后,能够获取AppId、AppKey、AppSecret及Android包名 4个鉴权信息 , 序列号SN申请的具体流程参考语音技术 (baidu.com)。 申请成功后在 MainActivity 中的 setOfflineParam 方法处填写 AppId 和 SN: 安卓_3.png

4.2.2 在线SDK鉴权

在线sdk分为4种激活方式,实际使用种选择其中一种方式进行激活,4种激活方法详细描述如下:

激活方式 说明
Appkey SecretKey激活 在百度云网站申请自己的语音合成应用后,会有appKey、appSecret鉴权信息,使用该方法进行在线鉴权,每次启动app需激活一次,不退出app永久有效
永久iamKey激活 需在官网申请的永久iamKey,使用该方法进行在线鉴权,每次启动app需激活一次,不退出app永久有效
accessToken激活 需在使用appkey和secretKey获取的access_token,使用access_token进行授权,该token存在时限,时间到期后需要从新获取新的token从新授权
临时iamKey激活 与accessToken类似,需获取临时iamKey,该key存在时限,时间到期后需要从新获取新的key从新授权

1. 临时accessToken和临时iam key激活方式:

accessToken和临时iamKey为相同接口,接口会随时间失效,客户需要在callback中创建http请求获取到对应token返回给sdk,sdk会在过期前3分钟通过callback重新向客户端获取最新token。

accessToken获取地址:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu

iamKey获取地址:https://cloud.baidu.com/doc/AI_REFERENCE/s/Hm5us339w

安卓_8.png

  • 将accessToken或iamKey 还有过期时间返回给sdk

安卓_9.png

  • 将callback传递到sdk中

安卓_10.png

2. 永久iamKey激活方式:

“永久iamKey激活”方式细节如下:

  • 将官网申请的永久iamKey放到项目中 安卓_6.png
  • 将iamKey传入接口,此步骤需要使用AipeSpeechSynthesizer类,不能使用SpeechSynthesizer进行设置 安卓_7.png

5. SDK集成

TTS SDK在线版本为com.baidu.aipd.tts_6.2.7.53b015e_20250704180845.aar 库,离线版本为com.baidu.tts_6.2.7.53b015e_20250704180845.aar

将app/libs/com.baidu.aipd.tts_6.2.7.fb21735_20250613180318.aar复制到您的项目的同名目录中,确认在build.gradle文件中引入。 安卓_11.png

build.gradle 文件及包名确认

  1. 根目录下build.gradle确认下gradle的版本。
  2. app/build.gradle 确认下 applicationId 包名是否与官网申请应用时相一致(离线功能需要)。 demo的包名是"com.baidu.tts.sample"。 安卓_12.png

DEMO压缩包说明

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

com.baidu.aipd.tts_6.2.7.53b015e_20250704180845.aar 位于 app/libs 目录下。

6. 授权文件、离线资源文件

请选择激活方式(离线、iamKey、accessToken),并将百度云控制台创建应用时获取的语音(APPID) SN、APPKEY/SECRET KEY 、accessToken或iamKey填写到项目 并填写包名。

离线资源文件--发音人(支持16个不同发音人)

离线合成SDK默认自带4个普通音库资源文件,精品音库资源文件需单独下载。若您在2025年11月27日之前购买或申请序列号,请点击下载往期音库资源文件:https://platform-new.cdn.bcebos.com/sdk/tts/Quality_Speaker_202211.zip

SDK默认自带离线资源文件

资源文件 具体文件名(支持新序列号) 具体文件名(支持旧序列号)
m15 离线男声(度小宇) bd_etts_common_speech_duxiaoyu_mand_eng_high_am-tac-csubgan16k_v4.9.0_20240918_20251031153737.dat bd_etts_common_speech_duxiaoyu_mand_eng_high_am-style24k_v4.6.0_20210721_20220822104311.dat
f7 离线女声(度小美) bd_etts_common_speech_duxiaomei_mand_eng_high_am-tac-csubgan16k_v4.9.0_20240918_20251031153737.dat bd_etts_navi_speech_duxiaomei_mand_eng_high_am-style24k_v4.6.0_20210721.dat
yy 离线度逍遥 bd_etts_common_speech_duxiaoyao_mand_eng_high_am-tac-csubgan16k_v4.9.0_20240918_20240919190343.dat 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-tac-csubgan16k_v4.9.0_20220419_20251031153737.dat 与新序列号相同
中文离线文本模型 bd_etts_common_text_txt_all_mand_eng_middle_big_v6.0.0_20240731.dat 与新序列号相同

注:2025年11月28日及以后控制台申请与购买的序列号仅支持4.9及以上版本。为保证使用新旧序列号的用户均可正常使用,SDK基础音库同时包含4.6音库与4.9音库,按文档配置即可正常使用。

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

资源文件 具体文件名
f4 离线度小娇 bd_etts_common_speech_duxiaojiao_mand_eng_high_am-tac-csubgan16k_v4.9.0_20240918_20251031153737.dat
c3 离线度米朵 bd_etts_common_speech_dumiduo_mand_eng_high_am-tac-csubgan16k_v4.9.0_20220419_20251031153737.dat
wyg 离线度博文 bd_etts_common_speech_dubowen_mand_eng_high_am-tac-csubgan16k_v4.9.0_20240918_20251031153737.dat
c4 离线度小童 bd_etts_common_speech_duxiaotong_mand_eng_high_am-tac-csubgan16k_v4.9.0_20251028_20251031153737.dat
f8 离线度小萌 bd_etts_common_speech_duxiaomeng_mand_eng_high_am-tac-csubgan16k_v4.9.0_20240918_20251031153737.dat
f12dt 度小乔 bd_etts_common_speech_duxiaoqiao_mand_eng_high_am-tac-csubgan16k_v4.9.0_20240918_20251031153737.dat
f17 度小鹿 bd_etts_common_speech_duxiaolu_mand_eng_high_am-tac-csubgan16k_v4.9.0_20240918_20251031153737.dat
f10tw 度小台 bd_etts_common_speech_duxiaotai_mand_eng_high_am-tac-csubgan16k_v4.9.0_20251028_20251031153737.dat
m8 度小贤 bd_etts_common_speech_duxiaoxian_mand_eng_high_am-tac-csubgan16k_v4.9.0_20251028_20251031153737.dat
gezi 度小雯 bd_etts_common_speech_duxiaowen_mand_eng_high_am-tac-csubgan16k_v4.9.0_20230927_20251031153737.dat
粤语离线文本模型 bd_etts_common_text_txt_all_cant_eng_middle_big_v6.0.0_20220916.dat
f13can 度小粤 bd_etts_common_speech_duxiaoyue_cant_eng_high_am-tac-csubgan16k_v4.9.0_20220419_20251031153737.dat
英文离线文本模型 bd_etts_common_text_txt_all_mand_eng_middle_big_v6.0.0_20240731.dat(同中文)
fnat 度小译 bd_etts_common_speech_duxiaoyi_mand_eng_high_am-tac-csubgan16k_v4.9.0_20251028_20251031153737.dat

往期精品音库资源文件

资源文件 具体文件名
f4 离线度小娇 bd_etts_common_speech_f4_mand_eng_high_am-style24k_v4.6.0_20210721.dat
c3 离线度米朵 bd_etts_navi_speech_c3_mand_eng_high_am-style24k_v4.6.0_20210721.dat
wyg 离线度博文 bd_etts_navi_speech_wyg_mand_eng_high_am-style24k_v4.6.0_20210721.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_navi_speech_f12dt_mand_eng_high_am-style24k_v4.6.0_20210721.dat
f17 度小鹿 bd_etts_navi_speech_f17_mand_eng_high_am-style24k_v4.6.0_20210721.dat
f10tw 度小台 bd_etts_navi_speech_f10tw_mand_eng_high_am-style24k_v4.6.0_20210721.dat
m8 度小贤 bd_etts_navi_speech_m8_mand_eng_high_am-style24k_v4.6.0_20210721.dat
gezi 度小雯 bd_etts_navi_speech_gezi_mand_eng_high_am-style24k_v4.6.0_20210721.dat
粤语离线文本模型 bd_etts_common_text_txt_all_cant_eng_middle_big_v6.0.0_20220916.da
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_v6.0.0_20240731.dat(同中文)
fnat 度小译 bd_etts_common_speech_fnat_mand_eng_high_am-style24k_v4.9.0_20211130.dat

在线时支持11种发音

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

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

具体效果可以在在线合成体验窗口上测试。

7. 语音合成相关接口

7.1 初始化初接口

获取 AipeSpeechSynthesizer实例
AipeSpeechSynthesizer mSpeechSynthesizer = new AipeSpeechSynthesizer(context)

设置合成结果的回调

如合成成功后,SDK会调用用户设置的SpeechSynthesizerListener 里的回调方法

mSpeechSynthesizer.setSpeechSynthesizerListener(listener); //listener是SpeechSynthesizerListener 的实现类,需要实现您自己的业务逻辑。SDK合成后会对这个类的方法进行回调。

设置 激活参数

在语音官网或者百度云网站上申请语音合成的应用后,会有appId、appKey、appSecret及android包名 4个鉴权信息,可选择离线激活、在线激活、正式iamKey激活和临时tocken激活4种激活方式

        /* 离线激活方式 */
        // 设置离线需要的app_id,在开放平台注册app时获取
        speechSynthesizer.setParam(SpeechSynthesizer.PARAM_APP_ID, "填入您的appid");
        // 设置离线需要的认证参数,产品序列号SN
        speechSynthesizer.setParam(SpeechSynthesizer.PARAM_AUTH_SN, "输入您的sn");
        /* 临时token激活方法 */
        // 设置在线需要的临时token callback
         speechSynthesizer.setParam(new TokenCallback() {
            @Override
            public TemporaryToken getToken() {
                .../*通过网络请求获取临时accessTocken或临时iamKey*/
                return "临时accessTocken或临时iamKey";
            }
        });
        
        /* 永久iam key激活方式 */
        // 设置在线需要的正式iam key 
         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_ACCESS_TOKEN, "输入您的永久iam key");
         

如果需要使用离线合成功能的话,请在申请的语音合成的应用填写您自己的包名,若使用demo的包名是“com.baidu.tts.sample", 定义在build.gradle中。

合成参数

在SpeechSynthesizer类中setParam 方法中使用的参数及值。 填入的值如果不在范围内,相当于没有填写使用默认值。

参数名 类型,值 在线/离线生效 常用程度 解释
PARAM_SPEAKER(基础发音人) 选项 在线 常用 仅在线生效,在线的发音
~ "0"(默认) ~ ~ 度小美(普通女声)
~ "1" ~ ~ 度小宇(成熟男声)
~ "3" ~ ~ 度逍遥(磁性男声)
~ "4" ~ ~ 度丫丫(可爱女童)
PARAM_SPEAKER (精品发音人) "106" ~ ~ 度博文(情感男声)
~ "110" ~ ~ 度小童(情感儿童声)
~ "111" ~ ~ 度小萌(情感女声)
~ "103" ~ ~ 度米朵(情感儿童声)
~ "5" ~ ~ 度小娇(情感女声)
~ "5003" ~ ~ 精品度逍遥(磁性男声)
~ "5118" ~ ~ 度小鹿(甜美女声)
PARAM_VOLUME String, 默认"5" 全部 常用 在线及离线合成的音量 。范围["0" - "15"], 不支持小数。 "0" 最轻,"15" 最响(取值为0时为音量最小值,并非为无声)
PARAM_SPEED String, 默认"5" 全部 常用 在线及离线合成的语速 。范围["0" - "15"], 不支持小数。 "0" 最慢,"15" 最快(如需更高语速可提交需求工单或联系商务同学申请)
PARAM_PITCH String, 默认"5" 全部 常用 在线及离线合成的语调 。范围["0" - "15"], 不支持小数。 "0" 最低沉, "15" 最尖
PARAM_MIX_MODE 选项 全部 常用 控制何种网络状况切换到离线。设置initTts(SpeechSynthesizer.PARAM_MIX_MODE)后,该参数生效。
~ MIX_MODE_DEFAULT(默认) ~ ~ WIFI 使用在线合成,非WIFI使用离线合成
~ MIX_MODE_HIGH_SPEED_NETWORK ~ ~ WIFI,5G,4G 使用在线合成,其他使用离线合成
~ MIX_MODE_HIGH_SPEED_SYNTHESIZE ~ ~ 同MIX_MODE_HIGH_SPEED_NETWORK。但是连接百度服务器超时1.2s后,自动切换离线合成引擎
~ MIX_MODE_HIGH_SPEED_SYNTHESIZE_WIFI ~ ~ 同 MIX_MODE_DEFAULT。 但是连接百度服务器超时1.2s后,自动切换离线合成引擎
PARAM_MIX_MODE_TIMEOUT
(MIX模式下生效)
选项 离在线混合模式 不常用 离在线模式,强制在线优先。在线请求后超时xx秒后,转为离线合成。
PARAM_TTS_TEXT_MODEL_FILE String , 文件路径 离线 常用 文本模型文件路径,即bd_etts_text.dat所在的路径。
PARAM_TTS_SPEECH_MODEL_FILE String , 文件路径 离线 常用 声学模型文件路径。即"bd_etts_speech_female.dat“所在的路径。需要男声,请使用bd_etts_speech_male.dat。
PARAM_AUDIO_ENCODE 选项 在线 基本不用 不使用改参数即可。SDK与服务器音频传输格式,与 PARAMAUDIO_RATE参数一起使用。可选值为SpeechSynthesizer.AUDIO_ENCODE*, 其中SpeechSynthesizer.AUDIO_ENCODE_PCM为不压缩
PARAM_AUDIO_RATE 选项 在线 基本不用 不使用改参数即可。SDK与服务器音频传输格式,与 PARAMAUDIO_ENCODE参数一起使用。可选值为SpeechSynthesizer.AUDIO_BITRATE*, 其中SpeechSynthesizer.AUDIO_BITRATE_PCM 为不压缩传输
PARAM_TTS_LICENCE_FILE String , 文件路径 离线 基本不用 临时授权文件。目前SDK会自动下载正式授权文件。

初始化合成引擎

设置合成的参数后,需要调用此方法初始化。

  • 在线激活初始化方法如下
// 初始化在线tts服务,服务会读取相应资源进行加载,此过程是耗时操作
 ITtsError ttsError = speechSynthesizer.loadOnlineTts();
  • 离线激活初始化方法如下
 // 初始化离线tts服务,服务会读取相应离线资源进行加载,此过程是耗时操作
 ITtsError ttsError = speechSynthesizer.loadOfflineTts();

控制接口

合成及播放接口

如果需要合成后立即播放的请调用speak方法,如果只需要合成请调用synthesize方法。

该接口线程安全,可以快速多次调用。内部采用排队策略,调用后将自动加入队列,SDK会按照队列的顺序进行合成及播放。 注意需要合成的每个文本text不超过120的GBK字节,即60个汉字或英文字母数字。超过请自行按照句号问号等标点切分,调用多次合成接口。

返回结果不为0,表示出错。错误码请参见“错误码及解决方法”一节

speak方法示例:

    ITtsError speak(TtsEntity ttsEntity)// utteranceId在SpeechSynthesizerListener 相关事件方法中回调

    TtsEntity ttsEntity = new TtsEntity(text, TtsMode.MIX);
    ITtsError ttsError = speechSynthesizer.speak(ttsEntity);

synthesize方法示例:

    ITtsError synthesize(TtsEntity ttsEntity) // utteranceId在SpeechSynthesizerListener 相关事件方法中回调

    ITtsError ttsError = speechSynthesizer.synthesize(new TtsEntity(text, TtsMode.MIX));

调用这两个方法后,SDK会回调SpeechSynthesizerListener中的onSynthesizeResponse方法。 音频数据在SynthesizerResponse参数的getAudioData方法中格式为byte[],采样率16K 16bits编码 单声道。连续将audioData写入一个文件,即可作为一个可以播放的pcm文件(采样率16K 16bits编码 单声道)。

批量合成并播放接口

推荐连续调用speak方法,sdk内部有队列缓冲。 可以循环Speak方法传入多个文本并进行排队合成并播放。 注意需要合成的每个文本text不超过120的GBK字节,即60个汉字或英文字母数字。(默认限制队列最多支持合成5条,如需增加可通过PARAM_MAX_QUEUE_SIZE修改,) 以下为批量调用示例:

String[] a = {
                "123456",
                "你好",
                "使用百度语音合成SDK",
                "hello",
                "hello",
                "这是一个demo工程"};
for (int i = 0 ; i < a.length ;i++) {
    TtsEntity ttsEntity = new TtsEntity(a[i], TtsMode.MIX);
    ITtsError ttsError = mSpeechSynthesizer.speak(ttsEntity);
    LoggerProxy.d(TAG, "sn = " + ttsEntity.getSn() + " , synthesize = " + ttsError.getDetailCode());
}

ITtsError.getDetailCode()返回结果不为0,表示出错。错误码请参见“错误码及解决方法”一节。

批量合成切换发音人

sdk批量合成支持每个文本使用不同发音人播报的功能,将每个文本的发音人信息放到map中传递给TTSEntity进行播报,以下为调用示例:

String[] a = {
             "123456",
            "你好",
};
for (int i = 0 ; i < a.length ;i++) {
    HashMap<String, String> ttsParams = new HashMap<>();
    JSONObject jsonObject = new JSONObject();
    try {
        jsonObject.put(SpeechSynthesizer.PARAM_TTS_TEXT_MODEL_FILE,"文本资源路径");
        jsonObject.put(SpeechSynthesizer.PARAM_TTS_SPEECH_MODEL_FILE,"发音人路径");
        ttsParams.put(SpeechSynthesizer.PARAM_OFFLINE_MODEL, jsonObject.toString());
        TtsEntity ttsEntity = new TtsEntity(a[i], TtsMode.MIX , ttsParams);
        ITtsError ttsError = mSpeechSynthesizer.speak(ttsEntity);
    } catch (JSONException e) {
        throw new RuntimeException(e);
    }
}

播放过程中的暂停及继续

仅speak方法调用后有效。可以使用pause暂停当前的播放。pause暂停后,可使用resume进行播放。

int result = mSpeechSynthesizer.pause();
int result = mSpeechSynthesizer.resume();

返回结果不为0,表示出错。错误码请参见“错误码及解决方法”一节

停止合成并停止播放

取消当前的合成。并停止播放。

int result = mSpeechSynthesizer.stop();

返回结果不为0,表示出错。错误码请参见“错误码及解决方法”一节

其它接口

打开调试日志(重要)

  LoggerProxy.printable(true); // 日志打印在logcat中
  LoggerProxy.saveNativeLogFile("PRINTF:0"); // 设置日志级别 0:debug级别 ;1:trace级别;2:fatal级别。

开启成功后会看见bdtts-开头的tag日志,建议上线后完全没问题再由服务端控制关闭。

日志输出截图: 安卓_13.png

判断模型文件是否有效(重要)

SynthesizerTool.verifyModelFile(/path/to/bd_etts_eng_common_text_all_xxxx.dat”) ;//判断文本资源
SynthesizerTool.verifyModelFile(/path/to/bd_etts_common_speech_xxxx.dat”) ;//判断音库资源

释放资源

不再使用后,请释放资源,并将mSpeechSynthesizer设为null。如果需要再次使用,可以通过SpeechSynthesizer.getInstance() 获取,并重复上述流程。

int result = mSpeechSynthesizer.release();

返回结果不为0,表示出错。错误码请参见“错误码及解决方法”一节

切换离线发音

切换离线发音人接口。 SDK默认只有4种离线,用这个方法可以切换离线发音人。 离线合成时的参数,填入两个资源文件的路径。如果切换的话,也是使用这两个文件路径。

注意:必须在引擎空闲的时候调用这个方法,否则有不为0的错误码返回。空闲是指最后一个合成回调onSynthesizeFinish 之后。

try {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put(SpeechSynthesizer.PARAM_TTS_TEXT_MODEL_FILE,"文本资源路径");
    jsonObject.put(SpeechSynthesizer.PARAM_TTS_SPEECH_MODEL_FILE,"音库资源路径");
    speechSynthesizer.setParam(SpeechSynthesizer.PARAM_OFFLINE_MODEL, jsonObject.toString());
 } catch (JSONException e) {
    e.printStackTrace();
 }

SpeechSynthesizerListener回调方法

public void onSynthesizeResponse(SynthesizerResponse synthesizerResponse)

SynthesizerResponse 输出参数

合成回调事件统一由 public void onSynthesizeResponse(SynthesizerResponse synthesizerResponse) 该方法回调。其中SynthesizerResponse对象包含合成进度 、音频数据、合成状态等,方法以及说明如下:

方法名 类型 描述
getSynthesizeType enum SYNTHESIZE_START 合成开始时的回调接口
SYNTHESIZE_DATA_ARRIVED 合成过程中的回调接口
SYNTHESIZE_FINISH 合成正常结束时的回调接口
SYNTHESIZE_ERROR 合成出错时的回调接口
PLAY_START 合成播报开始时的回调接口
PLAY_PROGRESS 合成播报过程中的回调接口
PLAY_FINISH 合成播报正常结束时的回调接口
ON_NEXT 篇章合成播报填充数据的回调接口
getUtteranceId String 获取合成标识 id
getInstanceId String 获取当前实例 id
getAudioProgress int 获取合成进度,在合成过程中会返回该结果
getEngineType int 0 在线,1 离线 获取合成类型。0 在线,1 离线
getAudioSampleRate int 当前音频采样率
getAudioData byte[] 当前音频数据
getSynthesizerError String 获取相关的错误信息

8. 错误码及解决方法

生成错误码共2处位置:

  • 调用接口的方法时的返回,如initTTs方法的返回
  • onError(String utteranceId,SpeechError error); SpeechError 中的code
错误码值 错误码描述
-1 在线引擎授权失败
-4 在线授权中断异常
-5 在线授权执行时异常
-6 在线授权时间超时
-7 在线合成返回错误信息
-10 在线引擎合成时异常
-11 当前 mode 不支持的操作
-12 在线合成请求解析出错
-15 在线合成获取合成结果超时
-16 在线授权被取消
-18 在线合成无效的主机名
-19 在线合成读数据失败
-20 在线合成连接失败
-21 在线合成 socket 异常
-24 在线合成请求主机名为空
-25 在线合成发送数据失败
-29 在线合成接收前缀数据长度错误
-30 在线合成接收数据长度错误
-31 在线合成合成数据包速度过快
-32 在线合成网络未知类型错误
-39 在线服务临时错误
-100 离线引擎授权失败
-102 离线授权下载License失败
-105 离线授权中断异常
-106 离线授权执行时异常
-107 离线授权执行时间超时
-108 离线合成引擎初始化失败
-110 离线合成时异常
-111 离线合成返回值非0
-118 鉴权被取消
-122 离线 tts_offline_resource 文件异常
-123 离线发音人参数异常
-124 下载 license 失败,序列号sn 参数异常
-125 离线合成文本为空
-200 混合引擎离线在线都授权失败
-204 混合引擎初始化 tts 时,离线初始化失败
-206 混合引擎初始化 tts 时,在线初始化失败
-300 合成文本为空
-301 合成文本长度过长(不要超过 GBK1024 个字节)
-302 合成文本无法获取GBK字节
-401 TTS模式无效
-402 TTS合成队列已满(最大限度为1000)
-406 TTS被调用方法参数无效
-500 Context被释放或为空
-700 播报的短音频文件不存在
-701 当前接口不支持播报短音频
-800 当前实例已经被释放,禁止调用该实例的任何API
-1001 模型管理请求出错
-1002 模型管理服务器端错误
-1003 模型管理数据库模型信息无效
-1004 模型管理数据库模型文件信息无效
-1005 模型数据已经存在( 或已下载)
-1006 无法获取到模型信息
-1007 无法获取到模型文件信息
-1008 模型检查过程异常
-1009 模型文件下载时异常
-9999 未知错误

常见错误码及解决方案


错误码 含义 可能原因 自查指南 解决办法
-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

9. 代码混淆

    -keep class com.baidu.tts.**{*;}
    -keep class com.baidu.speechsynthesizer.**{*;}

10. 权限

名称 说明 必选
必要的权限
android.permission.INTERNET 允许访问网络
android.permission.ACCESS_NETWORK_STATE 获取网络状态权限
android.permission.MODIFY_AUDIO_SETTINGS 允许程序修改全局音频设置
android.permission.WRITE_EXTERNAL_STORAGE 外置卡读写权限
android.permission.ACCESS_WIFI_STATE 获取网络状态权限
非必要权限
android.permission.CHANGE_WIFI_STATE 允许程序改变Wi-Fi连接状态

11. 不使用离线合成,只使用在线合成

删除离线音库文件,并且设置合成模式为online在线模式 ,speechSynthesizer.speak(new TtsEntity(text, TtsMode.ONLINE)); 安卓_14.png

上一篇
短文本在线合成 HTTP SDK
下一篇
语音合成 iOS SDK