本地语音合成(iOS V2)

1、概述

    DUI Lite SDK 离线TTS可使在无网的情况下,提供将文字信息转化为声音信息的能力,方便您更流畅的体验合成音,给您的应用程序增加“嘴巴”功能,更趋近于人。您仅仅需要将下载的SDK嵌入到工程项目中,就可以流畅的获取从文字输入到语音输出的支持。另外,我们也提供了具有特色的发音人(若需要定制,可联系商务),给您带来更好的享受。如果希望语音输出内容更富有感情,可以在对话回复中为回复内容添加 SSML标签

2、SDK使用说明

    使用当前功能时,请先授权,否则禁止使用。授权模块使用请参照DUI Lite 2.0 -- 授权模块

3、引擎运行流程图

 

4、示例代码

4.1 初始化

self.localTTSEngine = [AILocalTTSEngine shareInstance];
AILocalTTSConfig *mLocalTTSConfig = [[AILocalTTSConfig alloc]init];
NSString *frontBinFile = [[NSBundle mainBundle] pathForResource:@"local_front.bin" ofType:nil];


NSString *backBinPath = [[NSBundle mainBundle] pathForResource:@"zhilingf_common_back_ce_local.v2.1.0.bin" ofType:nil];
NSString *dictResource = [[NSBundle mainBundle] pathForResource:@"aitts_sent_dict_local.db" ofType:nil];
mLocalTTSConfig.frontBinResource = frontBinFile;
mLocalTTSConfig.dictResource = dictResource;
mLocalTTSConfig.backBinPath = backBinPath;
mLocalTTSConfig.useCache = NO;
mLocalTTSConfig.enableOptimization = NO;
[self.localTTSEngine initEngineWithConfig:mLocalTTSConfig delegate:self];

4.2 开始合成

AILocalTTSIntent *mIntent = [[AILocalTTSIntent alloc]init];
mIntent.speed = 1.0f;
mIntent.volume = 50;
[self.localTTSEngine speak:mIntent refText:self.refTextView.text utteranceId:@""];

4.3 暂停播放

[self.localTTSEngine pauseSpeak];

4.4 继续播放

[self.localTTSEngine continueSpeak];

4.5 停止播放

[self.localTTSEngine stopSpeak];

4.6 合成相关回调

#pragma mark - TTSDelegate 代理方法
/**
* 注册回调方法,当合成引擎加载完毕后回调
*
* @param status 初始化状态
*/
- (void)onTTSInit:(int)status {
 
}


/**
* 注册回调方法,当开始播放时回调
*/
- (void)onTTSSpeechStart {
  
}


/**
* 注册回调方法,当播放完成时回调
*/
- (void)onTTSSpeechFinish {
    
}


/**
* 注册回调方法,当发生错误时回调
*
* @param error 错误信息
*/
- (void)onTTSError:(AIError *)error {
  
}


/**
* 合成开始的回调
*/
- (void)onTTSSynthesizeStart {
 
}


/**
* 合成数据
* @param audioData 合成数据
*/
- (void)onTTSSynthesizeDataArrived:(NSData *)audioData {


}


/**
* 合成完成的回调
*/
- (void)onTTSSynthesizeFinish {
 
}

4.7 销毁引擎

[self.localTTSEngine releaseEngine];
self.localTTSEngine = nil;
[AILocalTTSEngine deallocInstance];