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

语音合成 iOS SDK

1. 文档说明

文档名称 语音合成集成文档
所属平台 iOS
提交日期 2026-03-30
概述 本文档是百度离线语音合成iOS SDK的用户指南,描述了离线语音合成SDK相关接口的使用说明。
离线语音合成SDK包含基础音库,在线语音合成SDK无需音库资源即可调用,请您前往语音合成SDK资源按需下载;若您在2025年11月27日及之前购买或申请测试SN(序列号),请点击下载往期基础音库资源,及往期精品音库资源

2. 版本说明

名称 版本号
语音合成 4.2.0.27
系统支持 支持iOS 12.0及以上
架构支持 支持x86_64、arm64 (离线合暂成不支持x86_64架构)
机型 iPhone和iPad皆可
IDE Xcode 14+

2.1 版本升级改动点说明:

  • 新增获取cuid功能
  • 提升SDK稳定性;
  • 离线发音人听感调优
  • SDK引擎升级优化
  • 新增Token(临时、永久)、IAMKEY(临时、永久)鉴权 方式

3. SDK说明

文件名称 版本号 说明 类型
libBaiduSpeechSDK.a 4.2.0.27 语音合成SDK (同时支持离在线引擎) 静态库
  1. 由于 BITCODE 开启会导致二进制文件体积增大,这部分会在 APPStore 发布时进行进一步编译优化,并不会引起最终文件的体积变化,故此处计算的是关闭 BITCODE 下的二进制增量。
  2. .a中是多个架构做了合并,使用lipo可以看到细节。所以.a库文件本身很大,且打包出来的ipa也相对较大。但用户实际下载到手机中会被AppStore优化,只下载用户设备需要的架构,所以实际在手机上占用的空间很小。
Architectures in the fat file: libBaiduSpeechSDK.a are: armv7 i386 x86_64 arm64
  1. 如果不需要离线功能,可以移除离线相关的资源文件(参考下一节),并删除代码中所有调用离线引擎代码相关的片段。

以下是2.2.7.0在iPhone6中安装Demo后,实际系统计算出的App占用大小,根据机型可能会有差异。

功能 大小
带离线合成,并引入一种离线发音人 14.8M
不带离线合成,不引入离线合成资源 7M

开发包说明

文件(夹)名 说明 备注
BDSClientLib 离在线语音合成SDK Lib库,支持simulator和iOS设备。 必须引入
BDSClientSample 开发示例(xcode project)
BDSClientResource/ TTS/ChineseAnd English_Speech*.dat 具体参照 [纯离线语音合成模式] 章节 若无需离线合成则无需引入 注意:路径不能使用中文
BDSClientResource/ TTS/ChineseAnd English_Text.dat 离线语音合成资源文件(text data file), 中英文 若无需离线合成则无需引入 注意:路径不能使用中文
BDSClientResource/ TTS/English_Speech _Female.dat, BDSClientResource/ TTS/English_Speech _Male.dat 离线语音合成资源文件 (speech data file,英文),女声,男声 若无需离线合成则无需引入 注意:路径不能使用中文

4. Demo运行

4.1 配置包名和签名

从百度云控制台下载Demo,地址https://ai.baidu.com/sdk#tts 登录后在对应页面下载 ios_1.png

4.2 修改鉴权信息

鉴权信息申请及配置参考下文6.离在线鉴权配置 ios_2.png

核心BDSClientLib引擎依赖库以及头文件必须引入。 ios_3.png

然后进行编译测试。

5. SDK集成

强烈建议用户首先运行SDK包中的Demo工程,Demo工程中详细说明了语音合成的使用方法,并提供了完整的示例。一般情况下,您只需参照demo工程即可完成所有的集成和配置工作。

添加BDSSpeechSynthesizer到工程

BDSSpeechSynthesizer使用了一些系统的framework,需要添加到工程里面。

ios-ttsdemo-1.png

