数字人全拆解:如何构建一个基于大模型的实时对话3D数字人?

简单地说,数字人就是在数字世界的“人”。当前语境下我们谈到的数字人通常指的是借助AI技术驱动的虚拟世界人物,具备与真实人类相似甚至接近的外形、感知、交互与行为能力。

AI技术在智能数字人的应用中举足轻重,特别是随着大模型能力的涌现,一个完整的数字人系统是一个融合多种AI能力、形象设计、建模、高性能渲染引擎等多种计算机技术的综合体

本文将一起来认识一个完整的交互式数字人系统的结构、原理与相关工具。并借助开源的数字人项目Fay,演示一个简单的基于LLM的实时对话的3D数字人。

  • **你也能懂:数字人是如何工作的?
    **

  • 创造躯体:3D数字人建模与开发

  • 赋予智慧:构建数字人的控制器

  • 数字人系统的优化挑战

你也能懂:数字人是如何工作的

一个完整的交互式数字人系统的整体架构可以用下图来表示:

即使对于一个非专业技术人员,这个系统原理也并不难理解:

语音输入与识别这是数字人能“听”的基础。这部分借助于自动语音识别(ASR)技术来完成,将语音输入首先转化为自然语言的文本。通常可以借助在线云服务来完成,或者部署本地ASR模型来实现。

AI交互处理:**这是交互型数字人的“大脑”功能。**在大语言模型(LLM)出现以后,其给数字人赋予了真正的智慧与灵魂。借助LLM,理解自然语言的输入,并推理生成需要响应的内容。

**语音合成:****这是数字人能“说”的基础。**在获得文本的响应内容后,为了让数字人能够用语音“说话”,需要借助语音合成(TTS)的AI模型来把文本转化为音频流。在这个阶段,为了让数字人更像“人”,会涉及到合成音色的选择,甚至采用真人语音来训练合成模型(还记得AI孙燕姿吗?)。

**数字人驱动:****这一步就是用合成的音频流等数据来驱动已经创建好的前端数字人,让数字人边“说”边“动“,**包括声音、动作、表情。根据数字人的不同类型,这可能需要借助不同的引擎或者AI模型。比如:

  • 如果你使用大名鼎鼎的MetaHuman建模高细节的3D数字人,则需要借助Unreal虚幻引擎来驱动;

  • 如果你希望用简单的照片来做2D数字人,则可以借助一些语音驱动图片生成视频的模型来实现,比如SadTalker;

  • 如果你希望基于自己的真人视频训练出模型,来实现从语音合成真人视频,那么可以借助RAD-NeRF这样的训练框架;

**数字人:这是终端呈现出的虚拟数字人形象与动画视频,可以是3D或者2D。**比如一个3D高保真的数字人最常见的是借助Metahuman做建模,然后通过Unreal引擎导入模型进行渲染与运行。

显然,一个完整的交互式数字人系统需要有效地集成不同的模型、引擎与工具,才能最终呈现完美的效果。

让我们首先来简单了解前端3D数字人的创建过程。

创造躯体:3D数字人建模与开发

我们经常提到的一些任务机器人,一般只是一个能够自动工作的计算机程序。但数字人的特点是需要一个具体的虚拟人物形象,并且这个形象能够像“人”一样能说会动。因此,对于数字人项目来说,首当其冲的是需要准备这样的虚拟人物。这其中最逼真、应用场景最广泛,而且也是最复杂的,是3D高保真高解析度数字人,创建这样的虚拟人你需要完成形象设计、建模、动画制作,以及定义在虚拟场景中的行为逻辑(类似游戏场景)。

这里我们用著名的游戏引擎Unreal Engine系列工具来认识3D数字人的制作过程:

  • **头部模型。**如果你需要使用自己独特的头部模型,可以借助于三维建模工具来创建自己的头部模型并导出。

  • **形象建模。**通过MetaHuman Creator进行数字人本体的建模设计,你可以导入自己的头部模型,也可以选择内置的形象,然后可以对数字人的各种面容、表情、姿态等进行细节调整与制作。(类似游戏里的“捏脸”)

  • **动画与行为逻辑设计。**启动Unreal引擎的设计环境,导入已经制作的MetaHuman数字人模型,进行数字人动画、交互行为逻辑等设计,你甚至可以借助iPhone手机捕捉你自己的真人面部表情并将其用于数字人。

