You need to enable JavaScript to run this app.
文档中心
图像生成大模型

图像生成大模型

复制全文
下载 pdf
实时互动数字人SDK
实时互动数字人 iOS SDK-接口文档
复制全文
下载 pdf
实时互动数字人 iOS SDK-接口文档
1. 集成指南​
1.1 环境要求​
  • 系统:最低支持 iOS 12.0​
1.2 组件依赖​
使用 CocoaPods 集成 SDK。在 Podfile 中添加如下依赖:​
​
source 'https://cdn.cocoapods.org/'​
source 'https://github.com/volcengine/volcengine-specs.git'​
​
target 'YourTargetName' do​
pod 'BDAvatarKitToB', '{LATEST_VERSION}'​
​
# 依赖的其他第三方组件​
pod 'SocketRocket', '0.6.1'​
pod 'VolcEngineRTC', '3.60.103.5000', :subspecs => ['Core', 'RealXBase', 'RTCFFmpeg']​
end​
​
说明:我们在BDAvatarKit.podsspec中已经包含了SocketRocket和VolcEngineRTC的依赖,但是并未锁定特定版本,我们推荐你在Podfile中指定版本,以确保一致性和兼容性。​
  • 对于VolcEngineRTC,我们推荐你指定版本为3.60.103.5000​
  • 对于SocketRocket,我们推荐你指定版本为0.6.1​
如果你项目使用的版本与我们推荐的版本不一致,你需要与对应的组件提供商确认兼容性,并进行完整的测试。​
1.3 权限声明​
由于 SDK 需要进行语音交互,请在工程的 Info.plist 中添加使用麦克风的权限说明:​
​
<key>NSMicrophoneUsageDescription</key>​
<string>需要访问您的麦克风以用于语音交互</string>​
​
​​
2. 调用流程​
2.1 创建BDAvatarKit SDK实例​
调用数字人服务,你首先需要创建BDAvatarKit SDK实例,通常而言,一个应用只需要创建一个实例。我们推荐你将这个实例作为单例持有,以确保全局唯一性。SDK实例负责管理全局信息,如会话认证、日志记录、事件通知等。​
认证方式说明​
SDK 支持三种认证方式:​
​
认证方式​
适用场景​
需要配置​
时效性​
刷新接口​
WSS Token​
无需 AK/SK 的场景(推荐)​
wssToken​
短期有效​
updateWssToken:​
永久 AK/SK​
长期有效的 AppKey/SecretKey​
appKey + secretKey​
长期有效​
无需刷新​
临时 AK/SK + STS​
使用临时凭证的场景​
appKey + secretKey + stsToken​
短期有效​
updateTempAKSKWithAppKey:secretKey:stsToken:​
​
推荐使用 WSS Token 认证方式,无需暴露 AK/SK,安全性更高。​
认证方式示例​
方式一:WSS Token 认证(推荐,短期有效)​
不需要 AK/SK,直接使用 WSS Token 进行认证。安全性更高,无需暴露密钥。WSS Token 有过期时间,需要在过期前刷新。WSS Token由后端生成,通过接口下发到客户端。文末我们提供了一个WSS Token生成的示例代码:wss_token_volc.zip,供参考。​
​
BDAvatarKitConfig *config = [[BDAvatarKitConfig alloc] init];​
config.wssToken = @"your_wss_token";​
config.environment = BDAvatarEnvironmentCN; // BDAvatarEnvironmentOversea 用于海外环境​
config.logDelegate = self;​
​
BDAvatarKit *avatarKit = [[BDAvatarKit alloc] initWithConfig:config];​
​
// wssToken 过期前调用更新接口​
[avatarKit updateWssToken:@"new_wss_token"];​
​
方式二:永久 AK/SK 认证(长期有效)​
使用长期有效的 AppKey/SecretKey,无需刷新。​
长期有效的 AppKey/SecretKey 获取方式请参考 获取AccessKey、SecretKey。​
​
BDAvatarKitConfig *config = [[BDAvatarKitConfig alloc] init];​
config.appKey = @"your_app_key";​
config.secretKey = @"your_secret_key";​
config.environment = BDAvatarEnvironmentCN; // BDAvatarEnvironmentOversea 用于海外环境​
config.logDelegate = self;​
​
BDAvatarKit *avatarKit = [[BDAvatarKit alloc] initWithConfig:config];​
​
方式三:临时 AK/SK + STS Token 认证(短期有效)​
使用临时凭证的场景,必须配置 stsToken。三者具有相同的过期时间,需要一起刷新。​
临时AK/SK/STS Token 获取方式请参考 获取临时密钥(STS)。​
​
BDAvatarKitConfig *config = [[BDAvatarKitConfig alloc] init];​
config.appKey = @"temp_app_key";​
config.secretKey = @"temp_secret_key";​
config.stsToken = @"your_sts_token";​
config.environment = BDAvatarEnvironmentCN;​
config.logDelegate = self;​
​
BDAvatarKit *avatarKit = [[BDAvatarKit alloc] initWithConfig:config];​
​
// 凭证过期前一起刷新​
[avatarKit updateTempAKSKWithAppKey:@"new_temp_app_key"​
secretKey:@"new_temp_secret_key"​
stsToken:@"new_sts_token"];​
​
Token 刷新说明​
对于使用临时 AK/SK + STS Token 或 WSS Token 的场景,凭证具有时效性。为确保后续连接顺利,请在凭证过期前调用对应的更新接口:​
  • 更新临时 AK/SK + STS:[avatarKit updateTempAKSKWithAppKey:secretKey:stsToken:]​
  • 更新 WSS Token:[avatarKit updateWssToken:]​
