3D数字人交互SDK-iOS版
更新时间:2025-05-29
简介
本文说明SDK的集成使用以及接口调用方式
整体架构&功能简介
- 客户端或页面集成SDK加载形象包,本地驱动渲染数字人。
- 支持音频和文本驱动:
- 音频可以使用真人音频或自行接入的第三方的TTS音频。
- 文本驱动SDK内部会调用数字人开放平台TTS服务驱动数字人,
- 文本驱动可以开启智能动作开关,实现数字人根据播报语义智能触发动作。
- 3D数字人形象包可切换机位,动作驱动,切换配饰服装(如有多套配置服装)

下载地址
| 版本号 | 下载地址 | 更新时间 | SDK包体大小 |
|---|---|---|---|
| 2.0.0.4 | 下载地址 | 2025.01.13 | 6mb(不包含人像包大小) |
形象定制(使用公共形象可以跳过)
1、形象包制作:分为“定制形象”和“公共库形象”两种。
- 定制形象
用户提供设计原画或已经建模好的3D人物模型。为保证人物模型可以被端渲染SDK驱动使用,百度侧进行人像模型适配,预计需要3-4周时间。人像适配过程中允许用户调整和修改,确保人像符合用户需求。
- 公共形象库
用户从公共形象库中选择心仪的形象,公共形象参考本文最后《附件.公共人像库》。
形象定制及适配费用相关问题,可咨询:咨询单
一、SDK接入和集成
1.1、将下载得到的framework文件和a文件在framework,librarties,and embedded content中进行导入

1.2、添加以下系统库
| Framework | 描述 |
|---|---|
| libc++.tbd | 提供对C/C++特性支持 |
| GLKit.framework | GL支持 |
| OpenGLES.framework | OpenGL 支持 |
| libicucore.tbd | |
| libz.tbd | 提供gzip支持 |
| libnetwork.tbd | 提供网络支持 |
1.3、在工程中配置如下参数
1.3.1、将 API Validation 取消选中

1.3.2、将other Linker Flages 设置为-ObjC

1.3.3、库引用地址

1.4、资源文件导入
1.4.1、license 文件资源导入(必须作为资源导入, 否则授权则不成功, 如果有新的授权文件则更新到license 文件夹下)
license需要额外申请, 提供Bundle Identifier 给到百度方,用于生成license文件

1.4.2、人像资源导入 (可自定义地址, 初始化时传入自定义地址即可, 地址获取至case目录)

