短文本合成iOS SDK
下载安装
SDK及示例demo下载地址: https://github.com/data-baker/BakerIosSdks
系统: iOS 9.0 以上;
架构: arm 64 ,i386
XCode集成Framework(参考demo)
Pod 方式集成:
Pod ‘DBAudioSDK/DBOnlineTTSKit ‘ ,’xxx’ ; ‘xxx’是SDK的版本号;
- 手动导入资源文件,资源目录如下图,具体可参照demo
- 在viewController中引用SDK的头文件
#import ”DBSynthesizerManager.h“// 合成器的头文件
-
实例化DBSynthesizerManager
实例化DBSynthesizerManager对象,设置授权信息:a.公有化设置clientId和clientSecret;b.私有化设置url;具体可参考demo;
备注:本sdk提供两种功能,1:处理在线合成的功能,称为合成功能;2.处理在线合成+播放器功能,称为合成播放功能;
- 设置回调代理对象
// 1.合成功能回调 _synthesizerManager.delegate = self; // 2.合成播放功能 _synthesizerManager.playerDelegate = self;
SDK关键类
- DBSynthesizerManager.h:语音合成关键业务处理类,需要注册自己为该类的回调对象;
- DBSynthesizerManagerDelegate:为DBSynthesizerManager的回调协议;
- DBSynthesisPlayerDelegate:为播放器的合成回调协议,需要播放功能的需要遵守该协议;
- DBSynthesizerRequestParam.h:设置合成需要的相关参数,按照如下的接口文档设置即可;
- DBFailureModel.h:请求异常的回调类,包含错误码,错误信息,和错误的trace_id;
- DBTTSEnumerate.h:sdk全局的错误枚举类;
调用说明
- 初始化DBSynthesizerManager类,得到DBSynthesizerManager的实例。
- 设置DBSynthesizerRequestParam合成参数,包括必填参数和非必填参数;
- 调用[DBSynthesizerManager startPlayNeedSpeaker:YES]方法开始与云端 服务连接,如果设置为NO仅调用合成功能;
- 在业务完全处理完毕,或者页面关闭时,调[self.synthesizerManager cancel]结束服务,释放资源;
- 播放器相关属性;
/// 合成播放器的回调 @property(nonatomic,weak)id <DBSynthesisPlayerDelegate> delegate; /// 当前的播放进度 @property(nonatomic,assign,readonly)NSInteger currentPlayPosition; /// 音频总长度 @property(nonatomic,assign,readonly)NSInteger audioLength; /// 当前的播放状态 @property(nonatomic,assign,readonly,getter=isPlayerPlaying)BOOL playerPlaying;
参数说明
基本参数说明:
参数 | 参数名称 | 是否必填 | 说明 |
---|---|---|---|
clientId | clientId | 是 | 初始化sdk的clientId |
clientSecret | clientSecret | 是 | 初始化sdk的clientSecret |
setText | 合成文本 | 是 | 设置要转为语音的合成文本 |
setDelegate | 数据回调方法 | 是 | DBSynthesizerDelegate:合成器回调 |
setPlayerDelegate | 播放回调方法 | 否 | DBSynthesisPlayerDelegate播放器回调 |
setVoice | 发音人 | 是 | 设置发音人声音名称,默认:标准合成_模仿儿童_果子 |
setLanguage | 合并文本语言类型 | 否 | 中文(zh),英文(eng),粤语(cat),四川话(sch),天津话(tjh),台湾话(tai),韩语(kr),巴葡语(bra),日语(jp),西班牙西语(ESP) ,墨西哥西语(MEX),维吾尔语(UYG) |
setSpeed | 语速 | 否 | 设置播放的语速,在0~9之间(支持浮点值),不传时默认为5 |
setVolume | 音量 | 否 | 设置语音的音量,在0~9之间(只支持整型值),不传时默认值为5 |
setPitch | 音调 | 否 | 设置语音的音调,取值0-9,不传时默认为5 |
setAudioType | 返回数据文件格式 | 否 |
可不填,不填时默认为4
audiotype=4 :返回16K采样率的pcm格式 audiotype=5 :返回8K采样率的pcm格式 |
spectrum | 合成频谱 | 否 |
取值范围0~20;不传时默认为不调整频谱; 值为0代表使用配置文件tts_attention.conf中spec_adjust_d的值; 1代表不调整频谱; 1以上的值代表高频能量增加幅度,值越大声音的高频部分增强越多,听起来更亮和尖细 |
spectrum_8k | 8K的合成频谱 | 否 | 取值范围0~20;不传时默认为0,仅针对8K音频频谱的调整。 |
enable_subtitles | 字级别的时间戳 | 否 |
字级别时间戳功能,同interval=”1”一起使用: '0':关闭字级别时间戳功能 '1':开启字级别时间戳功能 详细使用方法参考语音合成时间戳 |
silence | 标点符号静音时长 | 否 |
设置标点符号静音时长: '0':默认值 '1':句中标点停顿较短,适合直播、配音解说等场景 '2':句中标点停顿较长,适合朗诵、教学等场景 |
回调类方法说明
DBSynthesizerManagerDelegate 回调类方法说明:
参数 | 参数名称 | 说明 |
---|---|---|
onSynthesisStarted | 开始合成 | 开始合成 |
onPrepared | 准备就绪 | 第一帧数据返回时的回调,此时可以使用数据执行播放。 |
onBinaryReceived | 流式持续返回数据的接口回调 |
data 合成的音频数据。
audioType 音频类型,如pcm。 interval 音频interval信息,可能为空。 interval_x音频interva_x信息,可能为空 endFlag是否时最后一个数据块,false:否,true:是。 |
onSynthesisCompleted | 合成完成 | 当onBinaryReceived方法中endFlag参数=true,即最后一条消息返回后,会回调此方法。 |
onTaskFailed | 合成失败 | 返回msg内容格式为:{"code":40000,"message":"…","trace_id":" 1572234229176271"} trace_id是引擎内部合成任务ID。 |
DBSynthesisPlayerDelegate回调方法说明:
参数 | 参数名称 | 说明 |
---|---|---|
readlyToPlay | 播放器准备就绪 | 此时可以调起播放器进行播放 |
playFinished | 播放完成 | 播放结束回调 |
playPausedIfNeed | 播放暂停 | 播放暂停回调 |
playResumeIfNeed | 播放继续 | 播放开始回调 |
updateBufferPositon | 更新播放缓存进度 | 播放器缓存进度回调 |
playerFaiure | 合成失败,以及播放器处理失败的回调 | 返回错误码和错误信息,如果是合成器错误会返回traceId |
错误码
失败时返回的msg格式:
参数名称 | 类型 | 描述 |
---|---|---|
code | string | 错误码 |
message | string | 错误描述 |
trace_id | string | 引擎内部合成任务id(之后服务器错误会有) |
对应code值:
错误码 | 含义 |
---|---|
11190001 | 缺少ClientId |
11190002 | 缺少Secret |
11190003 | token获取失败 |
11190004 | 参数未设置 |
11190005 | 合成⽂本内容为空 |
11190006 | 发⾳⼈参数错误 |
11190007 | 解析错误 |
11190008 | 链接服务器失败 |
10001 | access_token参数获取失败或未传输 |
10002 | domain参数值错误 |
10003 | language参数错误 |
10004 | voice_name参数错误 |
10005 | audiotype参数错误 |
10006 | rate参数错误 |
10007 | idx错误 |
10008 | single错误 |
10009 | text参数错误 |
10010 | 文本太长 |
20000 | 获取资源错误 |
20001 | 断句失败 |
20002 | 分段数错误 |
20003 | 分段后的文本长度错误 |
20004 | 获取引擎链接错误 |
20005 | RPC链接失败错误 |
20006 | 引擎内部错误 |
20007 | 操作redis错误 |
20008 | 音频编码错误 |
30000 | 鉴权错误(access_token值不正确或已经失效) |
30001 | 并发错误 |
30002 | 内部配置错误 |
30003 | json串解析错误 |
30004 | 获取url失败 |
30005 | 获取客户IP地址失败 |
30006 | 任务队列错误 |
40001 | 请求不是json结构 |
40002 | 缺少必须字段 |
40003 | 版本错误 |
40004 | 字段值类型错误 |
40005 | 参数错误 |
50001 | 处理超时 |
50002 | 内部rpc调用失败 |