这个步骤是数字人设计的核心。借助UE提供的一种可视化编辑环境与脚本语言,你无需太多编程知识,就可以创建数字人的行为逻辑,比如控制角色在场景里的动作等。当然,作为交互式数字人最重要的环节也需要在这里进行定义:如何接受音频流、情绪数据等信息来驱动数字人说话、唇形甚至动作。

借助iPhone实现面部表情捕捉并用于数字人:

本图片来自Unreal官方网站

可视化的设计数字人的交互行为逻辑:

  • **数字人打包运行。**在完成上述工作以后,可以将整个数字人工程通过打包成一个可执行的应用程序运行,这样你就能看到一个正在运行的,包含丰富细节的3D数字人。

现在,我们直接下载Fay开源项目中已经完成的一个UE5数字人工程用于测试:

1. 安装Unreal引擎环境

进入https://www.unrealengine.com/官网,下载EpicGames Launcher安装包,并注册账号;下载完成后,根据提示自行安装即可。

运行已经安装的程序,安装Unreal引擎版本,建议安装5.0.3。此处安装包较大,注意留足够的空间。

2. 在Unreal商城中安装以下插件

  • Json Blueprint

  • Blueprint WebSockets

  • MetaHuman SDK

  • MetaHuman Plugin

  • Runtime Audio Importer

3. 选择下载Fay开源项目中的一个数字人工程(github搜索fay-ue5),这里我们选择一个UE5版本的数字人。

4. **运行数字人。**下载完成后解压,双击fay_ue5.uproject文件会自动使用UE环境打开项目,点击运行按钮,即可以看到运行中的数字人:

5. 【可选】**数字人工程查看与编辑。**借助环境中的编辑器,可以看到数字人的相关行为逻辑,比如是如何借助websocket接收语音流并驱动数字人“说话”。如果你有兴趣驱动自己设计的数字人,可以参考此处的程序设计。

当然,此刻运行的数字人是无法互动的,原因是她目前只有“躯体”,还缺乏真正的智慧告诉她怎么与你互动,这也就是后端的数字人控制器。

赋予智慧:构建数字人的控制器

我们把前面的基本原理图稍稍细化下,这里的黄色部分就构成了数字人的控制器:

控制器作为数字人的大脑中枢,承担着借助各种AI技术来与真实人类完成最终交互所需的关键能力,并将输出通过数字人的语音、动作、表情进行呈现,从而完成整个交互闭环。

这里简单介绍每个模块构建的基础技术及可能选择:

【语音识别模块】

语音识别模块通过监听设备语音输入设备(麦克风),采集语音流,并借助ASR模型与接口实时转换为文本内容,用于后续交互处理模块。ASR接口的实现可以借助现成的API或者模型:

  • 云端ASR API:讯飞、阿里云、百度、腾讯、OpenAI

  • 本地ASR模型:百度的PaddleSpeech、ASRT、SpeechBrain、FunASR等,在本地部署A启动后,通过API本地访问即可

  • 本地音频的采集处理可以借助Python的PyAudio库

【AI交互处理模块】

这是控制器的核心模块。在LLM出现以后,很容易想到借助其强大的自然语言理解与生成能力来做出更加自然的数字人响应,只需要简单的将语音识别出来的文本内容组装到Prompt,并调用大模型的API接口输出即可。

当然,对于企业客户来说,直接的LLM响应可能无法满足企业的实际需求,因此,借助RAG(检索增强生成)给LLM补充企业私有知识,以生成更个性化与企业相关的响应内容是一种常见的方案。