1.5、SDK性能要求
支持机型信息:
- 安卓:支持CPU骁龙730G/骁龙855/联发科天玑900/天玑820 同等性能及以上芯片
- iOS : 支持iPhone8 系统版本13.3以及以上。
二、SDK 调用以及API 说明
2.1、初始化
Plain
1- (instancetype)initWithFrame:(CGRect)frame andARVSSettings:(DigitalHumanARVSSettings *)settings
| 参数 | 含义 | 是否必填 | 备注 |
|---|---|---|---|
| frame | 数字人view显示坐标 | 是 | |
| settings | 加载ar数字人、babel、render 的配置信息 | 是 | 参数参考DigitalHumanARVSSettings 模块 |
DigitalHumanARVSSettings 参数
| 参数 | 含义 | 是否必填 | 备注 |
|---|---|---|---|
| appId | 应用的appID | 是 | 咨询百度支持人员 |
| appKey | 应用的appKey | 是 | |
| realmName | tts合成域名 | 是 | |
| arParams | ar数字人配置参数 | 是 | 参考arParams 参数 |
| renderEngine | render播报配置参数 | 是 | 参考renderEngine 参数 |
arParams 参数
| 参数 | 含义 | 是否必填 | 备注 |
|---|---|---|---|
| modelPath | 模型地址 | 是 | |
| figure | 人像名称 | 是 | |
| camera | 机位 | 是 | |
| deviceType | 渲染等级 | 是 | 低端机:iPhone_Low 中端机:iPhone_Middle 高端机:iPhone_Heavy |
| licenseName | 授权文件名称 | 是 | 咨询百度支持人员 |
| licenseKey | 授权key | 是 |
renderEngine参数
| 参数 | 含义 | 备注 |
|---|---|---|
| renderToken | token | |
| characterlmage | 人像id | 用于标识人像,目前只用于开启智能动作功能 |
| autoAnimoji | 是否开启智能动作匹配 | YES: 开启 NO: 不开启 开启条件: autoAnimoji = YES 且characterlmage 为有效值则打开, 否则无法生效 |
| ttsParams | tts参数 | 示例:{@"person":@5116,@"pitch":@5,@"speed":@5} |
调用示例
Plain
1_cloudView = [[DigitalHumanARVSView alloc] initWithFrame:self.view.frame andARVSSettings:_dhSettings];
2 _cloudView.delegate = self;
3 _cloudView.backgroundColor = [UIColor clearColor]; // 初始化时设置背景为透明
4 [self.view addSubview:_cloudView];
2.2、获取版本信息
Plain
1+ (NSString *)version
调用示例
Plain
1[DigitalHumanARVSView version]
2.3、数字人暂停
Plain
1- (void)pause
调用示例
Plain
1[_cloudView pause];
2.4、数字人继续
Plain
1- (void)resume
调用示例
Plain
1[_cloudView resume];
2.5、render播放相关接口
2.5.1、文本播报
Plain
1- (void)sendTextRender:(NSString *)message
| 参数 | 含义 | 是否必填 | 备注 |
|---|---|---|---|
| message | 播报文本 | 是 |
调用示例
Plain
1[_cloudView sendTextRender:text];
2.5.2、音频文件播报
Plain
1- (void)sendAudioStream:(NSString *)input
| 参数 | 含义 | 是否必填 | 备注 |
|---|---|---|---|
| input | 音频文件路径 | 是 | 当使用LITE版克隆音色及公共音色库中支持多语言的音色时,支持自动识别输入语言来进行播报。例:当输入俄文时,使用俄语播报。 |
调用示例
Plain
1NSString *micPath = [[NSBundle mainBundle] pathForResource:@"asr_0501-iPhone13Promax-lijiaqi_kongtiao_mic_01" ofType:@"pcm" inDirectory:@"dhResources"];
2 [_cloudView sendAudioStream:micPath];
2.6、打断
Plain
1- (void)interrupt
调用示例
Plain
1[_cloudView interrupt];
2.7、播放动作
Plain
1- (void) playAnim:(NSString *) animName
| 参数 | 含义 | 是否必填 | 备注 |
|---|---|---|---|
| animName | 播报动作ID | 是 |
调用示例
Plain
1[_cloudView playAnim:_animationList[_animationIndex]];
2.8、设置idle
Plain
1- (void) setArIdle
调用示例
Plain
1[_cloudView setArIdle];
2.9、更新render参数
Plain
1-(void) updateRenderParams:(RenderEngine *) renderEngine;
| 参数 | 含义 | 是否必填 | 备注 |
|---|---|---|---|
| renderEngine | 合成相关参数 | 是 |
renderEngine
| 参数 | 含义 | 备注 |
|---|---|---|
| renderToken | token | 不更新token 项无需调用 |
| ttsParams | tts参数 | 不更新tts 项无需调用,调用示例:{@"person":@5116,@"pitch":@5,@"speed":@5} |
调用示例
Plain
1RenderEngine * renderEngine = self.dhSettings.renderEngine;
2 // 更新token
3 renderEngine.renderToken = [DHLanAES generateAuthorizationTokenWithAppId:self.dhSettings.appId appKey:self.dhSettings.appKey expirationTime:1];
4 // 更新tts参数
5 NSDictionary *tts = @{
6 @"person":@5116,
7 @"pitch":@5,
8 @"speed":@5,
9 };
10 renderEngine.ttsParams = tts;
11 [_cloudView updateRenderParams:renderEngine];
2.10、切换机位
Plain
1- (void)changeCamera:(NSString*) camParam
| 参数 | 是否必填 | 含义 |
|---|---|---|
| camParam | 是 | 机位ID |
调用示例
Plain
1[_cloudView changeCamera:_cameraData[0]];
2.11、销毁
Plain
1- (void)destroy
调用示例
Plain
1[_cloudView destroy];
2.12、DigitalHumanARVSDelegate
Plain
1/**
2 数字人sdk状态变化回调
3
4 @param event 状态名称
5 @param data 根据状态的不同,绑定的其他数据
6 */
7@required
8- (void)onDigitalHumanARVSEventUpdate:(DigitalHumanARVSEvent)event obj:(id __nullable)data;
| 参数 | 含义 | 备注 |
|---|---|---|
| onDigitalHumanARVSEventUpdate | sdk状态变化回调 | 参数参考DigitalHumanARVSEvent 模块 |
DigitalHumanARVSEvent 参数
| 参数 | 含义 | 备注 |
|---|---|---|
| DH_ARVS_LIB_OPEN | 初始化完成 | |
| DH_ARVS_LIB_ERROR | 数字人执行错误 | |
| DH_ARVS_LIB_LICENSE | 授权状态 | 数字人授权状态 |
| DH_ARVS_LIB_AR_RENDERING | 获取数字人 | 后台返回数字人页面触发 |
| DH_ARVS_LIB_AR_PAUSE | 暂停数字人 | 退出至后台触发 |
| DH_ARVS_LIB_CLOSED | 关闭销毁数字人 | |
| DH_ARVS_LIB_AVATAR_ANIMATION | 获取可执行动作列表 |
2.13、DigitalHumanARVSRenderDelegate
Plain
1/**
2 播报状态变化回调
3
4 @param event 状态名称
5 @param data 根据状态的不同,绑定的其他数据
6 */
7@protocol DigitalHumanARVSRenderDelegate <NSObject>
8
9-(void)onDigitalHumanRenderEventUpdate:(QueryEventStatus) event obj:(id __nullable)data;
QueryEventStatus 参数
| 参数 | 含义 | 备注 |
|---|---|---|
| RENDER_START | 开始播放 | |
| RENDER_INTERRUPT | 播放打断 | |
| RENDER_FINISH | 播放结束 | |
| RENDER_ERROR | 播放错误 | |
| SUBTITLE | 播报内容 | 音频驱动无播报内容, 忽略此字段 |
附件. 公共人像库
| 人像 | 人像包 |
|---|---|
| Yuki | https://meta-human-editor-prd.bj.bcebos.com/open-api/yuki_双端_250117-3.zip |
