语音合成 HarmonyOS SDK
1. 文档说明
| 文档名称 | 语音合成集成文档 |
|---|---|
| 所属平台 | HarmonyOS |
| 提交日期 | 2026-08-11 |
| 概述 | 百度语音合成客户端Harmony版SDK(以下简称BDTTSClient)是一种面向HarmonyOS设备的语音合成解决方案,以Har包的形式发布。目前版本已支持SDK内部直接播放合成语音和从SDK获取语音数据,并支持男女声、语速、音调、音量、音频码率设置。若您在2025年11月27日及之前购买或申请SN(序列号),请点击下载往期基础音库资源,及往期精品音库资源。详细发音人信息请看离线发音人列表。 |
| 短语说明 | 语音合成:将文本合成为语音,即声音文件合成引擎:将文本合成为语音的核心模块TTS:Text To Speech,即“从文本到语音”BDTTSClient:语音合成SDK简称,是一个封装了网络收发、音频播放功能的语音合成解决方案。语音合成SDK:封装网络收发、音频播放功能,可快速集成 |
2. 版本说明
| 名称 | 版本号 | 说明 |
|---|---|---|
| 语音合成 | 1.1.3 | 语音合成demo版本 |
| 系统支持 | HarmonyOS 6.0.0(APILevel 20)+ | 需要开发者通过compatibleSdkVersion来保证支持系统的检测 |
| 架构支持 | arm64-v8a | 仅适配arm64-v8a架构,不支持x86等其他架构 |
3. SDK说明
3.1 开发包说明
| 文件名称 | 说明 |
|---|---|
| doc/Baidu_TTS_SDK_Harmony_Manual.pdf | 完整集成文档(含离线授权补充内容) |
| har | 语音合成har包版本baidu_tts_1.0.3(1.0.3三端统一版本) |
| BaiduTtsDemo | 开发示例(DevEco Studio project,含离线授权配置demo) |
| version.readme | 产物版本说明(含so库、har包版本信息) |
3.2 总体框图

4.集成指南
4.1 添加BDTTSClient到工程
har方式集成:将开发包中的har目录拷贝到工程entry/libs/目录;在oh-package.json5文件中增加以下依赖:
"dependencies": {
"@package/baidutts": "file:./libs/xxxx.har" // 替换“xxxx.har”为实际har包文件名
}4.2 添加语音合成资源文件
- BaiduTtsDemo中的资源文件、参数值仅用于demo运行体验,业务方需申请自有资源文件与参数(如离线音库、SN码等)。
- 参照demo路径和代码逻辑,将自有离线资源文件(文本模型、发音人模型)放置到设备可访问路径(如
/data/storage/el2/base/haps/entry/files/),并在代码中配置正确路径。
4.3 权限声明
BDTTSClient需在module.json5文件中声明以下权限,确保离线授权下载、网络请求正常:
"requestPermissions": [
{
"name": "ohos.permission.INTERNET" // 在线授权、离线授权文件下载必需
},
{
"name": "ohos.permission.READ_EXTERNAL_STORAGE" // 读取离线资源文件必需
},
{
"name": "ohos.permission.WRITE_EXTERNAL_STORAGE" // 存储离线授权文件、资源文件必需
}
]4.4 离线在线授权补充说明
4.4.1 离线授权核心依赖信息
离线合成需3个核心信息完全匹配,否则触发授权失败(错误码-100、-102等),具体要求如下:
| 信息类型 | 说明 | 来源渠道 |
|---|---|---|
| APP_ID | 离线请求认证参数:AI开放平台用户填app_id,非AI开放平台用户填产品pid |
百度语音技术控制台 |
| 授权SN码 | 离线专属授权码,与APP_ID、包名绑定,用于下载离线授权文件 | 百度语音技术控制台-离线合成SDK管理 |
| 应用包名 | 与百度控制台配置的包名一致,需和工程module.json5中appId完全匹配。build-profile信息参考demo配置 |
工程module.json5文件、百度控制台应用配置页 |
4.4.2 离线授权文件获取机制
- 自动下载:首次使用离线合成时,SDK会在联网状态下,根据
APP_ID、SN码、包名自动向百度服务器请求并下载离线授权文件,默认存储路径为/data/storage/el2/base/haps/entry/files/baidu_tts_license(可通过PARAM_TTS_LICENCE_FILE参数自定义路径)。 - 重新授权:若授权文件过期、设备更换或包名修改,需重新申请SN码,并确保新SN与新配置信息匹配,SDK会自动重新下载授权文件。
4.4.3 离线授权失败排查要点
当出现-100(离线引擎授权失败)、-102(离线授权下载License失败)等错误时,按以下步骤排查:
- 检查
APP_ID、SN码是否正确:确认与百度控制台申请的信息一致,无空格、大小写错误。 - 验证包名匹配:工程
module.json5的appId需与百度控制台绑定的包名完全一致(离线授权与包名强绑定)。 - 网络状态:首次授权需联网,确保设备网络正常,无防火墙拦截SDK的授权请求。
- 存储权限:确认已申请
WRITE_EXTERNAL_STORAGE权限,授权文件下载路径有写入权限。 - SN码有效性:检查SN码是否在有效期内、是否已绑定其他设备(同一SN默认绑定有限数量设备,超限需重新申请)。
4.4.4 在线sdk鉴权:
在线sdk分为4种激活方式,实际使用种选择其中一种方式进行激活,4种激活方法为:
| 激活方式 | 说明 |
|---|---|
| 永久iamKey激活 | 需在官网申请的永久iamKey,使用该方法进行在线鉴权,每次启动app需激活一次,不退出app永久有效 |
| accessToken激活 | 需在使用appkey和secretKey获取的access_token,使用access_token进行授权,该token存在时限,时间到期后需要从新获取新的token从新授权 |
| 临时iamKey激活 | 与accessToken类似,需获取临时iamKey,该key存在时限,时间到期后需要从新获取新的key从新授权 |
4.4.5 鉴权激活方式说明
永久iamKey激活方式:将官网申请的永久iamKey放到项目中