添加方式: 右键点击 Xcode 中的工程文件,在出现的界面中,选中 TARGETS 下的应用,在出现的界面中选中 Build Phases->Link Binary With Libraries,点击界面中的“+”图标,在弹出的界面中选择需要的framework即可。请参考demo工程引入所需动态库framework和静态库。

开发者编译自己工程时,若报错 ld: Library xxxx not found,一般是库文件没有正确引入。请确保库文件在工程所能找到的位置之内(通过 LIBRARRY_SEARCH_PATH设置)

添加语音合成相关资源文件

将开发包中的BDSClientResource目录下的相关资源文件添加到工程或者安装app后部署到指定目录(代码中启动合成引擎时需要指定该资源文件的访问路径)。根据具体需求引入不同的资源即可。

基础音库

8c7827365921563d75bcc268e.png

精品音库

ios_4.png

音频文件配置代码示例:

// 离线TTS 调用方法
[self configureOfflineTTS];
    // 获取cuid
//  NSString *cuid = [[BDSSpeechSynthesizer sharedInstance] getCurrentCuid];
// 音库资源文件设定
    NSString *offlineEngineSpeechData = [[NSBundle mainBundle] pathForResource:@"bd_etts_common_speech_f7_mand_eng_high_am-mgc_v3.6.0_20190117" ofType:@"dat"];
    NSString *offlineChineseAndEnglishTextData = [[NSBundle mainBundle] pathForResource:@"bd_etts_common_text_txt_all_mand_eng_middle_big_v6.0.0_20240731" ofType:@"dat"];
    NSError *err = nil;
    err = [[BDSSpeechSynthesizer sharedInstance] loadOfflineEngine:offlineChineseAndEnglishTextData speechDataPath:offlineEngineSpeechData licenseFilePath:nil withAppCode:APP_ID withSn:SN];
    if(err){
        [self displayError:err withTitle:@"Offline TTS init failed"];
        return;
    }
    [TTSConfigViewController loadedAudioModelWithName:@"Chinese female" forLanguage:@"chn"];
    [TTSConfigViewController loadedAudioModelWithName:@"English female" forLanguage:@"eng"];

引入BDSSpeechSynthesizer的头文件

首先将 BDSSpeechSynthesizer 提供的头文件拷贝到工程目录下,在 XCode 中添加此文件,引入 BDSSpeechSynthesizer提供的头文件。

添加如下头文件:

#import "BDSSpeechSynthesizer.h"

引入静态库文件

BDSSpeechSynthesizer提供了支持真机 armv7,armv7s,arm64及更新架构所使用的静态库文件,存放在开发包lib目录下。

引入静态库文件的具体方式为:将libBaiduSpeechSDK.a 采用添加文件方式添加到工程的Framework 目录下。

说明: libBaiduSpeechSDK.a 是一个通用的库文件,支持armv7、arm64、i386、x86_64, 避免开发者在 build 不同 target 时频繁替换.a 文件的问题

6.离在线模式鉴权参数配置说明

离在线语音合成模式

请从官网控制台复制您的App密钥,设置APP_ID、API_KEY、SECRET_KEY参数。并绑定你的移动应用的BundleId。分别加载在线和离线引擎。

在线合成和离线合成需要进行相关验证后方可使用:

引擎类型 验证方法
在线合成 开放平台使用ACCESSTOKEN进行验证(新增),详情请点击默认鉴权机制了解
开放平台使用IAMKEY进行验证(新增),详情请点击API Key鉴权机制了解
开放平台使用API/SECRET KEY + APPID方式进行验证,出于授权安全本文档不建议使用此验证方法,历史客户可在快速开发指南 了解相关信息
离线合成 使用APPID+授权序列号SN+包名首次联网自动下载授权文件进行验证
离线合成需要另外填写申请授权序列号,具体流程参考 快速集成指南

纯在线语音合成模式

使用TOKEN(当前版本新增)鉴权方式使用示例:

