2D、3D虚拟数字人技术探索
2D、3D虚拟数字人技术探索
虚拟数字人技术探索
虚拟数字人技术是近年来快速发展的领域,涉及2D和3D数字人的制作、交互等技术。本文将详细介绍2D和3D虚拟数字人的技术实现,包括具体工具、实现原理和应用案例。
虚拟数字人技术架构
虚拟数字人基础技术架构包括“五横两纵”。“五横”是指用于数字人制作、交互的五大技术模块,即人物生成、人物表达、合成显示、识别感知、分析决策等模块。其中,人物生成,即人物建模方面 2D 数字人较为简单,3D 数字人需要额外使用三维建模技术。人物表达包括语音生成和动画生成。动画生成则包含驱动和渲染两大部分。“两纵”是指 2D、3D 数字人,2D 数字人和 3D 数字人在技术架构方面基本一致。3D 数字人需要额外使用三维建模技术生成数字形象,信息维度增加,所需的计算量更大。
2D数字人技术
Unity 2D
Unity 是一个广泛使用的跨平台游戏引擎,超过一半的游戏都是使用Unity创作的。Unity 2D模块提供了强大的2D游戏开发功能。
Live 2D
Live 2D 是一款专业的2D建模软件,能够以一张原画实现“2D立体表现”。Live 2D通过将原画拆分并使用弯曲和旋转变形器来实现动态效果。
Live 2D在多个项目中都有应用,例如《原神》中的《雪霁逢椿》片段就包含了Live 2D的人物、手绘的黑白闪线条以及诸多后期特效。
Live 2D的实现原理
Live 2D的实现原理是将原画拆分,拆分的越细,能动部位就越多、效果越灵活。通过Live2D中的弯曲和旋转变形器来实现动态效果。
亚马逊近实时智能应答 2D 数字人
亚马逊的2D数字人技术主要依赖于Amazon Transcribe、Amazon Polly和D-ID.com公司的2D数字人生成技术。具体实现包括:
- 语音输入部分:使用Amazon Transcribe进行实时语音转录。
- 应答内容生成部分:借助Langchain开源框架调用OpenAI的coversation接口,并使用memory库保存对话上下文。
- 文字转语音:使用Amazon Polly实现文字转语音。
- 2D数字人视频生成:由D-ID.com公司提供API,可以接收文本输入和人脸图片生成动态播报视频。
D-ID支持通过上传照片或文字描述生成AI角色,还可以选择不同的语音声音和方言。
3D数字人技术
3D数字人技术主要依赖于专业的3D建模软件和渲染引擎。主流的3D建模软件包括Blender、Cinema 4D、3ds Max、Maya等,主流的渲染引擎包括Unity Technologies公司的Unity 3D和Epic Games公司的Unreal Engine。
Unreal Engine
Unreal Engine是Epic Games开发的游戏引擎,广泛应用于游戏、影视、建筑等领域。其系统要求包括:
- Windows 10 64位:四核Intel或AMD 2.5 GHz或更高处理器,8 GB内存
- macOS Big Sur:四核Intel或AMD 2.5 GHz或更高处理器,8 GB内存
- Linux Ubuntu 18.04:四核Intel或AMD 2.5 GHz或更高处理器,32 GB内存
收费标准:免费使用,只有当作品营收超过100万美元时,才需要就超出部分支付5%的分成费用。
MetaHuman Creator
MetaHuman Creator是基于Unreal Engine的高保真数字人类制作工具。
Unity 3D
Unity 3D是一个支持多种平台和设备的实时3D开发平台,广泛应用于游戏、VR、AR等领域。原神的主机版本就是用这个引擎渲染的。个人使用免费。
对于前端开发者来说,3D效果在浏览器上的实现是通过WebGL(JavaScript+OpenGL)来实现渲染的。常用的3D效果实现库包括three.js和A-Frame。
语音同步技术
语音同步是虚拟数字人技术的重要组成部分,主要包括以下几个步骤:
- 语音识别和文本转换(STT):通过语音识别技术将语音转录为文本。
- 文本到语音参数的转换(TTS):将文本转换为语音参数,包括音素或音标等。
- 生成口型动画:根据语音参数生成口型动画,通常使用预先设计的口型模型。
- 同步和优化:将生成的口型动画与语音同步,并进行优化以确保自然流畅。
口型驱动方法
口型驱动方法主要包括语音驱动和音素驱动两种。语音驱动方法通过深度网络模型学习语音和口型的映射关系。音素驱动方法则根据音素发音方式设定时间平滑规则,或使用深度模型构建音素到表情系数的映射关系。
视位(Viseme)
视位(Viseme)是指与某一音位相对应的可视发音器官状态。在实现语音和口型同步时,可以使用微软Speech SDK或Amazon Transcribe、Amazon Polly等工具返回的VisemeID来实现。