1.从技术角度来看,现在的数学人就是一个缝合怪,把各种技术点都整合在一起,用来实现直播、对话等数字人。技术流程大概如下图:
其实最重要的一环应该属于LLM(大型语言模型),LLM相当于一个人的意识,如果没有LLM,这一套完全没有深度。
2.数学人的呈现方式有现在基本上可以分为三种,2D、2.5D、3D这三种,2D是最常见的用一段语音去驱动一张照片,2.5D比2D多一些肢体动作,3D是UE建模。
3.我这里部署的是2D实时对话的数字人,部署环境是win 10、cuda 11.7、cudnn 8.5、GPU是3060(6G显存)。
2D实时对话数字人
因为这个项目本身就是一个缝合的项目,所以尽量使用Anaconda来创建环境,这样项目之间就不存在依赖互相干扰的问题。python使用python3.9或者3.10。
一.项目源码
缝合连接的源码可使用开源的Fay这个代码,这个代码里面有连接各种API和部署本地库的,源码地址:
GitHub - TheRamU/Fay: Fay是一个完整的开源项目,包含Fay控制器及数字人模型,可灵活组合出不同的应用场景:虚拟主播、现场推销货、商品导购、语音助理、远程语音助理、数字人互动、数字人面试官及心理测评、贾维斯、Her。 开源项目,非产品试用!!!
Fay是一个完整的开源项目,包含Fay控制器及数字人模型,可灵活组合出不同的应用场景:虚拟主播、现场推销货、商品导购、语音助理、远程语音助理、数字人互动、数字人面试官及心理测评、贾维斯、Her。 开源项目,非产品试用!!! - GitHub - TheRamU/Fay: Fay是一个完整的开源项目,包含Fay控制器及数字人模型,可灵活组合出不同的应用场景:虚拟主播、现场推销货、商品导购、语音助理、远程语音助理、数字人互动、数字人面试官及心理测评、贾维斯、Her。 开源项目,非产品试用!!!
https://github.com/TheRamU/Fay
2D数字人源码地址:
https://github.com/waityousea/xuniren
https://github.com/waityousea/xuniren
LLM用是清华开源的ChatGLM源码地址:
GitHub - THUDM/ChatGLM-6B: ChatGLM-6B: An Open Bilingual Dialogue Language Model | 开源双语对话语言模型
ChatGLM-6B: An Open Bilingual Dialogue Language Model | 开源双语对话语言模型 - GitHub - THUDM/ChatGLM-6B: ChatGLM-6B: An Open Bilingual Dialogue Language Model | 开源双语对话语言模型
https://github.com/THUDM/ChatGLM-6B
二.Fay环境安装
conda create --name fay python=3.10
activate fay
安装fay所需要的环境依赖:
git clone https://github.com/TheRamU/Fay.git
cd xx/xx/fay
pip install -r requirements.txt
打开fay项目下的system.conf文件,添加用到的Key,关于这些key如何获取,可以参与fay给参考教程:
Fay控制器部署及必须的key如何获取_哔哩哔哩_bilibiliFay是一个完整的开源项目,包含Fay控制器及数字人模型,可灵活组合出不同的应用场景:虚拟主播、现场推销货、商品导购、语音助理、远程语音助理、数字人互动、数字人面试官及心理测评、贾维斯、Her。开源地址:https://github.com/TheRamU/Fay公众号:《fay数字人》, 视频播放量 1897、弹幕量 0、点赞数 5、投硬币枚数 4、收藏人数 12、转发人数 8, 视频作者 xszyou, 作者简介 ,相关视频:Fay(github数字人开源项目):直播间搭建,开源项目:数字人FAY——Fay新架构使用讲解,SadTalker无限免费数字人,动手给fay(github数字人开源项目)加上rasa及chatglm:兼顾实时、可控、记忆及大模型的生成能力,chatgpt4彩蛋:fay(github数字人开源项目),给Fay加上本地免费语音识别(达摩院funaar),(yolov8+VisualGLM)让你的fay数字人助理看得见,单张照片生成MetaHuman数字人,Fay(github数字人开源项目):UE工程讲解,如何搭建数字人直播间并开播
https://www.bilibili.com/video/BV1go4y1L7oe/?spm_id_from=333.999.0.0&vd_source=d08e238ac726c4b15a0e12ffd5176ee5
[key]
#funasr / ali
ASR_mode = ali
#ASR二选一(需要运行fay/test/funasr服务)集成达摩院asr项目、感谢中科大脑算法工程师张聪聪提供集成代码
local_asr_ip=127.0.0.1
local_asr_port=10197
# ASR二选一(第1次运行建议用这个,免费3个月), 阿里云 实时语音识别 服务密钥(必须)https://ai.aliyun.com/nls/trans
ali_nls_key_id=
ali_nls_key_secret=
ali_nls_app_key=
# 微软 文字转语音 服务密钥(非必须,使用可产生不同情绪的音频)https://azure.microsoft.com/zh-cn/services/cognitive-services/text-to-speech/
ms_tts_key=
ms_tts_region=
# 讯飞 情绪分析 服务密钥 https://www.xfyun.cn/service/emotion-analysis/
xf_ltp_app_id=
xf_ltp_api_key=
#NLP多选一:xfaiui、yuan、chatgpt、rasa(需启动chatglm及rasa,https://m.bilibili.com/video/BV1D14y1f7pr)、VisualGLM
chat_module=xfaiui
# 讯飞 自然语言处理 服务密钥(NLP3选1) https://aiui.xfyun.cn/solution/webapi/
xf_aiui_app_id=
xf_aiui_api_key=
#浪.潮源大模型 服务密钥(NLP3选1) https://air.inspur.com/
yuan_1_0_account=
yuan_1_0_phone=
#gpt 服务密钥(NLP3选1) https://openai.com/
chatgpt_api_key=
#ngrok内网穿透id,远程设备可以通过互联网连接Fay(非必须)http://ngrok.cc
ngrok_cc_id=
#revChatGPT对接(非必须,https://chat.openai.com登录后访问https://chat.openai.com/api/auth/session获取)
gpt_access_token=
gpt_conversation_id=
绑定完使用到的key,启动fay看看是否能交互。
python main.py
文字输入:
语音输入:
这样代表fay启动成功,文字和语音都能进行交互。
三. 2D数字人部署
conda create --name xuniren python=3.10
activate xuniren
项目下载与依赖torch:
git clone https://github.com/waityousea/xuniren.git
cd xuniren
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.7 -c pytorch -c nvidia
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
pip install -r requirements.txt
安装pytorch 3D(win下这一步比较容易报错)
git clone https://github.com/facebookresearch/pytorch3d.git
cd pytorch3d
python setup.py install
安装完成之后运行api看看是否有报错。
python fay_connect.py
四.数字人实现对话
要与数字人对话,按前言给的流程图,要实现语音文字、LLM、文字转语音、合成视频,这里可以先试试线上的语言模型。
1.启动fay
cd xx/xx/Fay
activate fay
python main.py
可以看到1003接口已打开
2.打开一个新conda终端启动数字人
cd xx/xx/xuniren
activate xuniren
python fay_connect.py
此时1002口也连接上,数字人终端可以检测到fay面板已经打开
3.打开fay的控制面板,启动数字人助理
4.开始交互
语音识别后,提交给语言模型,模型回答后生成语音,把语音保存的地地址发给数字人,生成的语音是mp3格式的,把mp3转成wav,然后通过模型合成视频,合成后对视频进行播放。
这就是一个简单的对话数字人的全部过程,这里除了语音合成视频用的本地模型之外,都用的是在线的api,在6G的GPU在,1秒的时间,大概能生成1秒左右的视频。
五.本地部署ChatGLM
如果想要数字人有自己的知识库,或者有自己回答问题的方式,就要接入私有化的LLM,Fay有接入ChatGLM的接口,也可以按Fay的代码接入微调过的LLM。
1.ChatGLM-6B
ChatGLM-6B 是清华开源的、支持中英双语的对话语言模型,基于
General Language Model (GLM)
架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。我笔记本的3060刚刚好6G,那可以用GLM试试。
2.源码下载与环境依赖
为了方便管理,这里还是用conda创建环境
git clone https://github.com/THUDM/ChatGLM-6B
cd ChatGLM-6B
conda create --name GLM python=3.10
activate GLM
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.7 -c pytorch -c nvidia
pip install -r requirements.txt
3.更改模型精度
我当前笔记本的GPU只有6G,所以要更改模型精度,要不然会报内存不够的错误。
更改api.py文件
4.运行ChatGLM
更改完成之后,运行api.py,这里会下载12G大小的模型,下载的过程中可能会出现中断,多运行几次就可以了,下载的时间看自己的网速快慢。当出现以下界面,GLM安装成功。
六、对接本地语言模型
1.要实现对接本地的语言模型步骤有些多,fay提供了对接rasa加GLM的方法,首先要更改fay的配置文件,把语言模型改成如下:
改完成之后,启动第一个fay的conda环境并运行main.py程序,窗口放着不用动。
activate fay
python main.py
2.启动多一个fay的conda环境,用来运行rasa
activate fay
cd fay/test/rasa
pip install rasa
rasa run actions
运行结果如下:
3.再启动一个fay的conda环境,用来对接GLM
activate fay
cd fay/test/rasa
然后运行 rasa shell 来测试是否能连上GLM,在Your input处提出问题看看是否能得到相应的答案。
如果运行成功,终止掉rasa shell,启动rasa api server:rasa run --enable-api -p 5005
4.启动数字人
cd xx/xx/xuniren
activate xuniren
python fay_connect.py
5.开启fay数字人控制面板,就可以跟数字人进行互动了。
这是一个完成的部署过程,因为项目所用到的项目源码与环境相对多,部署过程会有很多问题,虽然是一个各种项目缝合在一起,但也给如何实现数字人做了一个很好的参考。之后有时间我试着把2.5D的模型缝合进来。
如果对该项目感兴趣或者获取源码的可以加我的企鹅群:487350510,大家一起探讨,也可以加fay的公众号,fay的公众号在它的git首页获取。
现在数字人越来越有趣了,现在好多公司都在做,那我也想在Unity玩转一下,怎么玩呢?首先我们需要有数字人资源,数字人资源从哪来呢?第一你可以直接去Unity assetstore上去搜一下免费的数字人,有2个还是比较好的资源。第二可以是自己制作, 打开网址https://vrchat.readyplayer.me/avatar上传一个图片就可以自己捏脸,制作一个自己的avatar了。下面就是我根据关晓彤捏出来的,是不是捏出来的非常不像,这个网站是偏欧美化的,很多材质都很欧美风,所以希望有国内的做出来一个可以
目前”源”已全面开源开放,开放模型API、开源高质量中文数据集、模型训练代码、推理代码、应用代码、面向AI芯片的模型移植开发代码,开放平台已服务超4000名行业开发者,覆盖互联网、金融、教科研和自动驾驶等行业领域,大大降低了不同行业不同任务的AI应用开发门槛。也就说,198个政策资料,最终变成了统一的“一屏通”。这套系统最大的价值在于,为数字助理(语音助理)这一类型产品提供了一个新的架构思路,全流程一键式打通从打造“好看的皮囊”到“有趣的灵魂”,同时可以实时语音交互的数字人。每个模块都可以轻松地更换。
本项目可以充当时下流行的虚拟人、虚拟主播、数字人,等仿人形数字形象的内核部分。
使用UE、C4D、DAZ、LIVE2D等三维引擎软件开发的数字形象可以与本“数字人控制器”对接,从而实现虚拟主播、数字导游、数字助手等。我们提供UE4对接的demo,但我们更鼓励用户自行实现喜欢的数字形象。
若不考虑外观形象的话,本“数字人控制器”其实也可以独立使用的,可以充当一个语音助理。NLP可以自由切换AIUI、ChatGPT及Yuan1.0。
数字人属性,与用户交互中能做出相应的响应。
交互灵敏度
在交互中,数字人能感受用户的情感,并作出反应。最直的体现,就是语气的变化,如 开心/伤心/生气 等。
设置灵敏度,可改变用户情感对于数字人的影响程度。
填入直播间地址,实现与直播间粉丝交互
选择麦克风设备,实现面对面交互,成为你的伙伴
socket远程音频输入
可以接入远程音频输入,远程音频输出
填入商品介绍,数字人将自动讲解商品。
当用户对商品有疑问时,数字人可自动跳转至对应商品并解答问题。
配合抖音接收来源,实现直播间自动带货。
前言只要关注AI这块的,数字人直播、数字人口播等视频是不是已经刷到无数遍了,是不是觉得有点意思,还想动手尝试一下,但又无从下手。不慌,这里收集了几个超简单的工具分享给小伙伴们。正文数字人难吗?如果重头开始的话,那应该不简单,不过既然都有大神提供了工具,站在巨人的肩膀上做事就是显得比较简单了。工具1入口:https://studio.d-id.com/D-ID平台是一款高效的虚拟形象制作,提供免费制...
数字站桶人
首先我先给数字人重新做一个定义:“把人数字化,以行人的职责”。怎么理解呢?我举两个例子就清楚了。第一个是现在直播带货,主播成本越来越高,我们的数字人能否代替主播24小时自动带货呢?这里数字化的是主播的形象、声音、性格特质,以及商品的知识。另一个是,一些客服或者售前情景,所做的工作也是重复度非常高,我们能否交给数字人去完成呢?这里就简单多了,
OpenAvatar是一个开源的数字人形象框架,能够帮助用户创建和部署高度可定制的数字人和虚拟形象。其目标是通过提供一组标准接口和现成的实现,使得开发人员能够快速轻松地构建出具有不同形态和功能特性的数字人。OpenAvatar的主要特点包括:多样性:OpenAvatar不仅支持不同的机器人和虚拟人物形象,还能够根据用户需求和场景需求,支持自定义形象和特征的创建。实时表达:OpenAvatar能够让数字人物产生更直观、自然、丰富的动作表达,向游戏、虚拟现实软件及社交媒体的开发提供更多实时表达特性的支持。
目前市面上的系统每月都有视频合成时长限制,大部分只能合成30分钟到60分钟,超时都需要再支付高额的费用,而我们的系统拥有免费无限视领制作长。目前市面上的系统都是采取账号按月(年)付费的销售模式,每开通一个账号都要按期付费,而我们的系统可以免费无限量开通账号。目前市面上的系统更么不支持自定义品牌名称,要么需要支付几十万的oem费用才能定制,而我们的系统可以自主定义品牌换名称。在数字人克隆系统和直播系统的私有化部署方案中,通过采用了先进的数据加密技术和隐私保护措施,确保企业数据的安全性。
本开源项目名为“数字人控制器”。意为,本项目可以充当时下流行的虚拟人、虚拟主播、数字人,等仿人形数字形象的内核部分。 使用UE、C4D、DAZ、LIVE2D等三维引擎软件开发的数字形象可以与本“数字人控制器”对接,从而实现虚拟主播、数字导游、数字助手等。我们提供UE4对接的demo,但我们更鼓励用户自行实现喜欢的数字形象。 当然,若不考虑外观形象的话,本“数字人控制器”其实也可以独立使用的,可以充当一个语音助理。NLP可以自由切换AIUI、ChatGPT及Yuan1.0。目前最新版本是2.0。
该程序可以通过Python脚本控制虚拟人的动作,并利用UnrealCV库中的功能以及其他必要的库,例如OpenCV和NumPy,进行虚拟人的视觉感知和决策。完成这些步骤后,便可以创建一个虚拟人程序,它可以通过Python和虚幻引擎进行控制并与用户进行交互。虚拟人可以在虚幻引擎中被可视化,可以通过Python脚本进行控制并且可以进行视觉感知和决策。创建虚拟环境,以便在其中运行应用程序,并安装必要的库,如OpenCV、NumPy和PyQt5,在Python和虚幻引擎中。首先,需要安装Python和虚幻引擎。
使用Python编写程序来创建虚幻引擎中的数字人。虚幻引擎为开发人员提供了一个强大的工具集,帮助您创建高质量的数字角色,并为其添加动画、声音和其他特性。以下是一些基本的步骤,用于使用Python和虚幻引擎创建一个数字人:安装虚幻引擎和Python:首先,您需要安装虚幻引擎和Python。您可以从虚幻引擎官网下载并安装虚幻引擎。Python也可以从其官方网站下载安装。创建角色模型:使用虚幻引擎中的角色编辑器创建您的数字角色模型。