// 初始化部分
// TTSViewController.m
// 用户填写iamkey 永久鉴权方式(新增)
// token鉴权
// [[BDSpeechTTSBaseKit sharedInstance] setTTSLicenseWithAuthToken:@"平台获取的token" AndExpirationDate:"token有效期时间"];

使用IAMKEY(当前版本新增)鉴权方式使用示例:

// 初始化部分
// TTSViewController.m
// 用户填写iamkey 永久鉴权方式(新增)
[[BDSpeechTTSBaseKit sharedInstance] setTTSLicenseWithIamKey:IAM_KEY];
// 用户自定义iam apikey获取 临时鉴权方式(新增)
 [[BDSpeechTTSBaseKit sharedInstance] setTTSLicenseWithIAMKey:IAM_KEY AndExpirationDate:@"传入iamkey有效时间戳"];

鉴权接口及参数说明

/**
 token鉴权方式
 token:申请的token
 expirationDate:token过期时间戳(毫秒)
 */
- (void)setTTSLicenseWithAuthToken:(NSString *)token AndExpirationDate:(long long)expirationDate;

/**
 iamkey方式初始化鉴权
 iamkey:申请的iamkey
 expirationDate:iamkey过期时间(毫秒)
 */
- (void)setTTSLicenseWithIAMKey:(NSString *)iamkey AndExpirationDate:(long long)expirationDate;

完整示例参考:

// 语音合成sdk内部方法代理设置
[[BDSSpeechSynthesizer sharedInstance] setSynthesizerDelegate:self];
// 获取当前cuid
// NSString *cuid = [[BDSSpeechSynthesizer sharedInstance] getCurrentCuid];
// 鉴权初始化
[self configureOnlineTTS];
// 鉴权库初始化配置 ak、sk  协议代理初始化
[AuthManager sharedInstance].temporaryTokenAndKeyDelegate = self;
// 语音合成sdk日志级别 0 默认关闭  5 全量日志
[BDSSpeechSynthesizer setLogLevel:BDS_PUBLIC_LOG_VERBOSE];
// 设置鉴权通用日志
[AuthManager sharedInstance].isAuthLog = YES;
// 鉴权sdk版本号
NSLog(@"Current SDK version: %@", [[BDSpeechTTSBaseKit sharedInstance] getTTSLibVersion]);
// 用户填写ak、sk信息鉴权方式(历史)
[[BDSpeechTTSBaseKit sharedInstance] setTTSLicenseWithAk:API_KEY AndSK:SECRET_KEY];
// 用户填写iamkey 鉴权方式(新增)
[[BDSpeechTTSBaseKit sharedInstance] setTTSLicenseWithIamKey:IAM_KEY];
// 用户自定义access token获取 回调接口鉴权方式(新增)
[[BDSpeechTTSBaseKit sharedInstance] setTTSLicenseWithAuthToken:token AndExpirationDate:@"传入token有效时间戳"];
// 用户自定义iam apikey获取 回调接口鉴权方式(新增)
 [[BDSpeechTTSBaseKit sharedInstance] setTTSLicenseWithIAMKey:IAM_KEY AndExpirationDate:@"传入iamkey有效时间戳"];

提供用户自定义获取鉴权信息的能力

描述:为了满足 「鉴权信息保存在server端,app通过请求server端获取access token」的需求,语音SDK需要提供 鉴权信息回调点,并由用户最终实现 回调接口。

步骤一:
// 遵循鉴权sdk内置协议,初始化设置协议
[AuthManager sharedInstance].temporaryTokenAndKeyDelegate = self;

// 分别实现协议传入token、iamkey
/**
 客户实现get token 协议方法
 */
- (void)getToken {
    ......
    //客户业务侧处理获取token的逻辑
    // demo示例发送请求
     [self sendPostRequest];
}

/**
 客户实现get iamkey 协议方法
 */
- (void)getIAMKey {
    ......
    //客户业务侧处理获取iamkey的逻辑
    // demo示例发送请求
     [self sendPostRequest];
}