这个模块中常见的技术选择有:

  • 云端LLM:文心一言、讯飞、阿里通义千问、OpenAI等

  • 本地LLM:开源ChatGLM、通义千问开源版、Llama2中文版等

  • RAG应用:可以自行通过LangChain/LlamaIndex开发框架定制、或者借助FastGPT这样的RAG低代码平台直接构建,方便管理

  • 另外一个有用的技巧是,在对接LLM时,可以借助类似One-API这样的工具搭建LLM模型池:在前端统一API接口,在后端对接多个大模型,从而可以支持随时灵活切换模型,而无需调整接口。

【语音合成模块】

AI响应生成以后的文本交给TTS模块,进行语音合成音频后用于后续驱动数字人的语音输出。为了让生成的语音更加自然与拟人,此处通常会涉及到两个额外的选项:

  • 不同的声音风格选择(大部分的商业TTS服务都支持),有的TTS服务或开源模型还会支持上传个人音频,以训练个性化的声音输出

  • 情绪识别。部分商业TTS服务(如微软Azure TTS)会直接支持带情绪识别的TTS;有的则需要你调用额外的情绪识别API生成情绪数据

这个模块中常见的技术选择有:

  • 云端TTS服务:百度、阿里、微软等主流云服务商都提供TTS API服务

  • 本地TTS服务:推荐微软的免费开源tts库edge-tts库

  • 文字情绪分析:推荐借助python的一个中文情感分析库Cemotion来实现,也可以借助讯飞的在线API

【数字人通信】

这个模块用来把合成的音频流、情绪数据、甚至唇形数据传递给前端的数字人,用来驱动数字人的语音与动作输出。

在本文演示的Fay开源项目中,这部分由前端数字人项目中UE的WebSocket插件与后端控制器通过WebSocket通道来完成:将TTS模块生成的音频/情绪等数据发送给数字人,数字人使用收到的数据来合成动画视频,最后播放音视频给交互者。

现在,我们来下载 Fay开源项目控制器代码进行测试(这里采用最常见的助理版本,通常用来构建一问一答型的交互数字人):

  1. 下载Fay开源项目源代码(助理版)

  2. 安装依赖pip install -r requirements.txt(建议使用conda虚拟环境)

  3. **执行python main.py启动控制器。**此时可以看到一个UI界面,提供了简单的直接文字对话测试的功能和一些设置,比如TTS声音的选择。

    如果此时已启动前端UE数字人,就可以看到“数字人已连接”的提示(下图红框中):

4. **开启麦克风:**启动控制器的麦克风音频采集,这样,数字人就能够听到你的声音,并给予回复:

在控制器的后台,你可以完整的看到处理过程与日志:

数字人系统的优化挑战

上文我们使用一个开源的数字人项目Fay(再次感谢Fay项目的贡献者)来拆解并学习了一个完整的3D交互数字人的架构,并做了简单测试。但是请注意,这里只是一个演示基本工作流程的数字人,而在真实的企业应用中,根据数字人的应用场景,还有大量的需要个性化设计、优化与完善的环节,包括:

  • 个性化的数字人形象设计与建模

  • 数字人在复杂场景中的行为逻辑优化(比如直播)

  • **端到端流程的稳定性与性能优化。**这也是很多数字人系统面临的最大挑战。由于数字人运行流程涉及到多个较复杂的处理节点与AI模型,这也导致故障点的增多与更多的响应延迟,这对其中各环节的技术选择与工程化调优提出了很多的挑战。比如:

  • 各类AI模型的选择与测试,云端OR本地,商业OR开源

  • ASR与TTS的稳定性、准确性与响应速度

  • 如何兼顾大语言模型输出的完整与简洁性(语音不宜做过长的响应)

  • 大语言模型输出的幻觉问题、多轮对话问题

  • RAG应用额外的Retriver以及更大的上下文理解带来的性能延迟

  • 如何做出多模态的响应,比如介绍产品时能结合产品图片

这些都是在实际数字人工程中可能会面临的挑战,我们也期待有更多优秀的数字人开源项目与工程平台的出现。

可能大家都想学习AI大模型技术,也想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。为了让大家少走弯路,少碰壁,这里我直接把全套AI技术和大模型入门资料、操作变现玩法都打包整理好,希望能够真正帮助到大家。

👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/717099.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

死锁预防之银行家算法

死锁预防之银行家算法 第一章 概述 Dijkstra提出了一种能够避免死锁的调度算法,称为银行家算法。 它的模型基于一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度,每个客户都有一个贷款额度,银行家知道不可能所有客户同时都需要最大贷款额,所以他只保留一定单位…

工业上常见的智能测量设备

工业智能测量仪包括测径仪、测宽仪、测厚仪和直线度测量仪等,主要用于自动化生产线上的高精度尺寸测量。这些设备通常采用光电、激光、工业相机等技术进行非接触式测量,以确保高效率和准确性。测径仪用于测量圆形物体的直径,测宽仪用于测量板…

基于springboot+vue的供应商管理系统

一、系统架构 前端:vue2 | element-ui 后端:springboot | mybatis 环境:jdk1.8 | mysql | maven | node 二、代码及数据库 三、功能介绍 01. 员工注册 02. 登录 03. 管理员-首页 04. 管理员-个人中心-修改密码 05. …

Windows电脑部署Jellyfin服务端并进行远程访问配置详细教程

文章目录 前言1. Jellyfin服务网站搭建1.1 Jellyfin下载和安装1.2 Jellyfin网页测试 2.本地网页发布2.1 cpolar的安装和注册2.2 Cpolar云端设置2.3 Cpolar本地设置 3.公网访问测试4. 结语 前言 本文主要分享如何使用Windows电脑本地部署Jellyfin影音服务并结合cpolar内网穿透工…

ECharts词云图(案例一)+配置项详解

ECharts词云图(案例一)配置项详解 ECharts 是一款由百度团队开发的基于 JavaScript 的开源可视化图表库,它提供了丰富的图表类型,包括常见的折线图、柱状图、饼图等,以及一些较为特殊的图表,如词云图。从版…

14.编写自动化测试(上)

标题 一、如何编写测试1.1 一些概念1.2 测试函数剖析1.3 使用assert!宏检查结果1.4 使用assert_eq!和assert_ne!宏来测试相等1&#xff09; assert_eq!2&#xff09; assert_ne! 1.5 使用 should_panic 检查 panic 二、将 Result<T, E> 用于测试 一、如何编写测试 1.1 一…

数据库原理(数据库设计)——(3)

一、数据库设计概述 1.数据库设计的基本任务和目标 基本任务 根据用户的信息需求、数据库操作需求&#xff0c;设计一个结构合理、使用方便、效率高的数据库。 设计目标 满足用户的应用要求&#xff1b;准确模拟现实世界&#xff1b;能背某个DBMS&#xff08;数据库管理系统…

重磅!草料模板库更新,新增签到报名和旅游模板

本次共更新5个签到报名场景模板&#xff0c;以及6个旅游场景模板。 所有模板内容均可自定义修改&#xff0c;并可免费使用。 签到报名场景 签到报名场景更新了 活动报名、大型活动会议报名、展会邀请函、专题讲座活动报名和技能培训邀约报名 5个模板&#xff0c;基于不同的会…

前端学习-day10

文章目录 01-体验平面转换02-平移效果03-绝对定位元素居中04-案例-双开门06-转换旋转中心点07-案例-时钟-转换原点08-平面转换-多重转换09-缩放效果10-案例-按钮缩放11-倾斜效果12-渐变-线性13-案例-产品展示14-渐变-径向15-综合案例-喜马拉雅 01-体验平面转换 <!DOCTYPE h…

选专业还是选学校:分数限制下的抉择

大家好&#xff0c;我是DX3906 在高考的分数公布后&#xff0c;许多考生和家长都会面临一个棘手的问题&#xff1a;在分数限制下&#xff0c;是选择一个好专业&#xff0c;还是选择一个好学校&#xff1f;这个问题没有标准答案&#xff0c;因为每个人的情况和目标都不尽相同。本…

元宇宙三维虚拟场景制作平台为数字化营销发展注入了新的活力

