离在线合成iOS SDK
Xcode集成lib(参考demo)
1.兼容性说明:
iOS系统: iOS 9.0及以上;
架构⽀持:arm64及以上;
Bitcode设置:Enable Bitcode 设置为NO;
离线设备消耗说明: 一个bundleId会认为是一个设备
体验地址
普通版的体验demo地址:下载离线普通版
精品版的体验demo地址:下载离线精品版
依赖库说明
Sdk的接口分为普通版和精品版的接口,SDK的使用流程一致,配置方法存在细微差别,分别为:设置合成类型,离线资源,具体可以参考体验demo。
1.1依赖库
普通版的依赖库
依赖库 | 集成方式 | 使用说明 |
DBMixTTS3SDK.framework | Target->Build Setting->Search Paths -> Library Search Paths, 增加$(inherited) + 库的相对路径 | tts合成引擎依赖库 |
tts-framework.a | ||
libc++.tbd | Target -> Build Phases -> Link Binary With Libraries 添加libc++.tbd 库 | 系统C++依赖库 |
精品版的依赖库
依赖库 | 集成方式 | 使用说明 |
libprotobuf.a | Target->Build Setting->Search Paths -> Library Search Paths, 增加$ (inherited) + 库的相对 (DBTTSMix_3.0/depency_github ) | tts合成引擎依赖库 |
libtts-framework.a | ||
TensorFlowlite.framework | Target-> Build Setting ->SearchPaths -> Framework Search Paths,增加$(inherited) + framework的相对路径($(PROJECT_DIR)/DBTTSMix_3.0/depency_github) | tts合成引擎依赖库 |
libc++.tbd | Target -> Build Phases -> Link Binary With Libraries 添加libc++.tbd 库 | 系统C++依赖库 |
DBMixTTS3SDK.framework | 拖⼊⼯程,选择”copy Item to Project” | 离在线融合framework库 |
1.2依赖资源
普通版依赖的公共资源
依赖资源 | 集成方式 | 使用说明 |
tts_entry_1.0.0_release_front_chn_eng_ser.dat | 拖入到工程,选择“Copy Item to Project” | 合成引擎的前端文件 |
tts_entry_1.0.0_release_back_chn_eng_hts_bb_f4180623_jm3_fix.dat | 合成引擎的后端文件 |
精品版依赖的公共资源
依赖资源 | 集成方式 | 使用说明 |
tts_attn.conf | 拖⼊到⼯程,选择 “Copy Item to Project” | 合成引擎依赖库 |
tts_attention.json | ||
tts_entry_1.0.0_release_front_chn_eng_ser.dat | 合成引擎的前端⽂件 | |
tts_entry_1.0.0_release_back_chn_eng_hts_bb_f4180623_jm3_fix.dat | 合成引擎的后端⽂件 |
本SDK提供两种功能:
1.仅⽀持离在线合成,即通过sdk能获取合成的语⾳数据不⽀持播放;
2.⽀持离在线合成播放功能:即在第⼀种的功能上还⽀持播放;
项⽬架构及背景说明:
SDK关键类
1.DBMixSynthesizer:语⾳合成关键业务处理类,全局只需⼀个实例即可,并且 需要注册⾃⼰为该类的回调对象;
2.DBSynthesizerRequestParam:在线合成参数类,设置合成需要的相关参数, 按照如下的接⼝⽂档设置即可;
3.DBTTSEnumerate:sdk枚举类,包含sdk中⽤到的⼀些状态枚举包含错误码之 类的说明;
4. DBSynthesisPlayerDelegate: 合成播放的代理回调;
5. DBSynthesizerDelegate : 合成的代理回调;
调⽤说明
1.引⼊SDK的header⽂件
#import <DBMixtTTS3SDK/DBMixSynthesizer.h>
2.设置鉴权
SDK的鉴权分为两种,在线鉴权和离线鉴权,在线鉴权和离线鉴权是相互独⽴的,鉴权和 设置合成的模式会影响最终能使⽤的功能,具体参照下表;
a.)离线合成鉴权
a).设置离线合成的鉴权,传⼊离线的clientId 和clientSecret,鉴权成功后返回结果;
b).设置在线合成的鉴权,传⼊在线的clientId 和clientSecret,鉴权成功会返回token;
3.设置鉴权示例
- (void)offlineSetupClientId:(NSString *)offClientId clientSecret:(NSString *)offClientSecret ttsModel:(tts_model)ttsModel messageHander:(DBMessagHandler)messageHandler;
说明:
offClientId: 离线ClientId
offClientSecret:离线offClientSecret
ttsModel:tts_model_2表示普通版,tts_model_3表示精品版
messageHandler:回调鉴权的结果
4.设置离线引擎的声码器和发⾳⼈列表
- (NSInteger)setDataPath:(NSString *)dataPath frontPath:(NSString *)frontPath voiceArray:(NSArray<DBOfflineSpeechModel*> *)voiceArray;
设置此⽅法会初始化合成引擎,只有初始化引擎后才能设置合成参数,在线合成参数和离线合成参数都需要先初始化合成引擎;
dataPath: 为后端模型;
frontPath: 为前端模型;
voiceArray: 为离线发⾳⼈列表;
5.设置离线合成参数
设置离线合成的参数
a).设置离线合成的⾳量(0-9);
B).设置离线合成的语速(0-9);
6.设置在线合成参数
A).设置在线合成的参数,在线合成的参数是通过对象进⾏配置的,需要传⼊token(token信息为鉴权成功后通过回调返回到),发⾳⼈(参照在线授权的发⾳⼈列表),语速(0-9),⾳量(0-9)等信息;
7.设置回调代理
a).DBSynthesizerDelegate 合成的回调;
处理合成的回调结果,包含开始合成,⾸包返回,合成完成等事件;
b).DBSynthesisPlayerDelegate 合成播放的回调;
合成播放的回调,包含准备播放,开启播放,播放暂停,播放完成的事件;
8.开启合成
Demo提供有按照标点符号进⾏切割的⽅法,切割⻓度是由⽤户⾃⾏决定,默认为200个字数的⻓度,切割完⽂本后,开启合成;
9.播放控制
仅需要播放器的时候才需要处理播放的控制;
⽀持三种播放的模式,a.停⽌合成和播放; b.暂停播放; c.继续播放
参数说明
4.1合成公共参数说明
参数 | 参数名称 | 是否必填 | 说明 |
---|---|---|---|
networkThreshold | ⽹络模式 | 否 | ⽀持纯在线,纯离线,离在线模式,默认为离在线模式 |
bufferDataLenght | ⾳频数据缓存的程度,单位KB | 否 | 仅在⽀持播放器的⻓⽂本合成的情况下使⽤,默认为100KB |
DBSynthesizerDelegate | 仅离线合成的回调 | 是 | 仅⽀持离线合成设置该回调 |
DBSynthesisPlayerDelegate | 离线合成+播放的回调 | 是 | ⽀持离线合成播放的功能设置该回调 |
onlineClientId | clientId | 是 | 在线合成的clientId |
onlineClientSecret | clientSecret | 是 | 在线合成的clientSecret |
offlineClientId | clientId | 是 | 离线合成的clientId |
offlineClientSecret | clientSecret | 是 | 离线合成的clientSecret |
setDataPath:frontPath:voiceArray; | dataPath, frontPath, voiceArray | 是 | DataPath离线合成引擎后端的数据模型,不需要修改;frontPath:离线合成引擎前端的数据模型,不需要修改;VoiceArray:声⾳数组; |
4.2在线合成参数设置
参数 | 参数名称 | 是否必填 | 说明 |
---|---|---|---|
setSpeaker | 发⾳⼈ | 是 | 开放平台授权的发⾳⼈列表 |
setAudioType | 返回数据⽂件格式 | 否 | 仅⽀持 PCM 16K 的设置 |
language | 语⾔ | 否 | 合成请求⽂本的语⾔,⽬前⽀持ZH(中⽂和中英混)和ENG(纯英⽂,中⽂部分不会合成),默认:ZH,更多⾳⾊参考官⽹ |
speed | 语速 | 否 | 设置播放的语速,在0~9之间(⽀持浮点值),不传时默认为5 |
volume | ⾳量 | 否 | 设置语⾳的⾳量,在0~9之间(只⽀持整型值),不传时默认值为5 |
pitch | 声调 | 否 | 设置语⾳的⾳调,取值0-9,不传时默认为5中语调 |
timeOut | 超时时间 | 否 | 连接超时时间,会根据该时间设置在线连接超时,如果超时,会进行离线切换,如果不支持离线合成会报错提示(默认5s) |
rate | 码率 | 否 | 码率:可不填,不填时默认为2,取值范围1-8,配合audioType 使⽤ |
audioType | 采样率 | 否 | 采样率: 16K 的采样率 |
4.3离线合成参数设置
参数 | 参数名称 | 是否必填 | 说明 |
---|---|---|---|
setSpeaker | 发⾳⼈ | 是 | 发⾳⼈对应的序号 |
setAudioType | 返回数据⽂件格式 | 否 | 仅⽀持 PCM 16K 的设置 |
DBSynthesizerParamKeyLanguage | 语⾔类型 | 否 | 默认传5-中英混 |
DBSynthesizerParamKeyVolume | ⾳量 | 否 | 默认5,范围0-9 |
DBSynthesizerParamKeySpeed | 语速 | 否 | 默认5,范围0-9 |
4.4 DBSynthesizerDelegate 回调类⽅法说明
参数 | 参数名称 | 说明 |
---|---|---|
onSynthesisStarted | 开始合成 | 开始合成 |
onBinaryReceived | 流式持续返回数据的接⼝回调 | data 合成的⾳频数据;audioType ⾳频类型,如pcm,wav。interval ⾳频interval信息,为空。endFlag 是否时最后⼀个数据块,false:否,true:是。 |
onSynthesisCompleted | 合成完成 | 当onBinaryReceived⽅法中endFlag参数=true,即最后⼀条消息返回后,会回调此⽅法。 |
onPrepared | 收到⾸包数据 | 合成的第⼀帧的数据已经得到,可以在此开启播放功能 |
onTaskFailed | 合成失败 | 返回msg内容格式为:{"code":40000,"message":"…","trace_id":" 1572234229176271"} trace_id是引擎内部合成任务ID。 |
4.5 DBSynthesisPlayerDelegate 回调类⽅法说明
参数 | 参数名称 | 说明 |
---|---|---|
readlyToPlay | 播放器准备就绪 | 此时可以调起播放器进⾏播放 |
playFinished | 播放完成 | 播放结束回调 |
playPausedIfNeed | 播放暂停 | 播放暂停回调 |
playResumeIfNeed | 播放继续 | 播放开始回调 |
playerCallBackFaiure | 播放器出错 | 播放失败的回调 |
playerNeedSynthesizerText:playerCanBuffer | 播放器当前已合成的数据⻓度 | 回调播放器当前待合成的⽂本数,和已经合成的⾳频数据⻓度 |
错误说明
5.1失败时返回的msg格式
参数名称 | 类型 | 描述 |
---|---|---|
code | int | 错误码9xxxx表示SDK相关错误,5xxxx授权及其他错误,token 过期 |
message | string | 错误描述 |
trace_id | string | 引擎内部合成任务id |
5.2 对应code值:
错误码 | 含义 |
---|---|
23190001 | 合成SDK初始化失败 |
23190002 | 合成⽂本内容为空 |
23190003 | 参数格式错误 |
23190004 | 返回结果解析错误 |
23190005 | 合成失败,失败信息相关错误。 |
231900006 | 离线授权没有授权信息 |
23190007 | 离线授权的设备ID不⾜ |
23190008 | 离线授权设备的总数超过限制 |
23190009 | ⽹络请求失败 |
23190010 | 获取token失败 |
23190011 | 没有授权的相关信息 |
23190012 | 没有授权的模型⽂件 |
23190013 | 授权的模型⽂件不匹配 |
23190014 | 在线合成中途报错 |
2xxx | 合成的引擎报错,xxx代表数字 |