步骤二:
// 初始化调用在线函数进行SDK模型参数初始化配置
// 在线TTS
 [self configureOnlineTTS]; // 完成模型初始化参数配置相关操作
//获取网络权限判断逻辑
    ......
    ......
    ......
// 检查当前网络状态并尝试网络请求         
[self checkNetworkStatusAndMakeRequest];       
          
          
  // 检查网络权限是否生效
- (void)checkNetworkStatusAndMakeRequest {
    // 生效 即可做post请求获取token、有效期
    ......
    ......
    ......
    // 调用本地获取token的请求逻辑
     [self sendPostRequest];
}

  // post请求 仅供参考
-(void)sendPostRequest {
 // 请求逻辑具体参考demo代码
  ......
  ......
  请求拿到token后调用API接口完成token鉴权
  // token 鉴权   成功:正常完成合成主流程鉴权通过。 失败:触发上述步骤一中的协议回调 重新获取有效token(此处以token为例) 
  [[BDSpeechTTSBaseKit sharedInstance] setTTSLicenseWithAuthToken:@"平台获取的token" AndExpirationDate:"token有效期时间"];
}

逻辑整理 1.遵循鉴权sdk内置协议 2.完成初始化请求token获取[self sendPostRequest]; 并在请求结果中设置对应的鉴权方式如 [[BDSpeechTTSBaseKit sharedInstance] setTTSLicenseWithAuthToken:@"平台获取的token" AndExpirationDate:"token有效期时间"];获取token。3.成功后正常继续下一步,异常或请求token失败、token有效期到期等 SDK代理会监听到 触发getToken、getIamkey代理 进行重新处理逻辑 demo示例中做了重新获取token的操作 仅供参考 
   
注:使用该方式为了满足 「鉴权信息保存在server端,app通过请求server端获取access token」的需求,语音SDK需要提供 鉴权信息回调点,并由用户最终实现 回调接口。

纯离线语音合成模式

请参考configureOfflineTTS方法配置离线资源文件和鉴权,或参考4.2离线集成配置相关描述。

  1. APPID+SN方式鉴权:

参数配置说明 AppID可登录控制台查看,App ID与SN获取方式参考 快速集成指南

-(void)configureOfflineTTS{

#pragma mark - 新版本使用的资源包文件
    // 音库资源文件设定
    NSString *offlineEngineSpeechData = [[NSBundle mainBundle] pathForResource:@"bd_etts_common_speech_f7_mand_eng_high_am-mgc_v3.6.0_20190117" ofType:@"dat"];
    NSString *offlineChineseAndEnglishTextData = [[NSBundle mainBundle] pathForResource:@"bd_etts_common_text_txt_all_mand_eng_middle_big_v6.0.0_20240731" ofType:@"dat"];
    NSError *err = nil;
    err = [[BDSSpeechSynthesizer sharedInstance] loadOfflineEngine:offlineChineseAndEnglishTextData speechDataPath:offlineEngineSpeechData licenseFilePath:nil withAppCode:APP_ID withSn:SN];
    if(err){
        [self displayError:err withTitle:@"Offline TTS init failed"];
        return;
    }
    [TTSConfigViewController loadedAudioModelWithName:@"Chinese female" forLanguage:@"chn"];
    [TTSConfigViewController loadedAudioModelWithName:@"English female" forLanguage:@"eng"];
}
  1. 加载离线引擎

资源文件包括『Speech文件』和『Text文件』,音库名称对应如下

SDK默认自带离线资源文件

资源文件 具体文件名(支持新序列号)
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_20251028_20251031153737.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

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

音库资源文件下载地址:https://console.bce.baidu.com/ai/#/ai/speech/offline/index

资源文件 具体文件名
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.da
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.da
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

若您在2025年11月27日之前购买或申请序列号,请点击下载往期基础音库资源,及往期精品音库资源

往期基础音库

