VideoChat:开源的数字人实时对话系统,支持自定义数字人的形象和音色

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. VideoChat 是一款开源的实时数字人对话系统,支持语音输入和实时对话功能,首包延迟低至 3 秒。
  2. 用户可以根据需要自定义数字人的形象和音色,实现个性化交互。
  3. VideoChat 支持 ASR-LLM-TTS-THG 和 MLLM-THG 两种生成方式,适用于直播、新闻播报等场景。

正文(附运行示例)

VideoChat 是什么

在这里插入图片描述

VideoChat 是开源的实时数字人对话系统,支持语音输入和实时对话功能。用户可以自定义数字人的形象和音色,无需训练即可进行音色克隆,首包延迟可低至 3 秒,适用于直播、新闻播报和聊天助手等多种实时语音交互场景。系统支持 GLM-4-Voice,提供 ASR-LLM-TTS-THG 和 MLLM-THG 两种生成方式。VideoChat 用 Gradio 框架构建交互式应用,支持流式视频输出,方便快速部署和构建。

VideoChat 的主要功能

  • 实时语音交互:支持用户用语音与数字人进行实时对话。
  • 形象和音色自定义:用户根据需要选择或设计数字人的外观和声音,实现个性化交互。
  • 语音输入和文本输出:将用户的语音输入转换为文本,再基于大语言模型生成回复文本。
  • 唇形同步:数字人在说话时,嘴唇动作与发出的声音同步,提高真实感。
  • 流式视频输出:基于 Gradio 框架,支持流式视频输出,让交互更加流畅。

VideoChat 的技术原理

  • 语音识别(ASR):用 FunASR 等工具将用户的语音输入转换为文本。
  • 大语言模型(LLM):基于 Qwen 等模型根据输入文本生成相应的回复文本。
  • 文本转语音(TTS):基于 GPT-SoVITS 等工具将文本回复转换为语音。
  • 说话人生成(THG):用 MuseTalk 等方案根据语音生成唇形同步的数字人视频。
  • 流式输出并行流水线:基于并行处理技术,边推理边播放,提高响应速度。
  • Gradio 框架:用 Gradio 5 实现流式视频输出,方便部署和构建交互式应用。

如何运行 VideoChat

0. 显存需求

  • 级联方案 (ASR-LLM-TTS-THG):约 8G,首包约 3s(单张 A100)。
  • 端到端语音方案 (MLLM-THG):约 20G,首包约 7s(单张 A100)。

对于不需要使用端到端 MLLM 的开发者,可以选择仅包含级联方案的 cascade_only 分支。

$ git checkout cascade_only

1. 环境配置

  • Ubuntu 22.04
  • Python 3.10
  • CUDA 12.2
  • Torch 2.3.0
$ git lfs install
$ git clone https://www.modelscope.cn/studios/AI-ModelScope/video_chat.git
$ conda create -n metahuman python=3.10
$ conda activate metahuman
$ cd video_chat
$ pip install -r requirement.txt

2. 权重下载

2.1 创空间下载(推荐)

创空间仓库已设置 git lfs 追踪权重文件,如果是通过 git clone https://www.modelscope.cn/studios/AI-ModelScope/video_chat.git 克隆,则无需额外配置。

2.2 手动下载
2.2.1 MuseTalk

参考 这个链接 下载权重文件。

目录如下:

./weights/
├── dwpose
│   └── dw-ll_ucoco_384.pth
├── face-parse-bisent
│   ├── 79999_iter.pth
│   └── resnet18-5c106cde.pth
├── musetalk
│   ├── musetalk.json
│   └── pytorch_model.bin
├── sd-vae-ft-mse
│   ├── config.json
│   └── diffusion_pytorch_model.bin
└── whisper└── tiny.pt
2.2.2 GPT-SoVITS

参考 这个链接 下载预训练模型。

2.2.3 GLM-4-Voice

app.py 中添加如下代码即可完成下载。

from modelscope import snapshot_download
snapshot_download('ZhipuAI/glm-4-voice-tokenizer', cache_dir='./weights')
snapshot_download('ZhipuAI/glm-4-voice-decoder', cache_dir='./weights')
snapshot_download('ZhipuAI/glm-4-voice-9b', cache_dir='./weights')

3. 其他配置

LLM 模块和 TTS 模块提供了多种方式,可自行选择推理方式。

3.1 使用 API-KEY(默认)

对于 LLM 模块和 TTS 模块,如果本地机器性能有限,可使用阿里云大模型服务平台百炼提供的 Qwen API 和 CosyVoice API,请在 app.py(line 14) 中配置 API-KEY。

