数字人可以运用在哪些行业?

在中国互联网协会主办的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市场洞察白皮书》

前期准备

1.戳我登录

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互动数字人,戳我立即体验!!

目前,“融合通讯+AI”已经被广泛应用于社交互动企业会议虚拟主播语言学习游戏娱乐旅游文化推广领域。

Logo

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

更多推荐