JoyHallo
JoyHallo 是一款专为中文语境打造的数字人生成模型,能够根据音频驱动生成口型自然、表情生动的真人视频。针对以往音频驱动视频技术在中文场景下面临的难题——如高质量中文数据集稀缺、中文发音对应的唇部运动更为复杂等,JoyHallo 通过构建包含 29 小时多样化中文演讲视频的 jdh-Hallo 数据集,并引入中文 wav2vec2 模型进行音频特征嵌入,显著提升了中文视频生成的准确度与流畅度。
该模型采用半解耦架构,有效捕捉唇形、表情与姿态之间的关联,在提升信息利用效率的同时,将推理速度加快了 14.3%。值得一提的是,JoyHallo 不仅擅长中文视频生成,还保留了出色的英文跨语言生成能力,适用场景更加广泛。
JoyHallo 非常适合 AI 开发者、多媒体研究人员以及数字内容创作者使用,尤其适用于需要制作中文虚拟主播、在线教育视频、医疗科普内容等场景。其开源特性与清晰的部署文档,也让具备一定技术基础的用户能够快速上手实验与二次开发。目前模型权重已托管于 Hugging Face,支持社区自由下载与体验。
使用场景
某互联网医疗平台的内容运营团队急需将最新的普通话健康科普文章快速转化为真人讲解视频,以触达更多中老年用户。
没有 JoyHallo 时
- 发音生硬不自然:通用的数字人模型多基于英语训练,强行用于中文时唇形与声调严重不同步,导致“口型对不上”,观众观感极差。
- 数据采集成本高昂:为了获得自然的中文口型,团队需花费数周时间录制特定医生的高清视频素材,且难以覆盖多样化的年龄和语速风格。
- 跨语言支持缺失:若需同时制作中英文双语版本,必须分别寻找两套不同的生成方案或模型,工作流割裂且维护成本高。
- 推理速度缓慢:现有开源方案在处理复杂的中文唇部运动特征时计算冗余大,生成一段 1 分钟视频往往需要数小时,无法满足每日更新需求。
使用 JoyHallo 后
- 中文唇形精准同步:JoyHallo 专为普通话优化,内置中文 wav2vec2 音频嵌入,能完美捕捉中文特有的复杂唇部动作,生成的视频口型自然流畅。
- 零样本快速启动:依托其训练的 jdh-Hallo 数据集(涵盖不同年龄与医疗话题),团队无需重新采集数据,直接输入文本和音频即可生成专业风格的医生讲解视频。
- 中英双语无缝切换:JoyHallo 具备强大的跨语言生成能力,同一套模型即可高质量输出中文和英文视频,大幅简化了多语言内容的生产流程。
- 推理效率显著提升:得益于半解耦结构对特征关系的高效捕捉,JoyHallo 将推理速度提升了 14.3%,让批量生成科普视频成为实时可行的操作。
JoyHallo 通过专攻中文语音难点与架构优化,让高质量的普通话数字人视频生成变得低成本、高效率且自然逼真。
运行环境要求
- Linux
需要 NVIDIA GPU,测试型号为 A100,CUDA 11.3
未说明

快速开始
JoyHallo:中文数字人模型
📖 引言
在音频驱动的视频生成任务中,制作中文视频面临着诸多挑战。一方面,高质量的中文数据集收集难度较大;另一方面,中文复杂的唇部动作使得模型训练相较于英文更为复杂。为此,我们从京东健康国际公司的员工处收集了29小时的中文语音视频数据,构建了jdh-Hallo数据集。该数据集涵盖了不同年龄段和多种说话风格,内容既包括日常对话也涉及专业医学领域。为了使JoyHallo模型适应中文场景,我们引入了Chinese wav2vec2模型进行音频特征提取,并提出了一种半解耦结构来捕捉唇部、表情和姿态特征之间的相互关系。这一改进不仅提升了信息利用效率,还使推理速度提升了14.3%。值得注意的是,JoyHallo依然保持了其强大的英文视频生成能力,展现出出色的跨语言生成性能。
📰 新闻
- 2024年11月19日:🎉🎉🎉 我们自豪地推出全新模型JoyVASA。它比其他生成模型更轻量、更快。点击此处查看主页。
🎬 视频—中文—女性
https://github.com/user-attachments/assets/389e053f-e0c4-433c-8c60-80f9181d3f9c
🎬 视频—中文—男性
https://github.com/user-attachments/assets/1694efd9-2577-4bb5-ada4-7aa711d016a6
🎬 视频—英文
https://github.com/user-attachments/assets/d6b2efea-be76-442e-a8aa-ea0eef8b5f12
🧳 框架