更新后的凭证将在下次创建会话时生效,不会影响当前正在进行的会话。​
2.2 创建数字人会话​
BDAvatarSession实例,表示一个数字人会话,每个会话对应一个数字人实例。你需要通过BDAvatarKit实例的avatarSessionWithConfig:方法创建会话。​
示例代码如下:​
​
BDAvatarSession *session = [avatarKit avatarSessionWithConfig:sessionConfig];​
​
2.3 启动数字人会话​
会话创建成功以后,调用startSession方法开启会话。并通过delegate属性设置会话代理,以接收会话相关的事件通知。​
示例代码如下:​
​
​
[session startSession];​
session.delegate = self;​
​
监听会话启动和结束事件:​
​
- (void)avatarSessionDidStart:(BDAvatarSession *)session {​
// 会话启动成功​
}​
​
- (void)avatarSessionDidEnd:(BDAvatarSession *)session withError:(nullable NSError *)error {​
// 会话结束(包括正常结束和错误结束)​
if (error) {​
// 会话结束,错误信息​
} else {​
// 会话结束,无错误​
}​
}​
​
2.4 设置数字人视图​
为会话设置渲染视图画布,你需要创建UIView实例用于渲染数字人视频流,并且在会话启动成功以后,调用setAvatarVideoCanvas:renderMode:方法,以显示数字人实例的视频流。​
示例代码如下:​
​
- (void)avatarSessionDidStart:(BDAvatarSession *)session {​
// 会话启动成功​
​
// 设置渲染视图画布​
[session setAvatarVideoCanvas:avatarRenderView renderMode:mode];​
}​
​
2.5 语音交互​
会话启动成功以后,你可以调用startAudioCapture方法开始采集麦克风输入与数字人交互。SDK内部会启动音频采集并将其发送到数字人服务进行交互。​
会话期间,你可以调用stopAudioCapture方法停止采集,调用startAudioCapture方法重新开始采集。​
示例代码如下:​
​
- (void)avatarSessionDidStart:(BDAvatarSession *)session {​
// 会话启动成功​
​
// 开始采集麦克风输入​
[session startAudioCapture];​
}​
​
2.6 结束会话​
不需要时调用endSession方法结束会话,释放会话资源。​
示例代码如下:​
​
[session endSession];​
session = nil;​
​
3. 接口详情​
3.1 BDAvatarKitConfig (SDK实例创建配置)​
SDK 初始化配置类。​
​
属性​
类型​
描述​
appKey​
NSString​
App Key,用于 AK/SK 认证​
secretKey​
NSString​
Secret Key,用于 AK/SK 认证​
stsToken​
NSString​
STS Token,临时 AK/SK 场景必须配置​
wssToken​
NSString​
WSS Token,无需 AK/SK 时使用​
logDelegate​
id<BDAvatarLogDelegate>​
日志代理​
eventDelegate​
id<BDAvatarEventDelegate>​
事件代理​
environment​
BDAvatarEnvironment​
环境类型(0:国内环境,1:海外环境),默认国内​
extraDict​
NSDictionary​
额外参数​
​
认证方式选择规则:​
  • 同时配置 appKey 和 secretKey 时,使用 AK/SK 认证(优先)​
  • 使用临时 AK/SK 时,必须同时配置 stsToken​
  • 仅配置 wssToken 时,使用 WSS Token 认证​
