数字人火热潮,哪些行业可以用到数字人,怎么用呢?
数字人(Digital Human)是通过建模等多种数字智能技术创建,具备人类外观形象、声音语言、肢体动作或思维功能,并能在大模型支撑下,形成学习、生成、互动等功能的数字智能体(AI Agent)。未来的创新目标是向仿真人脑智能发展,现有的应用都旨在辅助人类,这决定了数字人是与人工智能高度契合的智能体,既是人工智能的理想输出形式,也是引入数字人应用的有效入口。
数字人可以运用在哪些行业?
在中国互联网协会主办的2024首届中国数字人大会中,中国互联网协会正式发布《中国数字人发展报告(2024)》《中国数字人应用场景荟萃(2024)》及《中国数字人产业生态图谱(2024)》,为数字人行业的发展提供指导和参考。
《中国数字人发展报告(2024)》深入探讨了数字人技术的快速演进及其广泛的应用前景。报告强调了数字人的定义:数字人(Digital Human)是通过建模等多种数字智能技术创建,具备人类外观形象、声音语言、肢体动作或思维功能,并能在大模型支撑下,形成学习、生成、互动等功能的数字智能体(AI Agent)。长远来看,它还会根据需求不断衍生出更多多形态智能体。
报告指出,人工智能技术基于网络技术,涵盖算力层、平台层、模型层和应用层。未来的创新目标是向仿真人脑智能发展,现有的应用都旨在辅助人类,这决定了数字人是与人工智能高度契合的智能体,既是人工智能的理想输出形式,也是引入数字人应用的有效入口。生成式人工智能(AIGC)的出现是推动数字人产业创新的关键,改变了传统的数字人制作和运营模式,大幅提升了生产效率,推动产业进入规模化发展。
为了展示中国数字人应用的实际成果,中国互联网协会从2021年开始组织数字人精品秀活动,已连续举办四届。通过对历史应用数据的统计分析,总结了24类数字人应用细分场景,初步形成了媒介人、行业人三大类别,三类数字人呈现出叠加发展的态势。媒介数字人从广播阶段进入互动阶段,数字人从导引类进入咨询阶段,行业企业数字人正起步进入辅助阶段。
基于以上研究,中国互联网协会联合业界绘制了《中国数字人应用场景荟萃(2024)》。展示了100个不同应用场景,媒介数字人已全面成熟,场景数量占比50%,凭借逼真的形象和流畅的语言表达,极大提升了信息传播的互动性与趣味性。数字人也实现了全面升级,具备了更强的交互能力,场景数量占比30%,广泛应用于政务、电商、金融等领域。行业数字人则开始萌芽,场景数量占比20%,逐步在医疗、教育和企业管理中发挥作用。
近期,网易云信正式对外发布了基于IM+AI、RTC+AI 底层技术的“融合通讯+AI”。
实现了将多种 AI 技术与社交场景进行深度融合,并将社交开场话术、聊天话题推荐、一键回复对话、交友技巧建议等多种 AI 功能融入中。
同时,支持 AI 陪伴社交,AI 陪伴支持为动漫角色、小说等 IP 创建智能体,让每个角色都有其独特的性格和背景故事。开发者只需要集中对应的 SDK,即可以为自己的应用接入信息秒回、不会失联、7×24h 情感陪伴、随时提供情绪价值的虚拟数字人。本文将以 iOS 集成的工程实现为例,采用“手把手”教学的方式,让开发者方便、快速接入。
最后,给大家准备了干货合集,想要了解更多详情可以 ✉LTT936
《网易数智年度技术精选合集》
《2023泛娱乐出海白皮书》
《2023年全球即时通讯(IM)PaaS市场洞察白皮书》
前期准备
2. 登录网易云信后台创建账号和 App,获取 Appkey2. 通过(http://163.lu/FfWJVb1)获取加入RTC 房间的token。
新项目集成
1. pod引入需要的库创建一个新项目,在终端 cd 到项目目录下,执行 pod init 创建 podfile 文件,在 podfile 文件里面添加要引入的 NERtcSDK。pod 'NERtcSDK', '5.6.40'
2. 引入头文件,进行 SDK 初始化
#import <NERtcSDK/NERtcSDK.h>NERtcEngine *coreEngine = [NERtcEngine sharedEngine];NERtcEngineContext *context = [[NERtcEngineContext alloc] init];
// 设置通话相关信息的回调 context.engineDelegate = self;
// 设置当前应用的appKey#warning 这里输入appkey 加入房间可以随便输入房间id和uid context.appKey = @"";
NERtcLogSetting *setting = [[NERtcLogSetting alloc] init]; setting.logLevel = kNERtcLogLevelInfo; context.logSetting = setting;
[coreEngine setupEngineWithContext:context];
3. 加入房间初始化之后,就可以加入 RTC 房间。
NSInteger req = [NERtcEngine.sharedEngine joinChannelWithToken:@"" channelName:self.ridTf.text myUid:self.uidTf.text.longLongValue completion:^(NSError * _Nullable error, uint64_t channelId, uint64_t elapesd, uint64_t uid) {
if (error) {NSLog(@"=== %@", error.localizedDescription); }
NSLog(@"=== $加入房间结束");if (error) {NSLog(@"加入房间失败"); } else {NSLog(@"加入房间成功"); }
weakSelf.cId = [NSNumber numberWithLongLong:channelId];
}];
这里保存下加入房间之后的房间 id channelId,后续调用接口使 AI 虚拟人离开房间要用到这个参数。
4. 开启实时字幕调用 setParameters 方法
NSMutableDictionary* params = [NSMutableDictionary dictionary]; [params setObject:@(YES) forKey:@"sdk.enable.asr.caption"]; [[NERtcEngine sharedEngine] setParameters:params];
NSMutableDictionary* params1 = [NSMutableDictionary dictionary]; [params1 setObject:@"" forKey:@"sdk.private.api.request.asr.caption"]; [[NERtcEngine sharedEngine] setParameters:params1];
5.关闭实时字幕调用 setParameters 方法关闭实时字幕
NSMutableDictionary* params = [NSMutableDictionary dictionary]; [params setObject:@(NO) forKey:@"sdk.enable.asr.caption"]; [[NERtcEngine sharedEngine] setParameters:params];
NSMutableDictionary* params1 = [NSMutableDictionary dictionary]; [params1 setObject:@"" forKey:@"sdk.private.api.request.asr.caption"]; [[NERtcEngine sharedEngine] setParameters:params1];
6.AI数字人加入房间通过请求接口(https://doc.yunxin.163.com/nertc/server-apis/jQzOTE2NTc?platform=server)使 AI 数字人加入当前 RTC 房间,cname 传当前加入房间时候传的 cname。
- (void)joinRtcRoomTaskWithConfig:(NSDictionary *)config callback:(id<TaskCallback>)callback {// 设置请求 URLNSURL *url = [NSURL URLWithString:@"https://rtc-ai.netease.im/ai/task/create"];
// 构建请求体(JSON 格式)NSMutableDictionary *dataDict = [NSMutableDictionary dictionary];
dataDict[@"llm"] = @{@"llmVendor": @2, @"role": @1, @"contextSize": @1}; dataDict[@"tts"] = @{@"ttsVendor": @4, @"language": @"Chinese", @"gender": @"Female"}; dataDict[@"asr"] = @{@"asrVendor": @1};
NSDictionary *requestBody = @{@"cname": @"1234567",@"taskType": @7,@"data": dataDict };
NSError *error;NSData *jsonData = [NSJSONSerialization dataWithJSONObject:requestBody options:0 error:&error];
if (error) {if ([callback respondsToSelector:@selector(onError:)]) { [callback onError:@"Error creating JSON body"]; }return; }
// 创建请求NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request setHTTPMethod:@"POST"]; [request setValue:@"自己的appkey" forHTTPHeaderField:@"AppKey"]; [request setValue:@"1234567" forHTTPHeaderField:@"Cname"]; [request setValue:@"123" forHTTPHeaderField:@"Uid"]; [request setValue:@"前期准备获取到的rtc房间token" forHTTPHeaderField:@"Token"]; [request setHTTPBody:jsonData];
// 创建会话并发送请求NSURLSession *session = [NSURLSession sharedSession];NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {if (error) {if ([callback respondsToSelector:@selector(onError:)]) { [callback onError:error.localizedDescription]; }return; }
// 解析响应数据NSError *jsonError;NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
if (jsonError) {if ([callback respondsToSelector:@selector(onError:)]) { [callback onError:@"Error parsing response"]; }return; }
// 检查返回的 code 是否是 200NSInteger code = [jsonResponse[@"code"] integerValue];if (code == 200) {NSString *taskId = jsonResponse[@"result"][@"taskId"];if ([callback respondsToSelector:@selector(onSuccess:)]) { [callback onSuccess:taskId]; } } else {if ([callback respondsToSelector:@selector(onError:)]) { [callback onError:[NSString stringWithFormat:@"Error: %@", jsonResponse[@"message"]]]; } } }];
// 启动请求 [dataTask resume];}
7.AI数字人离开房间
通过请求接口(https://doc.yunxin.163.com/nertc/server-apis/jQzOTE2NTc?platform=server)使数字人离开当前 RTC 房间,cid 传当前加入房间时候返回的 channelId,taskId 传 AI 数字人加入当前房间接口返回的taskId。
- (void)leaveRtcRoomTaskWithConfig:(NSDictionary *)config callback:(id<TaskCallback>)callback {// 设置请求 URLNSURL *url = [NSURL URLWithString:@"https://rtc-ai.netease.im/ai/task/close"];
// 构建请求体(JSON 格式)NSMutableDictionary *requestBody = [NSMutableDictionary dictionary]; [requestBody setObject:config[@"cid"] forKey:@"cid"]; [requestBody setObject:@"自己的appkey" forKey:@"appkey"]; [requestBody setObject:config[@"taskId"] forKey:@"taskId"]; [requestBody setObject:@7 forKey:@"taskType"]; // 固定值 7
NSError *error;NSData *jsonData = [NSJSONSerialization dataWithJSONObject:requestBody options:0 error:&error];
if (error) {if ([callback respondsToSelector:@selector(onError:)]) { [callback onError:@"Error creating JSON body"]; }return; }
// 创建请求NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request setHTTPMethod:@"POST"]; [request setValue:@"自己的appkey" forHTTPHeaderField:@"AppKey"]; [request setValue:@"1234567" forHTTPHeaderField:@"Cname"]; [request setValue:@"123" forHTTPHeaderField:@"Uid"]; [request setValue:@"前期准备获取到的rtc房间token" forHTTPHeaderField:@"Token"]; [request setHTTPBody:jsonData];
// 创建会话并发送请求NSURLSession *session = [NSURLSession sharedSession];NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {if (error) {if ([callback respondsToSelector:@selector(onError:)]) { [callback onError:error.localizedDescription]; }return; }
// 解析响应数据NSError *jsonError;NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
if (jsonError) {if ([callback respondsToSelector:@selector(onError:)]) { [callback onError:@"Error parsing response"]; }return; }
// 检查返回的 code 是否是 200NSInteger code = [jsonResponse[@"code"] integerValue];if (code == 200) {// NSString *message = @"Room task closed successfully.";// if ([callback respondsToSelector:@selector(onSuccess:)]) {// [callback onSuccess:message];// } } else {if ([callback respondsToSelector:@selector(onError:)]) { [callback onError:[NSString stringWithFormat:@"Error: %@", jsonResponse[@"message"]]]; } } }];
// 启动请求 [dataTask resume];}
8.开启字幕和ai数字人加入的回调
SDK 通过回调返回字幕开启状态和字幕内容以及 AI 数字人加入房间是否成功。
#pragma mark - NERtcEngineDelegateEx- (void)onNERtcEngineUserDidJoinWithUserID:(uint64_t)userID userName:(NSString *)userName joinExtraInfo:(nullable NERtcUserJoinExtraInfo *)joinExtraInfo{//AI 数字人加入房间}- (void)onNERtcEngineLabFeatureDidCallbackWithKey:(NSString *)key param:(id)param {if ([key isEqualToString:@"asr_caption_state"]) {// 开启/关闭字幕状态//解析 state 字段NSString* realParam = (NSString*)param;NSData* jsonData = [realParam dataUsingEncoding:NSUTF8StringEncoding];NSDictionary* asrStateData = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];int state = [[asrStateData objectForKey:@"state"] intValue];// iOS 中可根据解析到的字段更新 UI 或逻辑处理if (state == 0) {//开启字幕失败NSLog(@"=== 开启字幕失败"); } else if (state == 1) {//关闭字幕失败NSLog(@"=== 关闭字幕失败"); } else if (state == 2) {//开启字幕成功NSLog(@"=== 开启字幕成功"); } else if (state == 3) {//关闭字幕成功NSLog(@"=== 关闭字幕成功"); } }if ([key isEqualToString:@"asr_caption_result"]) {// 收到字幕消息NSString* realParam = (NSString*)param;NSData* jsonData = [realParam dataUsingEncoding:NSUTF8StringEncoding];NSArray* asrResultList = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];for (NSDictionary* asrResult in asrResultList) {NSString* text = [asrResult objectForKey:@"content"];//此处可以根据解析的 content 进行页面展示NSLog(@"=== %@", text); } }}
9.自己离开房间
[NERtcEngine.sharedEngine leaveChannel];
目前,“融合通讯+AI”已经被广泛应用于社交互动、企业会议、虚拟主播、语言学习、游戏娱乐和旅游文化推广领域。

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)