资源文件 具体文件名(支持旧序列号)
m15 离线男声(度小宇) bd_etts_common_speech_duxiaoyu_mand_eng_high_am-style24k_v4.6.0_20210721_20220822104311.dat
f7 离线女声(度小美) bd_etts_navi_speech_duxiaomei_mand_eng_high_am-style24k_v4.6.0_20210721.dat
或 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_v6.0.0_20240731.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

2.4.3之前版本,中文、粤语、英文因为使用不同的Text文件,之间通过reinitOfflineEngineData 无法完成切换。必须反初始化,再初始化。2.4.3之后版本无需重新初始化。

7.重要接口说明

语音合成器

合成器,类名BDSSpeechSynthesizer,主要用来控制合成进程:设置参数,开始,结束,取消等。

获取合成器唯一实例

方法 参数 返回 说明
(BDSSpeechSynthesizer*)sharedInstance; 语音合成引擎实例 获取语音合成引擎实例,该实例为单例对象

释放合成器唯一实例

方法 参数 返回 说明
(void)releaseInstance; 释放语音合成器实例

设置合成器代理

方法 参数 返回 说明
(void)setSynthesizerDelegate: (id)delegate; delegate (代理对象) 设置合成器代理,代理对象负责处理合成器各类事件

设置合成参数

方法 参数 含义 返回 说明
(NSError*)setSynthParam:(id)param forKey:(BDSSynthesizerParamKey)key; nil或错误信息 设置合成参数
param 参数值
key 参数键

获取合成参数

方法 参数 含义 返回 说明
(id)getSynthParamforKey:(BDSSynthesizerParamKey)key withError:(NSError**)err; 参数值 获取合成参数
key 参数值
err 如果失败, 返回错误信息

设置回调队列

方法 参数 含义 返回 说明
(NSError*)setSDKCallbackQueue:(dispatch_queue_t)callbackQueue; nil或错误信息 设置回调队列
callbackQueue 回调队列

获得当前回调队列

方法 参数 返回 说明
(dispatch_queue_t)getCurrentCallbackQueue; 回调队列 获得当前回调队列

设置合成线程优先级

方法 参数 含义 返回 说明
(void)setThreadPriority:(double)priority; 设置合成线程优先级
priority 优先级

启动合成引擎

方法 参数 含义 返回 说明
(NSError)loadOfflineEngine: (NSString)textDatFilePath
speechDataPath: (NSString)speechDatFilePath
licenseFilePath: (NSString
)licenseFilePath
withAppCode: (NSString*)appCode;
nil或错误信息 启动合成引擎
textDatFilePath 中文文本分析数据文件路径
speechDataPath 中文声学模型数据文件路径
licenseFilePath 授权文件路径,如果没有本地授权可传入nil
appCode 用户持有的授权app code

加载英文合成数据文件及模型文件

方法 参数 含义 返回 说明
-(NSError)loadEnglishDataForOfflineEngine: (NSString)textDataPath
speechData: (NSString*)speechDataPath;
nil或错误信息 加载英文合成数据文件及模型文件
textDataPath 英文文本分析数据文件路径
speechDataPath 英文声学模型数据文件路径

重新加载文本分析数据文件或者声学模型数据文件

方法 参数 含义 返回 说明
(NSError)reinitOfflineEngineData: (NSString)datFilePath; nil或错误信息 重新加载文本分析数据文件或者声学模型数据文件
datFilePath 数据文件路径

加载定制库

方法 参数 含义 返回 说明
(NSError)loadDomainDataForOfflineEngine:(NSString)datFilePath; nil或错误信息 加载定制库
datFilePath 数据文件路径

卸载定制库

方法 参数 返回 说明
(NSError*)unloadDomainDataFromOfflineEngine; nil或错误信息 卸载定制库

验证音库文件的有效性

方法 参数 含义 返回 说明
(BOOL)verifyDataFile: (NSString*) datFilePath error:(NSError**)err; 验证成功返回YES,验证失败返回NO 验证音库文件的有效性
datFilePath 数据文件路径
err 如果验证失败,返回错误信息

