数字人解决方案——实时对话数字人源码与环境配置

news2025/2/10 22:32:27

前言

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/xunirenicon-default.png?t=N4P3https://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 yolov5

安装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的模型缝合进来。

如果对该项目感兴趣或者获取源码的可以加我的企鹅群:四八七三五零五一零,大家一起探讨,也可以加fay的公众号,fay的公众号在它的git首页获取。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

外卖订单管理系统(Javaweb+Mysql)

程序源码 可以通过上方代码包.rar文件下载,也可以在下方链接下载 链接: https://pan.baidu.com/s/1OruBEcEK70DtUbvA8UIE-w?pwddkdg (数据库sql文件在项目根目录下data -> sql) 设计报告 【金山文档】 外卖订单管理系统设计报告 http…

编译原理期末速成–正规式、NFA转DFA、DFA的简化

编译原理期末速成–正规式、NFA转DFA、DFA的简化 文章目录 编译原理期末速成--正规式、NFA转DFA、DFA的简化什么是DFA、NFA?看个题消化一下步骤一:步骤二:步骤三:步骤四:步骤五:步骤六:步骤七&a…

POJ The Game

原题目:传送锚点 1.题目 The Game Description A game of Renju is played on a 19*19 board by two players. One player uses black stones and the other uses white stones. The game begins in an empty board and two players alternate in placing black …

面对工作中的失误:从错误中学习与成长

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊 座右铭:不想…

C99的一些新特性记录

固长类型头文件<stdint.h> 由于历史原因&#xff0c;C语言中实现的整型数只保证了在不同硬件体系中的最小长度&#xff0c;因此在使用时&#xff0c;需要根据代码实际运行的平台来确定类型的长度&#xff0c;这导致代码非常不方便移植。C99标准通过增加固长类型头文件引入…

【Unity3D】屏幕深度和法线纹理简介

1 前言 1&#xff09;深度纹理和法线纹理的含义 深度纹理本质是一张图片&#xff0c;图片中每个像素反应了屏幕中该像素位置对应的顶点 z 值相反数&#xff08;观察坐标系&#xff09;&#xff0c;之所以用 “反应了” 而不是 “等于”&#xff08;或 “对应” &#xff09;&am…

chatgpt赋能python:Python浮点型转换为整型的方法和应用场景

Python浮点型转换为整型的方法和应用场景 介绍 Python的浮点型和整型在数值计算中应用广泛。有时候我们需要将一个浮点数转换为整数&#xff0c;这时候就需要使用Python提供的一些函数来完成转换。本文将介绍Python浮点型转换为整型的方法和应用场景。 浮点型和整型的区别 …

初探MyBatis实现简单查询

一、创建数据库与表 1、创建数据库 在Navicat里创建MySQL数据库 - testdb&#xff0c;采用utf8mb4字符集 2、创建用户表 CREATE TABLE t_user (id int(11) NOT NULL AUTO_INCREMENT,name varchar(50) DEFAULT NULL,age int(11) DEFAULT NULL,address varchar(255) DEFAULT…

SpringBoot的日志文件

文章目录 前言日志怎么用自定义打印日志⽇志级别 - 了解⽇志持久化Lombok提供的方法 前言 上文讲述了 SpringBoot项目的构建 与配置文件的使用 ,下面来介绍 SpringBoot 的日志文件 , 日志在程序 中起到的作用是很大的 , 谁写的程序能不报错误呢, 日志就是一种让你快速找到错误…

Linux环境变量配合权限维持手法

前言&#xff1a; 权限维持的时候有其中有两种&#xff0c;一种是alias别名、第二种是prompt_command&#xff0c;这里我们可以将其添加到环境变量中&#xff0c;每次运行的时候都可以使用&#xff0c;从而达到权限控制的效果&#xff0c;而不是临时执行的效果。 环境变量&am…

harbor仓库的搭建

harbor仓库的搭建 前言一、准备二、registry私有仓库拉取registry镜像上传镜像下载镜像添加私有仓库解析配置使用非加密端口拉取镜像 三、仓库加密域名保持一致部署客户端证书&#xff0c;不然会报错验证仓库认证删除registry&#xff0c;重建登录仓库&#xff0c;不然无法上传…

[论文阅读笔记76]GPT Understands, Too(P-tuning)

1. 基本信息 题目论文作者与单位来源年份GPT Understands, Too清华大学 Citations, References 论文链接&#xff1a;https://arxiv.org/pdf/2103.10385.pdf 论文代码&#xff1a; 2. 要点 研究主题问题背景核心方法流程亮点数据集结论论文类型关键字微调大模型采用传统微…

css空间转换

目录 1. 3D移动 translate3d 1.1 三维坐标系 1.2 3D移动 translate3d 1.3 透视 perspective 1.4 translateZ 2. 3D旋转 rotate3d 2.1 左手法则-判断元素旋转方向的取值正负 3. 3D呈现 transform-style【***】 4. 3D缩放 transform:scale3d 1. 3D移动 translate3d …

nacos运行报错-jar: file does not existCan‘t retrieve image ID from build stream

一、问题 Deploying nacos Dockerfile: ruoyi-visual/ruoyi-nacos/Dockerfile… Building image… Preparing build context archive… [>]211/211 files DoneSending build context to Docker daemon… [>] 6.099MB DoneStep 1/8 : FROM openjdk:11---> 5505a9a39df…

chatgpt赋能python:用Python创建股票池

用Python创建股票池 介绍 如果你是一位投资者&#xff0c;你一定知道股票池是什么。它是一个包含一组股票的集合&#xff0c;使投资者能够跟踪和管理他们的投资组合。这些股票可以根据各种因素分类&#xff0c;例如行业&#xff0c;市值&#xff0c;收入增长等。 Python是一…

Oracle的学习心得和知识总结(二十六)|Oracle数据库Real Application Testing测试指南(数据库回放)

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

学习HCIP的day.13

目录 IPV6 一、特征-升级点 二、IPV6地址 三、IPV6地址分类 1、单播地址 2、多播地址 四、协议 五、思科配置 1、接口配置IPV6的单播地址 2、IPV6的ACL 3、IPV6的单播路由协议 4、IPV4和IPV6共存 六、华为IPV6配置 1、静态 2、OSPF 3、BGP 4、IPV4和IPV6共存…

我的内网渗透-提权大法

拿到shell之后乱码解决 chcp 65001 #将编码设置为UTF-8的编码 出现这个提示就是切换成功&#xff0c;后面也是可以正常显示的 提权 方法一&#xff1a; 新版本的kali直接getsystem&#xff0c;可以提权成功&#xff08;有时候可以&#xff0c;有时候不可以&#xff09; mete…

chatgpt赋能python:Python循环3次的方法

Python循环3次的方法 循环是编程中经常用到的一个基本操作&#xff0c;可以让相同的代码运行多次。在Python中&#xff0c;循环也是极其重要的&#xff0c;其中最常用的是for和while循环。在本文中&#xff0c;我们将介绍如何使用Python循环3次。 使用for循环 使用for循环是…

电气器件系列三十八:耐压测试仪2

某型号官方资料&#xff1a; 系列耐压测试仪是测量耐压强度的仪器&#xff0c;可以直观、准确、快速地测试各种被测对象的击穿电压、漏电流等电气安全性能指标&#xff0c;并可以作为高压源用来测试元器件和整机性能。 本系列测试仪符合如下标准&#xff1a;家用电器类标准(IE…