iOS旧
一、 离线TTS SDK介绍
DUI的离线语音合成(Text to Speech,TTS)可使在无网的情况下,提供将文字信息转化为声音信息的能力,方便您更流畅的体验合成音,给您的应用程序增加“嘴巴”功能,更趋近于人。您仅仅需要将下载的SDK嵌入到工程项目中,就可以流畅的获取从文字输入到语音输出的支持。另外,我们也提供了具有特色的发音人(若需要定制,可联系客服),给您带来更好的享受。
二、SDK使用说明
在使用DUI离线TTS的SDK时,请先授权,否则禁止使用。
2.1 参数与配置
在使用合成功能之前,请您先配置这些选项。
注意:如在控制台已调试好合成音语速speed,请先取倒数,再放到SDK中配置
参数名 | 取值 | 说明 | 是否必须 | 默认值 |
---|---|---|---|---|
delegate | 对象 | 设置回调的对象 | 必须 | N/A |
refText | 字符串文本 | 设置须要合成的文本 | 必须 | N/A |
frontBinFile | 字符串文本 | 设置离线合成引擎front资源路径 | 必须 | N/A |
resBinFile | 字符串发音人资源绝对路径 | 设置发音人资源路径 | 必须 | N/A |
reDBFile | 字符串合成资源绝对路径 | 设置TTS资源路径 | 必须 | N/A |
speed | float型 | 设置播放语速,范围是[0.7, 2],取值越小语速越快 | 非必须 | 1.0 |
volume | float型 | 设置音量大小,范围是[1, 100],取值越大音量越大 | 非必须 | 50.0 |
onlyTTS | 字符串 true/false | 设置为true,仅支持合成,可使用外部播放器;设置为false,支持内置播放器 | 非必须 | false |
2.2 合成音数据参考
消耗参考
字符总数 | 中文字符总数 | 英文字符总数 | 中文标点总数 |
---|---|---|---|
244 | 219 | 9 | 16 |
数据参考
类型 | 内容 |
---|---|
合成文本 | "苏州思必驰信息科技有限公司是一家语音技术公司,专注于将领先的系列智能语音技术应用于移动互联、智能设备、客户联络中心等行业。公司的中文名字是思必驰,思想必将驰骋,寓意着公司孤立自由的思想,以创新为本。同时这个名字还是英文单词Speech的音译,同样代表了公司立足智能语音技术行业的决心。而推出的DUI平台是国内首个以对话为核心的一站式交互定制平台,覆盖多应用场景和第三方内容资源,内置国内最专业语音技能库,为物联网、移动互联网和互联网的开发者,提供单项技术服务和一站式对话交互定制解决方案。" |
格式 | PCM |
数据大小 | 1741.98kb |
2.3 使用Log测试服务
使用Log测试请先在程序入口处调用如下代码,打开Log开关。
Log开关设置
[DUILiteAuth setLogEnable:YES];
2.4 初始化
使用以下方法来初始化SDK:
初始化
//创建离线合成引擎
@property (nonatomic, strong) AISLocalTTSPlayer* player;
//设置音频策略
- (void)setAudioConfig{
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
}
//引擎初始化,配置相关参数
-(void)initTTS{
NSMutableDictionary *authConfigDic = [[NSMutableDictionary alloc] init];
[authConfigDic setObject:@"xxxxxxxxxx" forKey:K_PRODUCT_ID];
[authConfigDic setObject:@"xxxxxxxxx" forKey:K_USER_ID];
[authConfigDic setObject:@"xxxxxxxxxxxx" forKey:K_API_KEYS];
[authConfigDic setObject:@"xxxxxxxxxx" forKey:K_PRODUCT_KEYS];
[authConfigDic setObject:@"xxxxxxxxxx" forKey:K_PRODUCT_SECRET];
[DUILiteAuth setAuthConfig:self config:authConfigDic];
//创建语音合成实例(必须有强引用)
if (!self.player) {
self.player = [[AISLocalTTSPlayer alloc] init];
}
//设置资源路径
NSString *frontBinFile = [[NSBundle mainBundle] pathForResource:@"local_front.bin" ofType:nil];
NSString *resBinFile = [[NSBundle mainBundle] pathForResource:@"zhilingf_common_back_ce_local.v2.1.0.bin" ofType:nil];
NSString *resDBFile = [[NSBundle mainBundle] pathForResource:@"aitts_sent_dict_local.db" ofType:nil];
self.player.frontBinFile = frontBinFile;
self.player.resBinFile = resBinFile;
self.player.resDBFile = resDBFile;
//设置协议委托对象
self.player.delegate = self;
//设置合成参数
self.player.refText = @"苏州思必驰信息科技有限公司";
self.player.speed = 1.0;
self.player.volume = 50;
}
//实现回调:
-(void)onAISLocalTTSInitStart{
NSLog(@"%@, 本地合成开始", TAG);
}
//合成完成
-(void)onAISLocalTTSInitCompletion{
NSLog(@"%@, 本地合成完成", TAG);
}
//播放开始
-(void)onAISLocalTTSPlayStart{
NSLog(@"%@, 本地播放开始", TAG);
}
//播放完成
-(void)onAISLocalTTSPlayCompletion{
NSLog(@"%@, 本地播放完成", TAG);
}
//音频数据
-(void)onAISLocalTTSAudioData:(NSData *)data{
NSLog(@"%@, 音频数据", TAG);
}
//错误
-(void)onAISLocalTTSError:(NSString *)error{
NSLog(@"%s error = %@",__FUNCTION__,error);
}
2.5 功能列表
2.5.1 启动合成引擎,等待播放
引擎启动接口
[self.player startTTS];
2.5.2 关闭合成引擎,结束播报、合成
引擎关闭接口
[self.player stopTTS];
2.5.3 暂停合成引擎,暂停播放
引擎暂停接口
[self.player pauseTTS];
2.5.4 恢复合成引擎,继续播放
引擎恢复接口
[self.player continueTTS];
2.5.5 释放合成引擎
释放引擎接口
[self.player releaseTTS];
2.6 错误码描述
error id | 描述 | 解决办法 |
---|---|---|
070940 | local tts dictionary path is nil | 检查参数resDBFile设置是否正确 |
070941 | local tts informant path is nil | 检查参数resBinFile设置是否正确 |
070942 | local tts refText is nil | 检查参数refText设置是否正确 |
070943 | local tts wtk core feed text failed | 合成失败,请联系客服 |
070944 | local tts wtk core start engine failed | 合成引擎启动失败,请联系客服 |
070945 | local tts wtk core new engine failed | 合成引擎创建失败,请联系客服 |
070946 | local tts play audio failed | 播放器音频失败,联系客服 |
070947 | local tts front bin path is nil | 检查参数frontBinFile设置是否正确 |