hallo
一张照片 + 一段音频,让任意人像开口说话的AI动画生成工具
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
一张照片 + 一段音频,让任意人像开口说话的AI动画生成工具
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你上传一张老照片,再配上一段自己朗读诗歌的音频,几秒钟后,照片中的人物就会随着你的声音自然地说话、微笑、皱眉——就像他从未离开过一样。这不是科幻电影,这是 Hallo 正在做的事。
Hallo 是由复旦大学视觉与学习实验室(Fudan Generative Vision)开发的开源项目,全称 "Hierarchical Audio-Driven Visual Synthesis for Portrait Image Animation",即"分层音频驱动的人像图像动画合成"。2024 年 6 月开源以来,它迅速获得了超过 8600 颗 GitHub Stars,成为 AI 生成视频(AIGV)领域最受关注的开源项目之一。
在 Hallo 出现之前,市面上已有多种"让照片动起来"的技术。早期方案依赖复杂的 3D 人脸重建,需要多角度拍摄和精细的面部几何建模,普通人根本无法使用。后来,基于深度学习的方案开始流行,其中 Wav2Lip 等工具能实现唇形同步,但只能处理嘴部区域,生成效果生硬、缺乏整体协调感。
Hallo 的诞生直接回应了这些痛点。项目团队认为,真正的人像动画应该是一个"整体"——面部表情、头部姿态、眼神变化应该与音频内容协调统一,而非各自为政。为此,他们设计了一套分层注意力机制,让模型能够在不同粒度上同时学习音频与视觉特征之间的对应关系。
该论文于 2024 年 6 月发布在 arXiv(arXiv:2406.08801),并在 GitHub 上开源了完整的训练代码和推理代码。
Hallo 的技术架构可以用一个形象的比喻来理解:如果把生成视频比作制作一部动画电影,那么 Hallo 就是那个同时懂剧本(音频)和绘画(图像)的导演。
第一阶段:音频特征提取。 Hallo 使用 Facebook 的 Wav2Vec 模型将原始音频转换为高维向量表示,捕捉音调、节奏、语速等声学特征。同时,系统还使用 audio-separator 工具分离人声,确保背景音乐不会干扰面部动画的生成。
第二阶段:分层视觉合成。 这是 Hallo 最关键的技术创新。不同于以往直接让神经网络"一次性"生成整个视频帧,Hallo 将视觉合成过程分为多个层次:
每个层次由独立的损失函数独立优化,最后通过**分层注意力机制(Hierarchical Cross-Attention)**将各层特征融合,输出连贯自然的动画帧序列。这种设计让模型在训练时更容易收敛,推理时各层次之间也不容易出现"打架"的情况。
第三阶段:视频生成。 融合后的特征向量输入基于 Stable Diffusion 1.5 微调的 3D UNet 时序扩散模型,逐步去噪生成最终的视频帧序列。同时,团队引入了 AnimateDiff 的**运动模块(Motion Module)**来增强帧间的时序平滑性,避免画面闪烁或跳帧。
| 组件 | 技术选型 | 作用 |
|---|---|---|
| 音频编码器 | Wav2Vec 2.0 (facebook/wav2vec2-base-960h) | 音频→特征向量 |
| 人脸分析 | InsightFace + MediaPipe FaceLandmarker | 人脸检测、特征点提取 |
| 扩散模型 | SD 1.5 微调 + 3D UNet | 视频帧生成 |
| 时序模块 | AnimateDiff Motion Module | 帧间平滑过渡 |
| 推理加速 | xFormers + Accelerate | 多卡并行加速 |
Hallo 官方仓库未提供 Dockerfile,需要从源码手动安装。核心依赖包括:
部署流程大约需要 2 小时,主要时间消耗在下载 HuggingFace 上的多个预训练模型(SD 1.5、AnimateDiff、InsightFace、Wav2Vec 等,总计约 10GB+)。
推理示例:
python scripts/inference.py --source_image examples/reference_images/1.jpg --driving_audio examples/driving_audios/1.wav
Hallo 开源后,社区迅速贡献了多个降低门槛的工具:
不过需要注意的是,Hallo 的推理强制需要高性能 GPU(显存 ≥ 24GB),即使走 Docker 或 WebUI 也绕不开这个硬件门槛。
| 维度 | 评价 |
|---|---|
| 代码结构 | 模块化良好,按 models/、animate/、datasets/、utils/ 分层,职责清晰 |
| 文档质量 | README 非常详细,包含安装、推理、训练全流程,技术细节与使用说明并重 |
| 测试覆盖 | 提供了 scripts/extract_meta_info_stage1/2.py 等数据验证脚本,但未发现单元测试 |
| 代码规范 | 包含 .pylintrc、.pre-commit-config.yaml,提交前强制 lint 检查 |
| 部署支持 | 官方无 Dockerfile,但社区资源丰富;提供 Gradio WebUI(scripts/app.py) |
| 训练能力 | 完整开源训练流程,支持自定义数据集,依赖 DeepSpeed 多卡加速 |
总体而言,Hallo 的代码质量和文档水平在学术开源项目中属于顶尖,但部署复杂度仍然较高,代码主要面向有深度学习经验的开发者。
Hallo 的训练数据主要是英文语音的人像视频,团队在 README 中明确说明:"目前仅支持英文音频,因为训练数据集只有英文。"使用中文或其他语言音频时,唇形同步效果会明显下降。
输入图片需满足:正方形裁剪、人脸占比 50%-70%、正脸(旋转角 < 30°)。这意味着:半身照、侧脸照、遮挡严重的人脸均不适用。
让任意照片"说话"的能力天然伴随 Deepfake 风险。项目文档中并未明确讨论安全措施或水印机制,社区已有讨论关于添加隐式数字水印的必要性。
当前版本对时长较长的音频(超过 1 分钟)生成效果会逐渐衰减,表现为面部表情逐渐僵硬或与音频失步。
Hallo 的出现标志着"音频驱动人像动画"从实验室走向大众可用。从 GitHub Stars 增长曲线来看,项目在发布首周即突破 3000 Stars,至今(2025 年中)已超过 8600 Stars,远超同类开源竞品。
这一技术的成熟正在多个领域产生影响:
复旦大学团队在开源后持续活跃维护,并在 2024 年 6 月底进一步开源了训练代码,允许用户使用自己的数据微调模型。此外,JoyHallo 等衍生项目已支持中文普通话,进一步拓展了应用边界。
Hallo 是目前开源社区中音频驱动人像动画领域最具代表性的项目之一。它以分层注意力机制解决了传统方案中表情与音频不协调的问题,配合 SD 1.5 微调的扩散模型,生成效果在同类开源方案中处于领先水平。
对于 AI 爱好者:Hallo 提供了一个门槛相对较低的数字人创建工具,配合 HuggingFace 在线 Demo 可零成本体验。
对于 AI 开发者:Hallo 的模块化架构和完整训练代码是深入理解音频-视觉跨模态学习的优秀范本,但需注意其对 GPU 硬件的高要求和数据偏见问题。
一句话评价:复旦出品,必属精品,但"跑起来"需要一张好显卡。