获取音库文件相关参数

方法 参数 含义 返回 说明
(BOOL)getDataFileParam: (NSString*)datFilePath
type: (TTSDataParam)paramType
value: (NSString)paramValue
error: (NSError)err;
成功返回YES
失败返回NO
获取音库文件相关参数
datFilePath 数据文件路径
paramType 参数键
paramValue 传出对应参数的值
err 如果失败, 返回错误信息

批量开始文本合成但不朗读或添加文本至当前合成过程

方法 参数 含义 返回 说明
(NSInteger)synthesizeSentence:(NSString*)sentence withError:(NSError**)err; SDK生成的文本ID,-1代表合成失败,错误信息详见err 批量开始文本合成但不朗读或添加文本至当前合成过程
sentence 需要语音合成的文本,不超过120的GBK字节,即60个汉字或英文字母数字。超过请自行按照句号问号等标点切分
err 如果失败, 返回错误信息

批量开始文本合成并朗读或添加文本至当前合成过程

方法 参数 含义 返回 说明
(NSInteger) speakSentence:(NSString*)sentence withError:(NSError**)err; SDK生成的文本ID,-1代表合成失败,错误信息详见err 批量开始文本合成并朗读或添加文本至当前合成过程
sentence 需要语音合成的文本,不超过120的GBK字节,即60个汉字或英文字母数字。超过请自行按照句号问号等标点切分
err 如果失败, 返回错误信息

取消本次合成并停止朗读

方法 参数 返回 说明
(void)cancel; 取消本次合成并停止朗读。

暂停文本合成并朗读

方法 参数 返回 说明
(BDSSynthesizerStatus)pause; 合成状态 暂停文本合成并朗读

继续文本合成并朗读

方法 参数 返回 说明
(BDSSynthesizerStatus)resume; 合成状态 继续文本合成并朗读

获取合成器状态

方法 参数 返回 说明
(BDSSynthesizerStatus)synthesizerStatus; 合成状态 获取合成器状态

设置播放器音量

方法 参数 含义 返回 说明
(void)setPlayerVolume:(float)volume; 设置播放器音量
volume 音量值

设置AudioSessionCategory类型

方法 参数 含义 返回 说明
(void)setAudioSessionCategory:(NSString *)category; 设置AudioSessionCategory类型
category AudioSessionCategory类型

语音合成器委托对象

语音合成器委托对象BDSSpeechSynthesizerDelegate,用来处理语音合成器的各种回调。

开始合成

方法 参数 含义 返回 说明
(void)synthesizerStartWorkingSentence:(NSInteger)SynthesizeSentence; 开始合成
SynthesizeSentence 句子序号

结束合成

方法 参数 含义 返回 说明
(void)synthesizerFinishWorkingSentence:(NSInteger)SynthesizeSentence engineType:(BDSSynthesizerEngineType)type; 结束合成
SynthesizeSentence 句子序号

开始朗读

方法 参数 含义 返回 说明
(void)synthesizerSpeechStartSentence:(NSInteger)SpeakSentence; 开始朗读
SynthesizeSentence 句子序号

结束朗读

方法 参数 含义 返回 说明
(void)synthesizerSpeechEndSentence:(NSInteger)SpeakSentence; 结束朗读
SynthesizeSentence 句子序号

新的语音数据已经合成

方法 参数 含义 返回 说明
(void)synthesizerNewDataArrived:(NSData *)newData
DataFormat:(BDSAudioFormat)fmt
characterCount:(int)newLength
sentenceNumber:(NSInteger)SynthesizeSentence;
新的语音数据已经合成
newData 语音数据
DataFormat 音频格式
newLength 语音数据长度
SynthesizeSentence 句子序号

播放进度变更

方法 参数 含义 返回 说明
(void)synthesizerTextSpeakLengthChanged:(int)newLength
sentenceNumber:(NSInteger)SpeakSentence;
播放进度变更
newLength 语音数据长度
SpeakSentence 句子序号

