构建一个 AI 数字人分身主要包括以下两个方面:
一、构建数字人躯壳
数字人的躯壳建模有多种方式:
建好的模型可以使用 web 前端页面(Live2D 就提供了 web 端的 SDK)或者 Native 的可执行程序进行部署,最后呈现在用户面前的是一个 GUI。
二、构建数字人灵魂
有了数字人躯壳,还需要构建数字人的灵魂,让数字人具备各种智能,比如记得个人信息,充当个人助手;在某个领域具备更专业的知识;能处理复杂的任务等等。实现这些能力有以下几个工程关键点:
数字人的躯壳就是建模过程,有多种构建方式:1.2D引擎风格偏向二次元,亲和力强,定制化成本低,在日本、东南亚等国家比较受欢迎,也深受年轻人喜欢,毕竟能将喜欢的动漫人物变成数字人的躯壳,是一件很棒的事情。2D引擎的代表就是Live2D Cubism(https://www.live2d.com/)。1.3D引擎风格偏向超写实的人物建模,拟真程度高,定制化成本高,目前有很多公司都在做这个方向的创业,已经可以实现用户通过手机摄像头快速创建一个自己的虚拟人身体(如下图,NextHuman(https://nexthuman.cn/))。3D引擎的代表是UE(Unreal Engine)、Unity,虚幻引擎MetaHuman等(个人学习在电脑配置和学习难度上有一定门槛。1.AIGC虽然AIGC的方式相比前两者省去了建模流程,直接生成数字人的展示图片,但弊端也明显,算法生成的数字人很难保持ID一致性,帧与帧的连贯性上会让人有虚假的感觉。如果项目对人物模型真实度要求没有那么高,可以使用这种方案(算法发展非常快,可能不久就会有连贯度很高的生成方式),典型的项目有wav2lip(https://github.com/Rudrabha/Wav2Lip)、video-retalking(https://github.com/OpenTalker/video-retalking)等。AIGC还有一个方向是直接生成2d/3d引擎的模型,而不是直接生成数字人的最终展示部分,但该方向还在探索中。得益于现有各类技术方案的成熟度,以往建模往往都是由专业的建模师完成工作,不久之后相信大家就可以通过一些生成算法快速生成自己的人物模型了。
建好的模型可以使用web前端页面(Live2D就提供了web端的SDK)或者Native的可执行程序进行部署,最后呈现在用户面前的是一个GUI。笔者的开源数字人项目(项目地址:https://github.com/wan-h/awesome-digital-human-live2d)选择了live2d作为数字人躯壳,因为这类SDK的驱动方式相比现在的AI生成式的方式更加可控和自然,相比虚幻引擎这些驱动方式又更加轻量和简单;另外超写实的数字人风格在目前的技术能力下,处理不好一致性问题,容易带来虚假的感觉或者产生恐怖谷效应,而卡通二次元的形象给人的接受度更高。关于live2d的SDK驱动方式可以参考官方示例:https://github.com/Live2D。
有了数字人躯壳,我们就需要构建数字人的灵魂,让数字人具备各种智能,比如记得你的个人信息,充当你的个人助手;在某个领域具备更专业的知识;能处理复杂的任务等等。这些能力实现有以下几个需要注意的工程关键点:1.AI Agent:我们要想数字人像人一样思考就需要写一个像人一样的Agent,工程实现所需的记忆模块,工作流模块、各种工具调用模块的构建都是挑战;2.驱动躯壳的实现:灵魂部分怎样去驱动躯壳部分,我们可以将灵魂部分的所有接口定义出来,然后躯壳部分通过API调用,调用方式可以是HTTP、webSocket等等,视躯壳部分的实现而定。但包含情绪的语音表达以及如何保证躯壳的口型、表情、动作和语音的同步及匹配,目前主流方案只能做到预设一些表情动作,再做一些逻辑判断来播放预设,语音驱动口型相对来说成熟一些,但都是闭源的,效果可以参考Nvidia的Audio2Face(https://www.nvidia.cn/omniverse/apps/audio2face/)或则Live Link Face(Iphone APP)+Face AR Sample(UE);3.实时性:由于整个数字人的算法部分组成庞大,几乎不能实现单机部署,特别是大模型部分,所以算法一般会部署到额外的集群或者调用提供出来的API,这里面就会涉及到网络耗时和模型推理耗时,如果响应太慢就会体验很差,所以低延时也是亟需解决的一个问题。4.多元跨模态:仅仅是语音交互的数字人是远远不够的,人有五感(听觉、视觉、嗅觉、触觉、味觉),听觉只是其中一种,其他的感官可以根据实际需求来做,比如视觉我们可以通过添加摄像头数据来获取数据,再通过系列CV算法做图像解析等;5.拟人化场景:我们正常和人交流的时候不是线性对话,会有插话、转移话题等情况,这些情景如何通过工程丝滑处理。