临时accessToken和临时iam key激活方式:
accessToken和临时iamKey为相同接口,接口会随时间失效,客户需要在callback中创建http请求获取到对应token返回给sdk,sdk会在过期前3分钟通过callback重新向客户端获取最新token
accessToken获取地址:https://cloud.baidu.com/doc/AI_REFERENCE/s/Km3zhy5t7
iamKey获取地址:https://cloud.baidu.com/doc/AI_REFERENCE/s/Hm5us339w

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

将callback传递到sdk中

5. 语音合成功能代码
5.1 TTS初始化设置(分为离在线两种方式)
// SDK初始化
private initialTts(): void {
LoggerProxy.printable(true);
LoggerProxy.saveNativeLogFile("PRINTF:0");
this.printEngineInfo();
// TODO 代码中的所有参数与文件均是测试demo使用,集成自己工程时,请使用自己的参数
this.addDebugSpeechSynthesizer();
}
private addDebugSpeechSynthesizer(): void {
// 公共参数设置
this.setPublicParam(this.speechSynthesizer);
// 如果需要离线,设置离线资源
this.setOfflineParam(this.speechSynthesizer);
// 如果需要在线,设置在线离线资源
this.setOnlineParam(this.speechSynthesizer);
}
// 设置公共参数
private setPublicParam(speechSynthesizer: SpeechSynthesizer): void {
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_APP_ID, "APPID");
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_PLAYER_USAGE, audio.StreamUsage.STREAM_USAGE_UNKNOWN + "");
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_PLAYER_VOLUME_MODE, audio.AudioVolumeMode.APP_INDIVIDUAL + "");
// speechSynthesizer.setParam(SpeechSynthesizer.PARAM_PLAYER_INTERRUPT_MODE, audio.InterruptMode.INDEPENDENT_MODE + "");
}
// 在线语音合成
private setOnlineParam(speechSynthesizer: SpeechSynthesizer): void {
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_ACCESS_TOKEN, "IAMKEY或TOKEN");
// 请初始化您的在线发音人
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_ONLINE_SPEAKER, "4100");
// 在线超时时间,MIX模式超时会切换至离线,ONLINE模式会超时
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_ONLINE_TIMEOUT, "6000");
// 初始化在线tts服务,服务会读取相应资源进行加载,此过程是耗时操作
speechSynthesizer.loadOnlineTts().then(
(ttsError: ITtsError) => {
hilog.info(0x0000, 'index', 'loadOnlineTts ttsError errorCode= %{public}d , errorMessage = %{public}s',
ttsError.getDetailCode(),
ttsError.getDetailMessage());
}
);
}
// 离线语音合成
private setOfflineParam(speechSynthesizer: SpeechSynthesizer): void {
// 设置离线需要的认证参数,产品SN
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_AUTH_SERIAL_NUMBER, "填写申请的SN");
// 离线资源库路径,设置需要的离线发音人
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_OFFLINE_MODEL, this.setOfflineModel());
// 初始化离线tts服务,服务会读取相应离线资源进行加载,此过程是耗时操作
speechSynthesizer.loadOfflineTts().then(
(ttsError: ITtsError) => {
hilog.info(0x0000, 'index', 'loadOfflineTts ttsError errorCode= %{public}d , errorMessage = %{public}s',
ttsError.getDetailCode(),
ttsError.getDetailMessage());
}
);
}5.语音合成功能代码
5.1 TTS初始化设置(分为离在线两种方式)
// SDK初始化
private initialTts(): void {
LoggerProxy.printable(true);
LoggerProxy.saveNativeLogFile("PRINTF:0");
this.printEngineInfo();
// TODO 代码中的所有参数与文件均是测试demo使用,集成自己工程时,请使用自己的参数
this.addDebugSpeechSynthesizer();
}
private addDebugSpeechSynthesizer(): void {
// 公共参数设置
this.setPublicParam(this.speechSynthesizer);
// 如果需要离线,设置离线资源
this.setOfflineParam(this.speechSynthesizer);
// 如果需要在线,设置在线离线资源
this.setOnlineParam(this.speechSynthesizer);
}
// 设置公共参数
private setPublicParam(speechSynthesizer: SpeechSynthesizer): void {
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_APP_ID, "APPID");
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_PLAYER_USAGE, audio.StreamUsage.STREAM_USAGE_UNKNOWN + "");
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_PLAYER_VOLUME_MODE, audio.AudioVolumeMode.APP_INDIVIDUAL + "");
// speechSynthesizer.setParam(SpeechSynthesizer.PARAM_PLAYER_INTERRUPT_MODE, audio.InterruptMode.INDEPENDENT_MODE + "");
}
// 在线语音合成
private setOnlineParam(speechSynthesizer: SpeechSynthesizer): void {
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_ACCESS_TOKEN, "IAMKEY或TOKEN");
// 请初始化您的在线发音人
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_ONLINE_SPEAKER, "4100");
// 在线超时时间,MIX模式超时会切换至离线,ONLINE模式会超时
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_ONLINE_TIMEOUT, "6000");
// 初始化在线tts服务,服务会读取相应资源进行加载,此过程是耗时操作
speechSynthesizer.loadOnlineTts().then(
(ttsError: ITtsError) => {
hilog.info(0x0000, 'index', 'loadOnlineTts ttsError errorCode= %{public}d , errorMessage = %{public}s',
ttsError.getDetailCode(),
ttsError.getDetailMessage());
}
);
}
// 离线语音合成
private setOfflineParam(speechSynthesizer: SpeechSynthesizer): void {
// 设置离线需要的认证参数,产品SN
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_AUTH_SERIAL_NUMBER, "填写申请的SN");
// 离线资源库路径,设置需要的离线发音人
speechSynthesizer.setParam(SpeechSynthesizer.PARAM_OFFLINE_MODEL, this.setOfflineModel());
// 初始化离线tts服务,服务会读取相应离线资源进行加载,此过程是耗时操作
speechSynthesizer.loadOfflineTts().then(
(ttsError: ITtsError) => {
hilog.info(0x0000, 'index', 'loadOfflineTts ttsError errorCode= %{public}d , errorMessage = %{public}s',
ttsError.getDetailCode(),
ttsError.getDetailMessage());
}
);
}5.2 参数设置
5.2.1 在线必设参数
| 参数名 | 默认值 | 备注 |
|---|---|---|
| PARAM_ACCESS_TOKEN | "" | 产品iam api_key 或 token |
| PARAM_ONLINE_SPEAKER | "0" | 在线发音人,参考开放平台文档获取,例“4100” |
5.2.2 离线必设参数
| 参数名 | 默认值 | 备注 |
|---|---|---|
| PARAM_APP_ID | “0” | 离线请求认证参数,从开放平台获取,例:"1234567" |
| PARAM_AUTH_SERIAL_NUMBER | " " | 离线鉴权认证参数,从开放平台获取。例如:"abcd1234-567aa1f96-148b0e-048e-11f6c4-01" |
| PARAM_OFFLINE_MODEL | " " | ⾳库json信息 |
5.2.3 SDK默认自带基础音库离线资源文件
离线合成SDK默认自带4个普通音库资源文件,精品音库资源文件需单独下载。若您在2025年11月27日之前购买或申请序列号,请点击下载往期音库资源文件。详细发音人信息请看离线发音人列表。
| 资源文件 | 具体文件名(支持新序列号) |
|---|---|
| m15 离线男声(度小宇) | bd_etts_common_speech_duxiaoyu_mand_eng_high_am-tac-csubgan16k_v4.9.0_20240918_20251031153737.dat |
| f7 离线女声(度小美) | bd_etts_common_speech_duxiaomei_mand_eng_high_am-tac-csubgan16k_v4.9.0_20240918_20251031153737.dat |
| yy 离线度逍遥 | bd_etts_common_speech_duxiaoyao_mand_eng_high_am-tac-csubgan16k_v4.9.0_20251110_20251210203318.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_v5.5.0_20250410.dat |
5.2.3 其它辅助参数
| 参数名 | 默认值 | 备注 |
|---|---|---|
| PARAM_ONLINE_TIMEOUT | "6000" | 在线合成请求的超时时间,单位为毫秒,最小值为 800,推荐设置为 2000 |
| PARAM_VOLUME | "5" | 合成音频音量,范围 [0-15],float 类型 |
| PARAM_SPEED | "5" | 合成音频速度,范围 [0-15],float 类型 |
| PARAM_PITCH | "5" | 合成音频语调,范围 [0-15],float 类型 |
| PARAM_OPEN_XML | "0" | "0":关闭 xml 解析,"1":打开 xml 解析 |
| PARAM_TEXT_CTRL | "" | 前端模型配置参数,json 类型(表格笔误 son) |
| PARAM_AUDIO_CTRL | "" | 前端模型配置参数,json 类型 |
| PARAM_BITRATE | "64" | 在线音频下发类型。 PCM = 0, OPUS_64K = 64, OPUS_128K = 128 |
| PARAM_PLAYER_VOLUME | "1.0" | 播放器音量 [0,1.0],float 类型 |
| PARAM_PLAYER_USAGE | audio.StreamUsage.STREAM_USAGE_VOICE_ASSISTANT | 播放器 usage |
5.3 初始化
speechSynthesizer.setParam("设置相应的参数key", "设置相应的参数value");
// 如果需要在线合成,加载在线模型
auto ttsResult = await speechSynthesizer.loadOnlineTts();
// 如果需要离线合成,加载离线模型
auto ttsResult = await speechSynthesizer.loadOfflineTts();5.4 合成并播报
//合成
speechSynthesizer.synthesize(TtsEntity): Promise<ITtsError>;TtsEntity参数详解
- text:此次要合成的文本内容。必设参数。
- utteranceId:此次文本合成的标识,默认值 UUID 的唯一值。
- TtsMode:此次合成模式。
- ttsParams: Record<string,string>:本条合成的合成参数,仅在本条合成生效,参数参见 setParam
- 合成模式说明:ONLINE 纯在线模式,OFFLINE 纯离线模式,MIX 优先使用在线,在线超时后使用离线模式。
//合成并播报
speechSynthesizer.speak(TtsEntity): Promise<ITtsError>;5.5 流程控制
| 方法名 | 说明 |
|---|---|
| stop() | 停止当前实例合成或者停止合成播报 |
| release() | 释放当前实例,当所有实例都被释放时,tts 整个服务停止。 |
| pause() | 暂停当前实例的合成播报内容。 |
| resume() | 继续播报当前实例的播报内容,与pause()相对应。 |
5.6 状态监听
为了更好地实现用于界面,BDTTSClient提供了SpeechSynthesizerListener监听接口用于对合成器的状态进行通知。
完整的开发示例请参见开发包所附示例BaiduTtsDemo。
5.7 合成状态监听器回调接口
5.7.1 合成状态监听器回调接口
onSynthesizeResponse(SynthesizerResponse synthesizerResponse):void;
let sn = synthesizerResponse.getSn(); // 此次SDK侧传递的文本合成标识,建议保存,后续排查服务器问题时使用
let utteranceId = synthesizerResponse.getUtteranceId(); // 此次业务侧传递的文本合成标识,用于业务逻辑判断5.7.2 合成开始时的回调接口
synthesizerResponse.getSynthesizeType() === SYNTHESIZE_START5.7.3 合成过程中的回调接口
synthesizerResponse.getSynthesizeType() === SYNTHESIZE_DATA_ARRIVED
let progress = synthesizerResponse.getAudioProgress();
let engineType = synthesizerResponse.getEngineType();
let sampleRate = synthesizerResponse.getAudioSampleRate();
let audioData = synthesizerResponse.getAudioData();5.7.4 合成出错时的回调接口
synthesizerResponse.getSynthesizeType() == PLAY_ERROR
synthesizerResponse.getErrorCode();
synthesizerResponse.getErrorMessage();5.7.5 合成播报出错时的回调接口
synthesizerResponse.getSynthesizeType() == PLAY_ERROR
synthesizerResponse.getErrorCode();
synthesizerResponse.getErrorMessage();5.8 SynthesizerTool类(工具类辅助离线合成开发)
5.8.1 检验模型文件的有效性
public static verifyModelFile(filePath:string):Promise<ITtsError>5.8.2 获取离线引擎基本信息
public static getEngineInfo():string5.8.3 获取离线引擎版本信息
1 public static getEngineVersion():number5.8.4 检查模型文件与当前引擎版本是否匹配
/**
* 校验模型文件是否与当前离线引擎版本兼容(避免因版本不匹配导致合成失败)
* @param filePath 模型文件绝对路径
* @return 数字:0=匹配,1=模型版本过高,-1=模型版本过低,-2=文件不存在
*/
let matchResult = SynthesizerTool.matchResEngine("/data/storage/el2/base/haps/entry/files/bd_etts_navi_speech_f7_mand_eng_high_am-style24k_v4.6.0_20210721.dat");
switch (matchResult) {
case 0:
console.log("模型文件与引擎版本匹配");
break;
case 1:
console.error("模型版本过高,请升级离线引擎");
break;
case -1:
console.error("模型版本过低,请下载最新模型文件");
break;
case -2:
console.error("模型文件不存在,请检查路径");
break;
}5.8.5 获取音库文件的采样率
/**
* 获取离线发音人模型(speech.dat)的音频采样率(用于自定义音频播放配置)
* @param filePath 发音人模型文件绝对路径
* @return 数字:采样率(如16000、24000,单位Hz;返回-1表示文件无效)
*/
let sampleRate = SynthesizerTool.getSpeechSampleRate("/data/storage/el2/base/haps/entry/files/bd_etts_navi_speech_f7_mand_eng_high_am-style24k_v4.6.0_20210721.dat");
if (sampleRate !== -1) {
console.log("发音人模型采样率:" + sampleRate + "Hz");
}5.8.6 获取定制化语音包的采样率
public static getDomainSampleRate(filePath:string):number5.8.7 验证定制化语音包是否可用
public static checkDomainFile(filePath:string):number5.8.8 获取sdk内部当前使用的设备id
// 建议在new Synthesizer()之后调用
public static getCuid(): string6.错误码列表
| 错误码值 | 错误码描述 |
|---|---|
| -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 合成队列已满 |
| -406 | TTS 被调用方法参数无效 |
| -500 | Context 被释放或为空 |
| -700 | 播报的短音频文件不存在 |
| -701 | 当前接口不支持播报短音频 |
| -1001 | 模型管理请求出错 |
| -1002 | 模型管理服务器端错误 |
| -1003 | 模型管理数据库模型信息无效 |
| -1004 | 模型管理数据库模型文件信息无效 |
| -1005 | 模型数据已经存在(或已下载) |
| -1006 | 无法获取到模型信息 |
| -1007 | 无法获取到模型文件信息 |
| -1008 | 模型检查过程异常 |
| -1009 | 模型文件下载时异常 |
| -9999 | 未知错误 |
7. FAQ
1.日志收集
(1)TTS SDK Java 层日志 收集方式:使用 logcat 抓取日志并导出日志文件
开启日志打印代码:
LoggerProxy.printable(true);(2)TTS SDK 引擎层日志
两种输出方式:
方式 1:输出引擎日志到本地指定文件
LoggerProxy.saveNativeLogFile("FPRINTF:0:" + File.separator + context.getExternalFilesDir(null).getPath() + File.separator + "tts_engine.log");方式 2:仅开启引擎日志控制台输出
LoggerProxy.saveNativeLogFile("PRINTF:0");收集方式:配合 logcat 收集,或直接读取本地输出的日志文件
2.离线引擎信息
String engineInfo = SynthesizerTool.getEngineInfo();3.使用的文本资源信息
传入离线 TTS 文本资源文件绝对路径,获取文本模型详情:
String textModelInfo = SynthesizerTool.getModelInfo(初始化离线TTS引擎使用的文本资源绝对路径);4.使用的音库资源信息
传入离线 TTS 音库资源文件绝对路径,获取音库模型详情:
String speechModelInfo = SynthesizerTool.getModelInfo(初始化离线TTS引擎使用的音库资源绝对路径);5.查看 SDK 版本号信息(bash 命令)
进入 so 库所在目录执行以下指令:
# 查看TTS SDK版本
strings -a libBDSpeechClientSDK.so | grep TTS_SDK_VERSION
# 查看ETTS唯一标识
strings -a libBDSpeechClientSDK.so | grep ETTS_UNIQUE