输入“/”快速插入内容

AI 数字人-定义数字世界中的你

2024年9月6日修改
前言
本文提及的实战案例来自于开源项目:https://github.com/wan-h/awesome-digital-human-live2d
该项目可以运用Dify编排框架和Live2D驱动模型搭建智能数字人,实现智能对话并动态交互,大家可以部署尝试,效果如下:
一、数字人简介
数字人,是指运用数字技术创造出来的人,虽然在现阶段不能做到像科幻作品中的人型机器人一样具备高度智能,但它已经在生活的各类场景中触手可及,而且随着AI技术的发展,也正在迎来应用爆发。
目前业界还没有一个关于数字人的准确定义,但一般可以根据技术栈的不同分为两类,一类是由真人驱动的数字人,另一类是由算法驱动的数字人。
1.1 真人驱动的数字人
这类数字人重在通过动捕设备或视觉算法还原真人动作表情,主要应用于影视行业以及现下很火热的直播带货,其表现质量与手动建模的精细程度及动捕设备的精密程度直接相关,不过随着视觉算法的不断进步,现在在没有昂贵动捕设备的情况下也可以通过摄像头捕捉到人体骨骼和人脸的关键点信息,从而做到不错的效果。
图1. 真人驱动的数字人示例
51%
图2.真人驱动的数字人构建方式
49%
1.2 算法驱动的数字人
这类数字人强调自驱动,人为干预更少,技术实现上更加复杂,一个最简单的算法驱动的数字人大致流程如下:
图3.算法驱动的数字人构建方式
其中三个核心算法分别是:
1.
ASR (Automatic Speech Recognition,语音识别):我们希望和数字人的交互跟人一样以对话为主,所以算法驱动的第一步就是语音识别,它能将用户的音频数据转化为文字,便于数字人理解和生成回应。
2.
AI Agent(人工智能体):充当数字人的大脑,可以直接接入大语言模型,强调 Agent 的概念是为了让数字人拥有记忆模块等更加真实。
3.
TTS (Text to Speech,文字转语音):数字人依靠LLM生成的输出是文字,为了保持语音交互一致性,需要将文字转换为语音,由数字人。
上述算法开源的代码有很多,这里列出一些仓库供大家参考:
ASR语音识别
speech_recognition(这是一个语音识别的接口集合,里面有不同实现的语音识别的接口): https://github.com/Uberi/speech_recognition
AI Agent
大模型部分就比较多了,包括ChatGPT、Claude、ChatGLM、文星一言、千帆大模型、通义千问等等。
Agent部分可以使用LangChain的模块去做自定义,里面基本包含了Agent实现的几个组件(https://www.langchain.com/)
TTS
微软的edge-tts:https://github.com/rany2/edge-tts,只能使用里面预设的人物声音,目前接口免费。
VITS:https://github.com/jaywalnut310/vits,还有很多的分支版本,可以去搜索一下,vits系列可以自己训练出想要的人声。
so-vits-svc: https://github.com/svc-develop-team/so-vits-svc,专注到唱歌上面,前段时间很火的AI孙燕姿。
除了算法,人物建模模型可以通过手动建模(音频驱动)或者AIGC的方式生成人物的动态效果(例如wav2lip模型)实现,这样就完成了一个最简单的数字人。
当然这种简单的构建方式还存在很多的问题,例如:
如何生成指定人物的声音?
TTS生成的音频如何精确驱动数字人口型以及做出相应的动作?
数字人如何使用知识库,做出某个领域的专业性回答?
...
二、如何构建高质量的 AI 数字人
首先我们需要参考“真正的人”,赋予数字人躯壳和灵魂:
数字人的躯壳就像我们的身体一样,有一个好看的皮囊,能够跟人进行可视化的,带有神态动作的动态互动;