实时对话数字人VideoChat

实时对话数字人VideoChat是由阿里达摩院开源的一个实时数字人对话。经实测,效果还不错,每次对话数字人生成视频的时间大致在6-8秒钟,今天将环境搭建步骤及遇到的问题整理下。

本地环境配置:

系统:Ubuntu22.04

显卡:RTX 4090 D(24G)

cuda:12.4(比github推荐的版本高,但是我也复现成功了)

torch:2.3.0

来看下demo显存需求:

    级联方案(ASR-LLM-TTS-THG):约8G,首包约3s(单张A100)。

    端到端语音方案(MLLM-THG):约20G,首包约7s(单张A100)。

github上面有两种搭建方式,一种级联方案,一种端到端方案。刚开始我搭建的端到端方案,但是一直没跑起来,后来转战级联方案,终于成功了,看下最终效果。

实时对话数字人VideoChat

好了,不多说了,咱们下面正式开始。

一、安装环境

图片

    git clone https://github.com/Henry-23/VideoChatgit checkout cascade_only

    当然,如果clone不了的话,也可直接下载代码放进系统里面。但是,问题来了,GitHub上面怎么少文件呢?我比对了下,少了weights文件,然后将weights文件从modelscope下载下来放进GitHub上面下载的代码下面。

    趁着下载模型期间,我直接直接clone了下modelscope的地址,很快下载完了,然后我看了下clone下来的文件,发现有weight文件,然后就直接使用了这个代码。

    到后面运行代码的时候,一直出现加载模型失败。invalid load key ,’v’

    图片

    这种情况是因为没有通过lfs下载大文件,这种方式下载下来的只是个大模型的壳子。

    所以,推荐大家直接按照github上面的步骤进行,防止走了我的坑

      $ 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 requirements.txt

      执行第一步的时候,首先需要安装lfs。接着后面按照步骤执行即可。若没有安装anaconda后台回复”conda“可拿到Ubuntu的anaconda安装文件。

        sudo apt-get updatesudo apt-get instll git-lfs

        二、出现错误修复

        1、安装环境包的时候出现LangSegment==0.3.5 安装失败。如图

        图片

        想着这种问题比较简单,直接

          pip install LangSegment==0.3.5

          就行了,发现,根本没有这个版本,最新版本是0.2.0。然后去https://pypi.org/上查了一下,发现确实最新版本是0.2.0,如图

          图片

          最后还是终于网上找到了这个版本,有需要的话后台回复”LangSegment“获取whl文件。

          2、ntlk 错误,缺少下载文件如图:

          图片

          这个提示很友好,将步骤也告诉你了,按照红字部分的步骤安装下载即可。

            import nltknltk.download('averaged_perceptron_tagger_eng')

            3、got an unexpected keyword argument ‘proxies’,错误如图:

            图片

            httpx 版本不匹配 pip install httpx==0.27.2即可

            4、gradio启动 argument of type ‘bool’ is not iterable,错误如图:

            图片

              pip install pydantic==2.10.6

               安装pydantic即可

              5、src下面llm.py文件报错,‘str’ object has no attribute 'choices',如图:

              图片

              将代码部分修改如下即可。

              图片

              三、接着 执行 app.py,终于成功了。好景不长,新问题又出现了

              6、代码没报错,但是一直没生成语音、数字人视频。接着又是一通查找问题原因。是我的大模型生成回复的api接口调用不成功,试着将QWEN_API改成QWEN试试。src/pipline.py中代码修改如图:

              图片

              图片

              喜大普奔,终于生成成功了。如图:

              图片

              图片

              四、自定义自己的数字人形象。

              官网说可以自定义自己的数字人形象,咱们接着来试试。

              1、data/video 文件夹下上传自己的数字人形象,如图:

              图片

              2、修改src/thg.py中的Muse_Talk类的avatar_list,如图:

              图片

              名称要与上传的数字人视频名称一致。

              3、在/app.py中Gradio的avatar_name中加入数字人形象。如图:

              图片

              切记,这里只填自定义的数字人视频名称即可,若按照demo中的加上(”通义千问“)会一直卡在生成中。

              4、重启项目即可使用自己的数字人形象。

              四、语音克隆

              这个倒没有遇到问题,上传自己准备克隆的语音,然后发送信息即可自动克隆语音。

              总体感觉口型、数字人生成视频的时间都还是不错的。

              这就是demo复现的整个过程,如果大家在复现的时候有遇到什么问题的话,欢迎大家一起来讨论。

              OFDM(正交频分复用)是一种高效的多载波通信技术,它将高速数据流拆分为多个低速子流,并通过多个并行的低带宽子载波传输。这种技术具有高频谱效率、强抗多径衰落能力和灵活的带宽分配优势。 OFDM系统利用大量正交子载波传输数据,子载波间的正交性可有效避免码间干扰(ISI)。其数学表达为多个离散子载波信号的线性组合,调制和解调过程通过FFT(快速傅立叶变换)和IFFT(逆快速傅立叶变换)实现。其关键流程包括:数据符号映射到子载波、IFFT转换为时域信号、添加循环前缀以减少ISI、信道传输、接收端FFT恢复子载波数据和解调原始数据。 Matlab是一种广泛应用于科研、工程和数据分析的高级编程语言和交互式环境。在OFDM系统设计中,首先需掌握Matlab基础,包括编程语法、函数库和工具箱。接着,根据OFDM原理构建系统模型,实现IFFT/FFT变换、循环前缀处理和信道建模等关键算法,并通过改变参数(如信噪比、调制方式)评估系统性能。最后,利用Matlab的绘图功能展示仿真结果,如误码率(BER)曲线等。 无线通信中主要考虑加性高斯白噪声(AWGN),其在频带上均匀分布且统计独立。通过仿真OFDM系统,可在不同信噪比下测量并绘制BER曲线。分析重点包括:不同调制方式(如BPSK、QPSK)对BER的影响、循环前缀长度选择对性能的影响以及信道估计误差对BER的影响。 OFDM技术广泛应用于多个领域,如数字音频广播(DAB)、地面数字电视广播(DVB-T)、无线局域网(WLAN)以及4G/LTE和5G移动通信,是这些通信标准中的核心技术之一。 深入研究基于Matlab的OFDM系统设计与仿真,有助于加深对OFDM技术的理解,并提升解决实际通信问题的能力。仿真得到的关键性能指标(如BER曲线)对评估系统可靠性至关重要。未来可进一步探索复杂信道条件下的OFDM性能及系统优化,以适应不同应用场景
              51单片机是电子工程领域常用的入门级微控制器,广泛应用于小型电子设备,例如电子时钟。本项目将介绍如何利用51单片机设计一款简单的电子时钟,并通过Keil软件进行程序开发,同时借助Proteus仿真工具进行电路模拟,帮助初学者掌握51单片机的基础应用。 51单片机基于Intel 8051内核,集成了CPU、RAM、ROM、定时器/计数器和I/O端口等功能模块,具有易于编程和性价比高的优势。在电子时钟项目中,主要利用其定时器实现时间的精确计算。Keil μVision是51单片机的常用开发环境,支持C语言和汇编语言编程。开发时,需编写代码以控制单片机显示和更新时间,包括初始化时钟硬件、设置定时器中断、编写中断服务程序以及与LCD显示屏交互等步骤。关键环节如下:一是初始化,配置时钟源(如外部晶振)设定工作频率;二是定时器设置,选择合适模式(如模式1或模式2),设置计数初值以获得所需时间分辨率;三是中断服务,编写定时器中断服务程序,定时器溢出时更新时间并触发中断;四是显示控制,通过I/O端口驱动LCD显示屏显示当前时间。 Proteus是一款虚拟原型设计软件,可用于模拟硬件电路,帮助开发者在编程前验证电路设计。在Proteus中,可搭建51单片机、LCD模块、晶振及电阻、电容等元件,形成电子时钟电路模型。运行仿真后,可观察程序在实际电路中的运行情况,及时发现并解决问题。 实际项目中,51单片机电子时钟还涉及以下知识点:一是时钟信号产生,定时器通过计数外部时钟脉冲实现时间累计,可通过调整晶振频率和定时器初始值设置不同时间间隔;二是LCD接口,需理解LCD的命令和数据传输协议,以及如何控制背光、显示模式、行列地址等;三是中断系统,了解中断概念、中断向量及程序中中断的启用和禁用方法;四是数码管显示,若使用数码管而非LCD,需了解其显示原理及段选、位选的驱动方式。 本项目融合了单片机基础、
              ### 开源实时数字人项目的技术实现与框架 开源实时数字人技术近年来发展迅速,其核心在于通过开放协作促进技术创新和技术普及。以下是几个关键技术和框架的相关信息: #### 1. DUIX 数字人项目的独特价值 DUIX 是一个典型的开源数字人项目,它的推出体现了当前技术浪潮下开源的重要性。该项目不仅推动了技术的快速迭代和创新,还显著降低了技术应用的门槛,使更多开发者和企业能够参与其中[^1]。这种模式为数字人技术的发展提供了新动力。 #### 2. Fay 开源数字人框架的核心特性 Fay 是另一个备受关注的开源数字人框架,由 xszyou 开发。该框架以其革命性的设计著称,在人工智能和数字化技术高速发展的背景下,成为数字人领域的重要推手。Fay 的核心特性包括但不限于高度可定制化、支持多模态交互以及具备强大的扩展能力[^2]。这些特点使其适用于多种场景,如智能客服、虚拟主播等。 #### 3. Fay 的具体功能与适用范围 作为一款前沿的开源数字人框架,Fay 提供了一套完整的解决方案,涵盖了从基础架构到高级应用的多个层面。无论是构建智能销售助手还是开发能够自主决策的 Agent,Fay 均能满足多样化的需求[^3]。此外,由于其开源性质,开发者可以自由修改和完善代码,进一步优化性能并适应特定业务环境。 #### 4. 技术实现的关键要素 对于开源实时数字人项目而言,其实现通常依赖于以下几个关键技术: - **计算机视觉**:用于识别人脸表情、手势和其他非语言信号。 - **自然语言处理 (NLP)**:负责理解和生成人类语言,从而实现高效的沟通体验。 - **语音合成与识别**:提供高质量的声音输出及输入解析能力。 - **动画渲染引擎**:确保数字人物形象逼真且动作流畅。 下面是一个简单的 Python 示例程序片段,展示如何利用某些库加载预训练模型来进行基本的人工智能操作(仅为示意用途): ```python import torch from transformers import pipeline # 加载 NLP 模型管道 nlp_model = pipeline('sentiment-analysis') def analyze_sentiment(text): result = nlp_model(text)[0] return f"label: {result['label']}, with score: {round(result['score'], 4)}" print(analyze_sentiment("I love open-source digital human projects!")) ``` 此脚本展示了基于 Hugging Face Transformers 库的情感分析功能,虽然不是直接针对数字人开发,但它反映了现代 AI 工具链的一部分。 ---
              评论 2
              添加红包

              请填写红包祝福语或标题

              红包个数最小为10个

              红包金额最低5元

              当前余额3.43前往充值 >
              需支付:10.00
              成就一亿技术人!
              领取后你会自动成为博主和红包主的粉丝 规则
              hope_wisdom
              发出的红包

              打赏作者

              q_q王

              你的鼓励将是我创作的最大动力

              ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
              扫码支付:¥1
              获取中
              扫码支付

              您的余额不足,请更换扫码支付或充值

              打赏作者

              实付
              使用余额支付
              点击重新获取
              扫码支付
              钱包余额 0

              抵扣说明:

              1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
              2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

              余额充值