3.2 BDAvatarKit (SDK实例)​
SDK 的核心管理类。​
initWithConfig:​
初始化 BDAvatarKit 实例。​
  • 参数: config - BDAvatarKitConfig 对象。​
  • 说明: 最佳实践是在应用程序的生命周期中创建一个实例并将其作为单例使用。初始化后大部分配置属性变为不可变,仅认证凭证可通过专用方法更新。​
avatarSessionWithConfig:​
通过配置创建数字人会话实例。​
  • 参数: config - BDAvatarSessionConfig 对象。​
  • 返回值: 返回一个初始化的 BDAvatarSession 实例。​
updateTempAKSKWithAppKey:secretKey:stsToken:​
更新临时 AK/SK 凭证及 STS Token。​
  • 参数:​
  • appKey - 新的临时 App Key​
  • secretKey - 新的临时 Secret Key​
  • stsToken - 新的 STS Token​
  • 说明: 适用于临时 AK/SK 认证场景,三者需一起刷新。更新后的凭证在下次创建会话时生效,不影响当前会话。​
updateWssToken:​
更新 WSS Token。​
  • 参数: wssToken - 新的 WSS Token,传 nil 清除。​
  • 说明: 适用于 WSS Token 认证场景,Token 过期前调用此方法更新。更新后的 Token 在下次创建会话时生效,不影响当前会话。​
