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

语音合成 iOS SDK

1. 文档说明

文档名称 语音合成集成文档
所属平台 iOS
提交日期 2024-03-04
概述 本文档是百度离线语音合成iOS SDK的用户指南,描述了离线语音合成SDK相关接口的使用说明。

2. 版本说明

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

2.1 版本升级改动点说明:

  • 提升SDK稳定性;
  • 离线发音人听感调优

3. SDK说明

文件名称 版本号 说明 类型
libBaiduSpeechSDK.a 2.4.3 语音合成SDK (和识别SDK同名如果同时集成2个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(需要离线系在纯离线合成SDK,不需要离线下载纯在线SDK),需要在Bundle Identifier中配置好包名。

ios-ttsdemo-3.png

4.2 修改鉴权信息

离线合成需要另外填写申请授权SN码,具体流程参考 语音技术 (baidu.com)

全集搜索 填写应用的鉴权信息

ios-ttsdemo-4.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后部署到指定目录(代码中启动合成引擎时需要指定该资源文件的访问路径)。根据具体需求引入不同的资源即可。

ios-ttsdemo-2.png

引入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 文件的问题

配置鉴权参数

离在线语音合成模式

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

纯离线语音合成模式

请参考configureOfflineTTS方法配置离线资源文件和鉴权。 调用

[[BDSSpeechSynthesizer sharedInstance] loadOfflineEngine:offlineTextData speechDataPath:offlineSpeechData licenseFilePath:**nil** withAppCode:APP_ID withSn:SN];

加载离线引擎。

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

SDK默认自带离线资源文件

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

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

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

资源文件 具体文件名
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_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_20211223.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之后版本无需重新初始化。

6. 相关授权文件

请将百度云控制台创建应用时获取的语音(APPID)、API/SECRET KEY 并填写包名。

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

引擎类型 验证方法
在线合成 开放平台使用API/SECRET KEY + APPID进行验证
离线合成 使用APPID+授权SN+包名首次联网自动下载授权文件进行验证

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 如果失败, 返回错误信息

设置认证信息

方法 参数 含义 返回 说明
(void)setApiKey:(NSString )apiKey withSecretKey:(NSString )secretKey; 设置认证信息
apiKey 用户从语音官网申请的apiKey
secretKey 用户从语音官网申请的secretKey

设置回调队列

方法 参数 含义 返回 说明
(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; 结束合成
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 正在合成的句子序号

8.参数及完整示例

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比特率

关于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。


完整示例

语音合成完整示例

   
-(void)configureOnlineTTS{
    
    [[BDSSpeechSynthesizer sharedInstance] setApiKey:API_KEY withSecretKey:SECRET_KEY];
    
    [[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[BDSSpeechSynthesizer sharedInstance] setSynthParam:@(0) forKey:BDS_SYNTHESIZER_PARAM_SPEAKER];
    
}

-(void)configureOfflineTTS{
    
    NSError *err = nil;
    // 在这里选择不同的离线音库(请在XCode中Add相应的资源文件),同一时间只能load一个离线音库。根据网络状况和配置,SDK可能会自动切换到离线合成。
    NSString* offlineEngineSpeechData = [[NSBundle mainBundle] pathForResource:@"Chinese_And_English_Speech_Female" ofType:@"dat"];
    
    NSString* offlineChineseAndEnglishTextData = [[NSBundle mainBundle] pathForResource:@"Chinese_And_English_Text" ofType:@"dat"];
    
    err = [[BDSSpeechSynthesizer sharedInstance] loadOfflineEngine:offlineChineseAndEnglishTextData speechDataPath:offlineEngineSpeechData licenseFilePath:nil withAppCode:APP_ID];
    if(err){
        [self displayError:err withTitle:@"Offline TTS init failed"];
        return;
    }
    [TTSConfigViewController loadedAudioModelWithName:@"Chinese female" forLanguage:@"chn"];
    [TTSConfigViewController loadedAudioModelWithName:@"English female" forLanguage:@"eng"];
}

-(void)test : {
    	// 获得合成器实例
    [[BDSSpeechSynthesizer sharedInstance] setSynthesizerDelegate:self];
	
	// 设置委托对象
	[[BDSSpeechSynthesizer sharedInstance] setSynthesizerDelegate:self];
	
	// 开始合成并播放
	NSError* speakError = nil;
	if([[BDSSpeechSynthesizer sharedInstance] speakSentence:@"您好" withError:&speakError] == -1){
		// 错误
		NSLog("错误: %ld, %@", (long)speakError.code, speakError.localizedDescription);
	}
	if([[BDSSpeechSynthesizer sharedInstance] speakSentence:@"今天天气真不错" withError:&speakError] == -1){
		// 错误
		NSLog("错误: %ld, %@", (long)speakError.code, speakError.localizedDescription);
	}
	if([[BDSSpeechSynthesizer sharedInstance] speakSentence:@"Today's weather is really good!" withError:&speakError] == -1){
		// 错误
		NSLog("错误: %ld, %@", (long)speakError.code, speakError.localizedDescription);
	}
}
	
	
	- (void)synthesizerStartWorkingSentence:(NSInteger)SynthesizeSentence
{
    NSLog(@"Began synthesizing sentence %ld", (long)SynthesizeSentence);
}

- (void)synthesizerFinishWorkingSentence:(NSInteger)SynthesizeSentence
{
    NSLog(@"Finished synthesizing sentence %ld", (long)SynthesizeSentence);
}

- (void)synthesizerSpeechStartSentence:(NSInteger)SpeakSentence
{
    NSLog(@"Began playing sentence %ld", (long)SpeakSentence);
}

- (void)synthesizerSpeechEndSentence:(NSInteger)SpeakSentence
{
    NSLog(@"Finished playing sentence %ld", (long)SpeakSentence);
}

9. IOS错误码

开始合成错误

开始合成错误用BDSStartSynthesisError类型表示,具体如下:

参数 含义
BDS_START_SYNTHESIS_OK 启动成功
BDS_START_SYNTHESIS_SYNTHESIZER_UNINITIALIZED 合成器未初始化
BDS_START_SYNTHESIS_TEXT_EMPTY 合成文本为空
BDS_START_SYNTHESIS_TEXT_TOO_LONG 和成文本过长
BDS_START_SYNTHESIS_ENGINE_BUSY 合成引擎繁忙
BDS_START_SYNTHESIS_MALLOC_ERROR 获取资源失败
BDS_START_SYNTHESIS_NO_NETWORK 无网络连接
BDS_START_SYNTHESIS_NO_VERIFY_INFO 无授权信息

合成错误(包含在线合成和离线合成错误)

合成错误用BDSSynthesisError类型表示,具体如下:

参数 含义
BDS_UNKNOWN_ERROR 未知错误
BDS_PLAYER_FAILED_GET_STREAM_PROPERTIES 获取流属性失败
BDS_PLAYER_FAILED_OPEN_DEVICE 打开设备失败
BDS_PLAYER_FAILED_OPEN_STREAM 打开流失败
BDS_PLAYER_ALLOC_FAIL 资源申请失败
BDS_PLAYER_BAD_STREAM 音频流错误
BDS_ONLINE_TTS_CONNECT_ERROR 在线连接错误
BDS_ONLINE_TTS_RESPONSE_PARSE_ERROR 在线解析错误
BDS_ONLINE_TTS_PARAM_ERROR 在线参数错误
BDS_ONLINE_TTS_TEXT_ENCODE_NOT_SUPPORTED 文本编码格式不支持
BDS_ONLINE_TTS_VERIFY_ERROR 在线鉴权错误
BDS_ONLINE_TTS_GET_ACCESS_TOKEN_FAILED 获取token失败
BDS_ETTS_ERR_PARTIAL_SYNTH 离线部分合成错误
BDS_ETTS_ERR_CONFIG 离线配置错误
BDS_ETTS_ERR_RESOURCE 离线资源错误
BDS_ETTS_ERR_HANDLE 离线句柄错误
BDS_ETTS_ERR_PARMAM 离线参数错误
BDS_ETTS_ERR_MEMORY 离线内存错误
BDS_ETTS_ERR_TOO_MANY_TEXT 离线文本过长
BDS_ETTS_ERR_RUN_TIME 离线运行时错误
BDS_ETTS_ERR_NO_TEXT 离线空文本错误
BDS_ETTS_ERR_LICENSE 离线授权错误

10. 权限

名称 用途
Privacy - Microphone Usage Description 获取麦克风权限播放

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

不使用离线合成,只使用在线合成,可以单独下载纯在线合成sdk https://ai.baidu.com/download?sdkId=116

文件(夹)名 说明 备注
BDSClientLib 在线语音合成SDK Lib库,支持simulator和iOS设备。 必须引入
BDSClientSample 开发示例(xcode project)

删除离线资源文件,并configureOnineTTS设置合成策略为TTS_MODE_ONLINE

ios-ttsdemo-2.png

上一篇
语音合成 Android SDK
下一篇
常见问题