⚙️ 安装
系统要求:
- 经测试支持Ubuntu 20.04及CUDA 11.3
- 测试GPU:A100
创建环境:
# 1. 创建基础环境
conda create -n joyhallo python=3.10 -y
conda activate joyhallo
# 2. 安装依赖
pip install -r requirements.txt
# 3. 安装ffmpeg
sudo apt-get update
sudo apt-get install ffmpeg -y
🎒 准备模型检查点
1. 下载基础检查点
使用以下命令下载基础权重:
git lfs install
git clone https://huggingface.co/fudan-generative-ai/hallo pretrained_models
2. 下载chinese-wav2vec2-base模型
使用以下命令下载chinese-wav2vec2-base模型:
cd pretrained_models
git lfs install
git clone https://huggingface.co/TencentGameMate/chinese-wav2vec2-base
3. 下载JoyHallo模型
git lfs install
git clone https://huggingface.co/jdh-algo/JoyHallo-v1 pretrained_models/joyhallo
为方便起见,我们已将模型权重上传至Hugging Face平台。
| 模型 | 数据集 | Hugging Face 链接 |
|---|---|---|
| JoyHallo | jdh-Hallo | JoyHallo |
4. pretrained_models 目录结构
最终的pretrained_models目录应如下所示:
./pretrained_models/
|-- audio_separator/
| |-- download_checks.json
| |-- mdx_model_data.json
| |-- vr_model_data.json
| `-- Kim_Vocal_2.onnx
|-- face_analysis/
| `-- models/
| |-- face_landmarker_v2_with_blendshapes.task
| |-- 1k3d68.onnx
| |-- 2d106det.onnx
| |-- genderage.onnx
| |-- glintr100.onnx
| `-- scrfd_10g_bnkps.onnx
|-- hallo/
| `-- net.pth
|-- joyhallo/
| `-- net.pth
|-- motion_module/
| `-- mm_sd_v15_v2.ckpt
|-- sd-vae-ft-mse/
| |-- config.json
| `-- diffusion_pytorch_model.safetensors
|-- stable-diffusion-v1-5/
| `-- unet/
| |-- config.json
| `-- diffusion_pytorch_model.safetensors
|-- wav2vec/
| `-- wav2vec2-base-960h/
| |-- config.json
| |-- feature_extractor_config.json
| |-- model.safetensors
| |-- preprocessor_config.json
| |-- special_tokens_map.json
| |-- tokenizer_config.json
| `-- vocab.json
`-- chinese-wav2vec2-base/
|-- chinese-wav2vec2-base-fairseq-ckpt.pt
|-- config.json
|-- preprocessor_config.json
`-- pytorch_model.bin
🚧 数据要求
图像:
- 裁剪为正方形。
- 人脸需正面朝向,占据图像的50%–70%。
音频:
- 格式为
wav。 - 支持中文、英文或混合语种,要求音频清晰且背景音乐适宜。
[!重要提示] 以上要求适用于训练与推理过程。
🚀 推理
1. 命令行推理
使用以下命令执行推理:
sh joyhallo-infer.sh
[!提示] 若希望提升推理速度,可将
configs/inference/inference.yaml中的inference_steps由40调整为15,这将立即提高效率。您还可以进一步降低该值,但可能会导致生成效果变差。同时可以尝试调整cfg_scale参数。
通过修改configs/inference/inference.yaml中的参数,您可以指定使用的音频和图像文件,并切换不同的模型。推理结果将保存在opts/joyhallo目录下。该配置文件中的参数说明如下:
- audio_ckpt_dir:模型权重路径。
- ref_img_path:参考图像路径。
- audio_path:参考音频路径。
- output_dir:输出目录。
- exp_name:输出文件夹名称。
2. Web演示推理
使用以下命令启动Web演示:
sh joyhallo-app.sh
演示将在http://127.0.0.1:7860上运行。
⚓️ 训练或微调JoyHallo
在训练或微调模型时,您有两个选择:可以从阶段1开始,或者仅训练阶段2。
1. 使用以下命令从阶段1开始训练
sh joyhallo-alltrain.sh
这将自动启动两个阶段的训练(包括阶段1和阶段2),你可以参考 configs/train/stage1_alltrain.yaml 和 configs/train/stage2_alltrain.yaml 来调整训练参数。
2. 使用以下命令仅训练阶段2
sh joyhallo-train.sh
这将从 阶段2 开始训练,你可以参考 configs/train/stage2.yaml 来调整训练参数。
🎓 准备训练数据
1. 按照以下目录结构准备数据,确保数据符合前面提到的要求
jdh-Hallo/
|-- videos/
| |-- 0001.mp4
| |-- 0002.mp4
| |-- 0003.mp4
| `-- 0004.mp4
2. 使用以下命令处理数据集
# 1. 从视频中提取特征。
python -m scripts.data_preprocess --input_dir jdh-Hallo/videos --step 1 -p 1 -r 0
python -m scripts.data_preprocess --input_dir jdh-Hallo/videos --step 2 -p 1 -r 0
# 2. 获取jdh-Hallo数据集。
python scripts/extract_meta_info_stage1.py -r jdh-Hallo -n jdh-Hallo
python scripts/extract_meta_info_stage2.py -r jdh-Hallo -n jdh-Hallo
[!NOTE] 请按顺序执行步骤1和步骤2,因为它们执行不同的任务。步骤1会将视频转换为帧、从每个视频中提取音频,并生成所需的掩码。步骤2则使用InsightFace生成人脸嵌入,使用Chinese wav2vec2生成音频嵌入,且需要GPU支持。若需并行处理,可使用
-p和-r参数。其中-p参数指定要启动的实例总数,将数据分成p份;-r参数指定当前进程应处理的那部分数据。你需要手动启动多个实例,并为每个实例设置不同的-r值。
💻 对比
1. 普通话下的准确率对比
| 模型 | IQA $\uparrow$ | VQA $\uparrow$ | Sync-C $\uparrow$ | Sync-D $\downarrow$ | Smooth $\uparrow$ | Subject $\uparrow$ | Background $\uparrow$ |
|---|---|---|---|---|---|---|---|
| Hallo | 0.7865 | 0.8563 | 5.7420 | 13.8140 | 0.9924 | 0.9855 | 0.9651 |
| JoyHallo | 0.7781 | 0.8566 | 6.1596 | 14.2053 | 0.9925 | 0.9864 | 0.9627 |
注:此处使用的评估指标来自以下仓库,结果仅供参考:
2. 英语下的准确率对比
| 模型 | IQA $\uparrow$ | VQA $\uparrow$ | Sync-C $\uparrow$ | Sync-D $\downarrow$ | Smooth $\uparrow$ | Subject $\uparrow$ | Background $\uparrow$ |
|---|---|---|---|---|---|---|---|
| Hallo | 0.7779 | 0.8471 | 4.4093 | 13.2340 | 0.9921 | 0.9814 | 0.9649 |
| JoyHallo | 0.7779 | 0.8537 | 4.7658 | 13.3617 | 0.9922 | 0.9838 | 0.9622 |
3. 推理效率对比
| JoyHallo | Hallo | 提升 | |
|---|---|---|---|
| GPU内存(512*512,步长40) | 19049m | 19547m | 2.5% |
| 推理速度(16帧) | 24s | 28s | 14.3% |
📝 引用
如果你觉得我们的工作对你有帮助,请考虑引用我们:
@misc{shi2024joyhallo,
title={JoyHallo: Mandarin语言的数字人模型},
author={Sheng Shi and Xuyang Cao and Jun Zhao and Guoxin Wang},
year={2024},
eprint={2409.13268},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2409.13268},
}
🤝 致谢
我们衷心感谢 Hallo、wav2vec 2.0、Chinese-wav2vec2、Q-Align、Syncnet、VBench 以及 Moore-AnimateAnyone 等项目的贡献者们,感谢他们开放的研究精神和卓越的工作成果。
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。