3.3 BDAvatarSessionConfig (会话配置)​
数字人会话相关的参数配置。​
avatarImageUrl为数字人形象图片的https URL,推荐的图片比例为16:9或者4:3。speaker 为数字人音色,支持的参数参考如下文档:音色列表​
其中SC 2.0版本和O 2.0版本的音色皆支持。​
​
属性​
类型​
描述​
是否必填​
avatarImageUrl​
NSString​
数字人形象图片 https URL​
必填​
speaker​
NSString​
发音人标识​
必填​
userPrompt​
NSString​
用户提示词​
选填​
speechRate​
NSInteger​
输出语音的语速,范围 [-50, 100],默认为 0​
选填​
loudnessRate​
NSInteger​
输出语音的音量,范围 [-50, 100],默认为 0​
选填​
enableWebsearch​
BOOL​
是否开启网页搜索,默认为 NO​
选填​
extraParams​
NSDictionary​
额外参数字典​
选填​
actionList​
NSArray<NSString *>​
数字人循环动作列表​
选填​
​
支持的动作列表​
actionList 支持的动作标识符如下:​
​
聆听(不说话) - 自然呼吸​
聆听(不说话) - 小动作-整理头发​
聆听(不说话) - 开心​
聆听(不说话) - 惊讶​
开场 - 招手​
开场 - 双手合十​
开场 - 整理仪态​
感谢礼物与打赏 - 双手并拢比心​
感谢礼物与打赏 - 起立致敬​
感谢礼物与打赏 - 双手捂嘴感动​
感谢礼物与打赏 - 单手竖起大拇指​
感谢礼物与打赏 - 双手竖起大拇指​
引导关注与点赞 - 手指上方引导​
引导关注与点赞 - 手指下方引导​
引导关注与点赞 - 比"1"​
情绪调节与氛围 - 比耶(V手势)​
情绪调节与氛围 - 单手托下巴​
情绪调节与氛围 - 捂嘴笑​
情绪调节与氛围 - 嘟嘟嘴​
情绪调节与氛围 - 凑近镜头​
情绪调节与氛围 - 摸摸头​
情绪调节与氛围 - 比出嘘​
情绪调节与氛围 - 隔空"飞吻"气流​
情绪调节与氛围 - 开心笑​
情绪调节与氛围 - 整理衣服​
情绪调节与氛围 - 双手欢呼​
情绪调节与氛围 - 双手托脸​
情绪调节与氛围 - OK 手势​
情绪调节与氛围 - 嘘​
其他 - 悲伤(低头摇晃)​
其他 - 扶额​
其他 - 无聊​
复位 - 复位​
​
3.4 BDAvatarSession (会话管理)​
管理单个数字人会话的生命周期、渲染和麦克风控制。​
delegate​
  • 类型: id<BDAvatarSessionDelegate>​
  • 说明: 代理回调,用于接收生命周期及音频事件回调。注意:回调可能不会在主线程执行。​
startSession​
  • 说明: 启动数字人会话。​
endSession​
  • 说明: 结束数字人会话。​
setAvatarVideoCanvas:renderMode:​
  • 参数:​
  • view (UIView): 用于渲染数字人视频的视图。传入 nil 取消画布。​
  • renderMode (BDAvatarRenderMode): 渲染模式,包含以下枚举:​
  • BDAvatarRenderModeHidden (1): 铺满视图,视频多出部分将被裁剪(默认)。​
  • BDAvatarRenderModeFit (2): 视频完全显示,空白部分填充背景色。​
  • BDAvatarRenderModeFill (3): 拉伸视频以铺满视图,可能导致比例改变。​
  • 说明: 设置数字人视频渲染画布及模式。​
startAudioCapture / stopAudioCapture​
  • 说明: 启动 / 停止本地麦克风的音频采集。​
3.5 BDAvatarSessionDelegate (代理协议)​
继承自 BDAvatarSessionLifeCycleDelegate 与 BDAvatarSessionAudioCaptureDelegate。​
生命周期回调​
  • - (void)avatarSessionDidStart:(BDAvatarSession *)session;​
  • 会话成功启动。​
  • - (void)avatarSessionDidEnd:(BDAvatarSession *)session withError:(nullable NSError *)error;​
  • 会话结束(包含主动请求结束或发生错误导致结束)。​
音频采集回调​
  • - (void)avatarSessionDidStartAudioCapture:(BDAvatarSession *)session;​
  • 本地麦克风录音成功启动。​
  • - (void)avatarSessionDidStopAudioCapture:(BDAvatarSession *)session;​
  • 本地麦克风录音已停止。​
  • - (void)avatarSession:(BDAvatarSession *)session didAudioCaptureFailed:(NSError *)error;​
  • 本地麦克风录音发生错误(启动失败或运行中报错)。​
  • - (void)avatarSession:(BDAvatarSession *)session didRecordAudioFrame:(BDAvatarAudioFrame *)audioFrame;​
  • 本地麦克风录音的音频帧数据回调。​
​​
4. 示例代码​
  • ExampleToB_Volc.zip​
​
​
ExampleToB_Volc.zip
​
​
  • wss_token_volc.zip​
​
​
wss_token_volc.zip
​
​
​
最近更新时间:2026.08.13 11:21:43
这个页面对您有帮助吗?
有用
有用
无用
无用