本地语音合成(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设置是否正确