参考 这个链接 完成 API-KEY 的获取与配置。

os.environ["DASHSCOPE_API_KEY"] = "INPUT YOUR API-KEY HERE"
3.2 不使用 API-KEY

如果不使用 API-KEY,请参考以下说明修改相关代码。

3.2.1 LLM 模块

src/llm.py 中提供了 QwenQwen_API 两个类分别处理本地推理和调用 API。若不使用 API-KEY,有以下两种方式进行本地推理:

  1. 使用 Qwen 完成本地推理。
  2. Qwen_API 默认调用 API 完成推理,若不使用 API-KEY,还可以使用 vLLM 加速 LLM 推理。可参考如下方式安装 vLLM
    $ git clone https://github.com/vllm-project/vllm.git
    $ cd vllm
    $ python use_existing_torch.py
    $ pip install -r requirements-build.txt
    $ pip install -e . --no-build-isolation
    
    安装完成后,参考 这个链接 进行部署,使用 Qwen_API(api_key="EMPTY", base_url="http://localhost:8000/v1") 初始化实例调用本地推理服务。
3.2.2 TTS 模块

src/tts.py 中提供了 GPT_SoVits_TTSCosyVoice_API 分别处理本地推理和调用 API。若不使用 API-KEY,可直接删除 CosyVoice_API 相关的内容,使用 Edge_TTS 调用 Edge 浏览器的免费 TTS 服务进行推理。

4. 启动服务

$ python app.py

5. 使用自定义数字人(可选)

5.1 自定义数字人形象
  1. /data/video/ 中添加录制好的数字人形象视频。
  2. 修改 /src/thg.pyMuse_Talk 类的 avatar_list,加入 (形象名, bbox_shfit),关于 bbox_shift 的说明参考 这个链接。
  3. /app.py 中 Gradio 的 avatar_name 中加入数字人形象名后重新启动服务,等待完成初始化即可。
5.2 自定义数字人音色

GPT-SoVits 支持自定义音色。demo 中可使用音色克隆功能,上传任意语音内容的参考音频后开始对话,或将音色永久添加到 demo 中:

  1. /data/audio 中添加音色参考音频,音频长度 3-10s,命名格式为 x.wav
  2. /app.py 中 Gradio 的 avatar_voice 中加入音色名(命名格式为 x (GPT-SoVits))后重新启动服务。
  3. TTS 选型选择 GPT-SoVits,开始对话。

6. 已知问题

  1. 报错无法找到某资源:按照报错提示下载对应的资源即可。
  2. 右侧视频流播放卡顿:需等待 Gradio 优化 Video Streaming 效果。
  3. 与模型加载相关:检查权重是否下载完整。

资源

  1. GitHub 仓库:https://github.com/Henry-23/VideoChat
  2. 在线体验 Demo:https://www.modelscope.cn/studios/AI-ModelScope/video_chat

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[CKS] TLS Secrets创建与挂载

目前的所有题目为2024年10月后更新的最新题库,考试的k8s版本为1.31.1 BackGround 您必须使用存储在TLS Secret中的SSL文件,来保护Web 服务器的安全访问。 Task 在clever-cactus namespace中为名为clever-cactus的现有Deployment创建名为clever-cactu…

使用 wxPython 开发 Python 桌面应用程序的完整教程

使用 wxPython 开发 Python 桌面应用程序的完整教程 引言 在当今的软件开发领域,桌面应用程序仍然占据着重要的位置。Python 作为一种灵活且易于学习的编程语言,结合 wxPython 库,可以快速构建跨平台的桌面应用程序。本文将深入探讨 wxPyth…

自动驾驶系列—自动驾驶环境感知:Radar数据的应用与实践

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

DimensionX:从单张图片生成高度逼真的 3D 和 4D 场景

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦! 🥦 微信公众号&#xff…

蓝桥杯备考——算法

一、排序 冒泡排序、选择排序、插入排序、 快速排序、归并排序、桶排序 二、枚举 三、二分查找与二分答案 四、搜索(DFS) DFS(DFS基础、回溯、剪枝、记忆化) 1.DFS算法(深度优先搜索算法) 深度优先搜…

【网络面试篇】其他面试题——Cookie、Session、DNS、CDN、SSL/TLS、加密概念

目录 一、HTTP 相关问题 1. Cookie 和 Session 是什么? (1)Cookie (2)Session 2. Cookie 的工作原理? 3. Session 的工作原理? 4. Cookie 和 Session 有什么区别? 二、其他问…