合成器发生错误

方法 参数 含义 返回 说明
(void)synthesizerErrorOccurred:(NSError *)error
speaking:(NSInteger)SpeakSentence
synthesizing:(NSInteger)SynthesizeSentence;
合成器发生错误
error 错误码
SpeakSentence 正在播放的句子序号
SynthesizeSentence 正在合成的句子序号

注:BDSSpeechSynthesizerParams.h 文件中包含了各类参数的使用说明,如果开发者想寻找一些功能的设置办法,请浏览该文件中的相关参数说明

语音合成器参数

合成参数

百度语音合成支持的参数用BDSSynthesizerParamKey类型表示,具体如下:

参数 含义
BDS_SYNTHESIZER_PARAM_SPEED 语速(如现有语速不能满足,需更高语速可提交需求工单或联系商务同学申请)
BDS_SYNTHESIZER_PARAM_PITCH 音调
BDS_SYNTHESIZER_PARAM_VOLUME 音量
BDS_SYNTHESIZER_PARAM_PID 产品号
BDS_SYNTHESIZER_PARAM_LANGUAGE 语言
BDS_SYNTHESIZER_PARAM_TEXT_ENCODE 文本编码类型
BDS_SYNTHESIZER_PARAM_AUDIO_ENCODING 音频编码类型
BDS_SYNTHESIZER_PARAM_SPEAKER 发音人
在线基础:0(普通女声)
1(普通男声)
3(磁性男声<度逍遥>)
4(可爱童声<度丫丫>)
在线精品:106(情感男声<度博文>)
110 (活泼童声<度小童>)
111 (可爱童声<度小萌>)
103(可爱童声<度米朵>)
5(情感女声<度小娇>)
5118(甜美女声<度小鹿>)
5003(磁性男声<度逍遥(精品)>)
更多在线发音人可点击音色列表
BDS_SYNTHESIZER_PARAM_USER_AGENT UA
BDS_SYNTHESIZER_PARAM_ONLINE_REQUEST_TIMEOUT 超时时间
BDS_SYNTHESIZER_PARAM_ETTS_AUDIO_FORMAT 音频格式
BDS_SYNTHESIZER_PARAM_ETTS_VOCODER_OPTIM_LEVEL 合成引擎速度优化等级
BDS_SYNTHESIZER_PARAM_SYNTH_STRATEGY 合成策略

合成模式设置接口BDS_SYNTHESIZER_PARAM_SYNTH_STRATEGY,模式设置接口见下表:

合成模式 参数
纯在线 TTS_MODE_ONLINE
纯离线 TTS_MODE_OFFLINE
在线优先 TTS_MODE_ONLINE_PRI
离线优先 TTS_MODE_OFFLINE_PRI

语音合成文本语言

语音合成文本语言用BDSSynthesizerLanguages类型表示,具体如下:

参数 含义
BDS_SYNTHESIZER_LANGUAGE_ZH 中文
BDS_SYNTHESIZER_LANGUAGE_EN 英文

语音合成文本编码格式

语音合成文本编码格式用BDSSynthesizerTextEncodings类型表示,具体如下:

参数 含义
BDS_SYNTHESIZER_TEXT_ENCODE_GBK GBK编码
BDS_SYNTHESIZER_TEXT_ENCODE_BIG5 大五码编码
BDS_SYNTHESIZER_TEXT_ENCODE_UTF8 UTF8编码

语音合成音频编码格式

不支持 mp3,支持AMR、OPUS。 语音合成音频编码格式用BDSSynthesizerAudioEncoding类型表示,具体如下:

参数 含义
BDS_SYNTHESIZER_AUDIO_ENCODE_BV_16K bv 16k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_6K6 amr 6.6k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_8K85 amr 8.85k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_12K65 amr 12.65k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_14K25 amr 14.25k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_15K85 amr 15.85k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_18K25 amr 18.25k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_19K85 amr 19.85k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_23K05 amr 23.05k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_23K85 amr 23.85k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_OPUS_8K opus 8k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_OPUS_16K opus 16k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_OPUS_18K opus 18k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_OPUS_20K opus 20k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_OPUS_24K opus 24k比特率
BDS_SYNTHESIZER_AUDIO_ENCODE_OPUS_32K opus 32k比特率

8.关于AVAudioSession

SDK默认会将AudioSession的Category设置为AVAudioSessionCategoryPlayback,并在必要的时候调用setActive接口对外部音频进行打断及恢复,如果开发者不希望SDK对AudioSession进行操作自己管理,可以通过参数配置接口,把BDS_SYNTHESIZER_PARAM_ENABLE_AVSESSION_MGMT对应的value设置为NO,即可屏蔽SDK内部的操作,按照需求,设置BDS_SYNTHESIZER_PARAM_AUDIO_SESSION_CATEGORY_OPTIONS自行配置AudioSession。


9.日志打印

如希望打印日志,可使用以下指令:

-(void)configureOnlineTTS{
    // 鉴权库初始化配置 ak、sk  协议代理初始化
    [AuthManager sharedInstance].temporaryTokenAndKeyDelegate = self;
    // 获取当前cuid
    // NSString *cuid = [[BDSSpeechSynthesizer sharedInstance] getCurrentCuid];
    // 语音合成SDK引擎日志级别 0 默认关闭  5 TTS全量日志  
    [BDSSpeechSynthesizer setLogLevel:BDS_PUBLIC_LOG_VERBOSE];
    // 开启鉴权库SDK日志开关 默认关闭 
    [AuthManager sharedInstance].isAuthLog = YES;
    // 鉴权sdk版本号打印
    NSLog(@"Current SDK version: %@", [[BDSpeechTTSBaseKit sharedInstance] getTTSLibVersion]);
    }

10.IOS错误码

合成常规错误码

返回错误码枚举名称 错误码 原因
ERR_ONLINE_TTS_FAILED_GET_ACCESS_TOKEN 14614527 token获取失败
ERR_OFFLINE_TTS_LICENSE_EXPIRED 13959158 离线鉴权过期无效
ERR_ONLINE_TTS_RESPONSE 14680061 在线合成请求失败
ERR_OFFLINE_ENGINE_NOT_LOADED 13828094 离线引擎未加载
ERR_OFFLINE_PARAM 13820094 离线参数配置错误
ERR_OFFLINE_ENGINE_LOAD_FAILED 13828095 离线引擎加载失败
ERR_DNS_FAILED 14680063 DNS解析失败
ERR_OFFLINE_SYNTHESIS_FAILED 13828092 离线合成失败
ERR_OFFLINE_DATA_FILE_VERIFY_FAIL 13820095 离线资源认证失败
ERR_NO_INTERNET 13172732 无网络
ERR_ENGINE_BUSY 13172733 合成引擎加载超时
ERR_TEXT_TOO_LONG 13172734 合成文本过长
ERR_ONLINE_TTS_AUTH_CREDENTIALS_NOT_SET 13172730 在线认证参数未设置
ERR_OFFLINE_DATA_FILE_DETAIL_NOT_FOUND 13820093 未找到离线引擎数据资源
ERR_OFFLINE_TTS_FAILED_GET_LICENSE 13959167 离线引擎获取鉴权失败
ERR_SDK_UNINIT 13164735 SDK未初始化
ERR_ONLINE_TTS_REQUEST 14680062 在线合成请求异常
ERR_OFFLINE_DATA_FILE_NOT_EXIST 13820096 离线数据或文件资源不存在
ERR_OFFLINE_ENGINE_MISSING_PARAM 13828093 离线引擎参数缺少指定参数
ERR_INVALID_PARAM 13164736 参数不合法
ERR_TEXT_TOO_SHORT 13172735 合成文本过短
上一篇
语音合成 Android SDK
下一篇
语音合成 HarmonyOS SDK