​在数字化浪潮的推动下&#xff0c;我们迎来了全新的3D元宇宙场景在线制作编辑器&#xff0c;为您带来前所未有的创作体验。这款轻量级实时创作工具&#xff0c;让您轻松构建丰富的3D元宇宙场景&#xff0c;实现全网全终端的展示。 3D元宇宙场景在线制作编辑器拥有海量的3D模…

微型丝杆的耐用性和延长使用寿命的关键因素!

无论是机械设备&#xff0c;还是精密传动元件&#xff0c;高精度微型丝杆是各种机械设备中不可或缺的重要组件。它的精度和耐用性直接影响着工作效率和产品品质&#xff0c;在工业技术不断进步的情况下&#xff0c;对微型丝杆的性能要求也越来越高&#xff0c;如何提升微型丝杆…

reverse-android-淘最热点so

资源 1. com.maihan.tredian 2021版 淘最热点 2. 该 app 没有加壳 ,也没混淆。 登录抓包 POST: https://api.taozuiredian.com/api/v1/auth/login/sms POST /api/v1/auth/login/sms HTTP/1.1 Content-Type: application/json Connection: close Charset: UTF-8 User-Agen…

C++中list容器常用接口

list的基本定义: 在C中&#xff0c;list被定义为一个双向链表容器。它是标准模板库&#xff08;STL&#xff09;中的一部分&#xff0c;位于<list>头文件中。 list是一个通用模板类&#xff0c;可以存储任何类型的数据&#xff0c;因此它是一个模板类。它实现了双向链表数…

Web应用安全测试-综合利用(一)

Web应用安全测试-综合利用&#xff08;一&#xff09; 文章目录 Web应用安全测试-综合利用&#xff08;一&#xff09;1.跨站脚本攻击&#xff08;XSS&#xff09;漏洞描述测试方法GET方式跨站脚本Post方式跨站脚本 风险分析风险等级修复方案总体修复方式对于java进行的web业务…

Pycharm怎么默认终端连接远程服务器

因为经常需要从宿舍到学校内通勤&#xff0c;期间所有连接都会中断&#xff0c;所以每次开SSH特别麻烦&#xff0c;每次终端自动切换到本地&#xff1a; 每次都得点一下Start SSH Session 想要默认终端连接远程服务器&#xff0c;需要点File->Setting->Tools->SSH T…

详细描述拍立淘接口的实现过程,包括接口设计、开发、测试、部署等关键步骤

拍立淘接口的实现过程可以详细分为以下几个步骤&#xff1a; 注册与权限获取&#xff1a; 注册成为阿里巴巴开放平台开发者&#xff0c;并创建应用。获取API的调用权限和密钥&#xff08;如AppKey和AppSecret&#xff09;&#xff0c;这些密钥将用于后续的身份验证和请求签名。…

SmartEDA体验记:探索电路设计新纪元,乐趣无限!

在科技日新月异的今天&#xff0c;电路设计早已不再是专业人士的专属领域。随着智能化工具的不断发展&#xff0c;普通人也能轻松体验到电路设计的乐趣。今天&#xff0c;就让我带大家走进SmartEDA的世界&#xff0c;一起感受前所未有的电路设计之旅。 SmartEDA&#xff0c;作为…

Ubuntu如何添加用户环境变量

一&#xff0c;简介 在工作中&#xff0c;需要将某个环境变量添加到用户环境变量中&#xff0c;方便使用。 要将 SOF_WORKSPACE~/work/sof 添加到用户的环境变量中&#xff0c;需要将该设置添加到用户的 shell 配置文件中&#xff0c;例如 ~/.bashrc&#xff08;对于 Bash 用…

IEPL专线和IPLC专线有什么区别?

IEPL和IPLC是两种广泛用于国际通信的专线服务&#xff0c;IEPL是一种以太网专线服务&#xff0c;IPLC是一种传统的专线服务&#xff0c;它们在某些方面有相似之处&#xff0c;但也存在一些关键的区别。下面是IEPL和IPLC的主要区别: 1.技术和定义: IEPL: 技术: IEPL是一种以太…