隧道论文阅读2-采用无人融合扫描数据的基于深度学习的垂直型隧道三维数字损伤图

目前存在的问题: 需要开发新的无人测量系统测量垂直隧道图像数据量巨大,基于深度学习完成损伤评估跟踪获取图像位置的困难,对大型基础设施感兴趣区域(roi)的2d和3d地图建立进行了研究,对整个目标结构的损伤定位仍然具有挑战性。为…

CCF-A类 HPCA 2025 重磅揭晓:录取数据公布

近日,第31届国际计算机体系结构领域顶级会议HPCA (International Symposium on High Performance Computer Architecture) 正式发布了2025年会议的录用通知!本届会议共收到了534 篇提交论文,其中,112篇论文被接收,整体…

Linux应用——线程池

1. 线程池要求 我们创建线程池的目的本质上是用空间换取时间,而我们选择于 C 的类内包装原生线程库的形式来创建,其具体实行逻辑如图 可以看到,整个线程池其实就是一个大型的 CP 模型,接下来我们来完成它 2. 整体模板 #pragma …

IDM扩展添加到Edge浏览器

IDM扩展添加到Edge浏览器 一般情况下,当安装IDM软件后,该软件将会自动将IDM Integration Module浏览器扩展安装到Edge浏览器上,但在某些情况下,需要我们手动安装,以下为手动安装步骤 手动安装IDM扩展到Edge浏览器 打…

docker 拉取MySQL8.0镜像以及安装

目录 一、docker安装MySQL镜像 搜索images 拉取MySQL镜像 二、数据挂载 在/root/mysql/conf中创建 *.cnf 文件 创建容器,将数据,日志,配置文件映射到本机 检查MySQL是否启动成功: 三、DBeaver数据库连接 问题一、Public Key Retrieval is not allowed 问题…

深入探索Waymo自动驾驶技术发展:从DARPA挑战赛到第五代系统的突破

引言 自动驾驶技术正引领着未来出行方式的革命,而Waymo作为全球自动驾驶领域的先锋,始终走在技术发展的最前沿。本文基于Waymo联席CEO德米特里多尔戈夫(Dmitri Dolgov)在No Priors节目中的访谈,全面介绍Waymo的技术发展…

鸿蒙移动应用开发-------初始arkts

一. 什么是arkts ArkTS是HarmonyOS优选的主力应用开发语言。 ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,保持了TS的基本风格,同时通过规范定义强化开发期静态检查和分析,提升程序执行稳定性和…

c++ 输入三条边 绘制三角形

安装图形库 参考 #include "graphics.h" // 就是需要引用这个图形库 #include <conio.h> #include <stdio.h> #include <math.h>// 判断是否可以构成三角形 int isTriangle(int a, int b, int c) {return (a b > c) && (a c >…

A20红色革命文物征集管理系统

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…

Logrus入门

Logrus入门 1. 下载 go get github.com/sirupsen/logrus2. logrus常用方法 logrus.Debugln("Debugln") logrus.Infoln("Infoln") logrus.Warnln("Warnln") logrus.Errorln("Errorln") logrus.Println("Println")// 输出如…

pyspark入门基础详细讲解

1.前言介绍 学习目标&#xff1a;了解什么是Speak、PySpark&#xff0c;了解为什么学习PySpark&#xff0c;了解课程是如何和大数据开发方向进行衔接 使用pyspark库所写出来的代码&#xff0c;既可以在电脑上简单运行&#xff0c;进行数据分析处理&#xff0c;又可以把代码无缝…

权限管理练习2

1.在/home中创建一个名为 file1.txt 的文件&#xff0c;并设置权限为&#xff1a;所有者和组成员可以读写&#xff0c;但其他人只能读。 所有者和组成员可以读写 u rw- g rw- o r-- 2.在 /home 目录下创建一个名为 shared 的子目录&#xff0c;使得所有用户都可以进入&#…

面试经典 150 题:121,125

121. 买卖股票的最佳时机 【参考代码】 动态规划解决 class Solution { public:int maxProfit(vector<int>& prices) {int size prices.size();int min_price 99999, max_profit 0;for(int i0; i<size; i){if(prices[i] < min_price){min_price prices[i…

数据集划分

1、 sklearn玩具数据集介绍 数据量小&#xff0c;数据在sklearn库的本地&#xff0c;只要安装了sklearn&#xff0c;不用上网就可以获取 2 sklearn现实世界数据集介绍 数据量大&#xff0c;数据只能通过网络获取&#xff08;科学上网&#xff09; 3 sklearn加载玩具数据集 示…