口型驱动使用独立的SDK模块,FUAvatarSpeechService内部会进行鉴权及初始化工作(资源配置如下)。驱动提供三种驱动方式:1、时间戳方式(输入时间戳即可驱动口型)2、音频+文本方式(输入音频+文本驱动口型)3、纯音频方式(输入音频驱动口型)这三种方式都有对应的配置文件,初始化时可根据业务进行配置。
互动模块参考流程:1. 用户输入文本或音频 ----> 2. 经过内部ASR/NLP/TTS解析得到输入内容的答案(包括音频和时间戳) ----> 3.输入数据查询口型(SDK) ----> 4.使用播放器播放输出的音频(可自定义) ----> 5.输入当前播放进度进行口型渲染(SDK)
ASR:语音识别,是将声音转化成文字的过程。
NLP:自然语言处理,是理解和处理文本的过程
TTS:语音合成,是把文本转化成语音的过程
资源位于Resource/STA文件夹下,主要有以下五个文件:
defaultBSConfig.bin:形象对应的口型配置文件。
data_decoder.bin: 中英文解码配置文件,使SDK具有时间戳驱动口型的能力,按需加载。
data_asr.bin: 语音识别功能配置文件,使SDK具有音频驱动口型的能力,按需加载。
data_align.bin: 语音对齐功能配置文件,使SDK具有文本驱动口型的能力,按需加载。
alignmap.bin: 文本驱动口型模式的特殊词汇映射,按需加载。
我们已经封装了FUAvatarSpeechService可实现简单的口型驱动功能。
1. 初始化
// 懒加载方式,FUAvatarSpeechService内部init方法会调用
2. 销毁
[[FUAvatarSpeechService shareService] destroy];
3. 进入口型驱动模块
// 进入口型驱动控制器时需要调用
[[FUAvatarSpeechService shareService] enterAvatarSpeech];
4. 退出口型驱动模块
[[FUAvatarSpeechService shareService] exitAvatarSpeech];
5. 对话播报(输入为文本)
[[FUAvatarSpeechService shareService] dialogWithText:@"输入文本" voiceName:@"音色ID" nlpCallback:^(NSError * _Nonnull error, NSString * _Nonnull nlpText) {// NLP解析完成
} broadcastBeginHandle:^(NSError * _Nonnull error) {// 播报开始
} broadcastComplteHandle:^(NSError * _Nonnull error, BOOL isCanceled) {// 播报完成
}];
6. 对话播报(输入为语音)
[[FUAvatarSpeechService shareService] dialogWithAudio:@"输入音频" voiceName:@"音色ID" asrCallback:^(NSError * _Nonnull error, NSString * _Nonnull asrText) {// ASR解析完成
} nlpCallback:^(NSError * _Nonnull error, NSString * _Nonnull nlpText) {// NLP解析完成
} broadcastBeginHandle:^(NSError * _Nonnull error) {// 播报开始
} broadcastComplteHandle:^(NSError * _Nonnull error, BOOL isCanceled) {// 播报完成
}];
7. 取消播报
// 建议每次播报前调用
[[FUAvatarSpeechService shareService] cancelBroadcast];