你是否设想过,未来视频通话中的“你”可能是一个表情生动、唇形同步的虚拟形象?或者在线课堂的老师是一个能实时互动、动作自然的数字人?
Ant Group 发布的Ditto-Talkinghead技术,将这一想象变为现实!这项被网友称为“数字人技术天花板”的突破,不仅让虚拟形象“活”了起来,还能做到实时生成、精准控制、零门槛使用。今天我们就来揭秘这项黑科技背后的故事!
架构
扩散模型的最新进展彻底改变了音频驱动的说话头合成。除了精确的嘴唇同步之外,基于扩散的方法还擅长生成与音频信号完美对齐的微妙表情和自然的头部运动。
然而,这些方法面临着推理速度慢、对面部运动的精细控制不足以及偶尔出现的视觉伪影,这主要是由于变分自动编码器 (VAE) 衍生的隐含潜在空间造成的,这阻碍了它们在实时交互应用中的采用。
为了解决这些问题,引入了 Ditto,这是一个基于扩散的框架,可实现可控的实时说话头合成。关键创新在于通过与身份无关的显式运动空间将运动生成和逼真的神经渲染联系起来,取代了传统的 VAE 表示。这种设计大大降低了扩散学习的复杂性,同时能够精确控制合成的说话头。
Ditto进一步提出了一种推理策略,该策略联合优化了三个关键组件:音频特征提取、运动生成和视频合成。这种优化支持流处理、实时推理和低首帧延迟,这些功能对于 AI 助手等交互式应用程序至关重要。大量实验结果表明,Ditto 可以生成引人注目的说话头像视频,并且在运动控制和实时性能方面都大大优于现有方法。
Ditto-Talkinghead 在以下几个方面表现出色:
-
• ⚡ 实时性:经过优化,可以实现接近实时的生成速度。
-
• 🕹 高控制性:能够精确控制面部动作,例如表情、头部姿态和视线方向。
-
• 🖼 高质量:生成的说话头视频效果逼真,唇形与语音同步准确,表情和头部运动自然流畅。
-
• 🤸 灵活性:仅需一张静态图像,即可生成动态的说话头视频。
样例展览
精细控制:凝视、头部姿势、情绪
全身肖像(中文)
快速部署
代码克隆
git clone https://github.com/antgroup/ditto-talkinghead
cd ditto-talkinghead
Conda环境创建
conda env create -f environment.yaml
conda activate ditto
依赖安装
pip install \
tensorrt==8.6.1 \
librosa \
tqdm \
filetype \
imageio \
opencv_python_headless \
scikit-image \
cython \
cuda-python \
imageio-ffmpeg \
colored \
polygraphy \
numpy==2.0.1
模型下载
可以从HuggingFace上下载模型文件并存放到checkpoints目录(目录默认未创建,请自行创建)
git lfs install
git clone https://huggingface.co/digital-avatar/ditto-talkinghead checkpoints
checkpoints目录结构如下:
./checkpoints/
├── ditto_cfg
│ ├── v0.4_hubert_cfg_trt.pkl
│ └── v0.4_hubert_cfg_trt_online.pkl
├── ditto_onnx
│ ├── appearance_extractor.onnx
│ ├── blaze_face.onnx
│ ├── decoder.onnx
│ ├── face_mesh.onnx
│ ├── hubert.onnx
│ ├── insightface_det.onnx
│ ├── landmark106.onnx
│ ├── landmark203.onnx
│ ├── libgrid_sample_3d_plugin.so
│ ├── lmdm_v0.4_hubert.onnx
│ ├── motion_extractor.onnx
│ ├── stitch_network.onnx
│ └── warp_network.onnx
└── ditto_trt_Ampere_Plus
├── appearance_extractor_fp16.engine
├── blaze_face_fp16.engine
├── decoder_fp16.engine
├── face_mesh_fp16.engine
├── hubert_fp32.engine
├── insightface_det_fp16.engine
├── landmark106_fp16.engine
├── landmark203_fp16.engine
├── lmdm_v0.4_hubert_fp32.engine
├── motion_extractor_fp32.engine
├── stitch_network_fp16.engine
└── warp_network_fp16.engine
推理
运行inference.py
python inference.py \
--data_root "<path-to-trt-model>" \
--cfg_pkl "<path-to-cfg-pkl>" \
--audio_path "<path-to-input-audio>" \
--source_path "<path-to-input-image>" \
--output_path "<path-to-output-mp4>"
示例
python inference.py \
--data_root "./checkpoints/ditto_trt_Ampere_Plus" \
--cfg_pkl "./checkpoints/ditto_cfg/v0.4_hubert_cfg_trt.pkl" \
--audio_path "./example/audio.wav" \
--source_path "./example/image.png" \
--output_path "./tmp/result.mp4"
推理性能:一分钟左右的音频,生成效率差不多在一分半左右。
项目及技术应用场景
Ditto-talkinghead 的应用场景丰富多样,以下是一些主要应用领域:
-
虚拟助手与数字人:为虚拟助手和数字人提供更加自然和逼真的面部动画。
-
在线教育:教师可以使用实时生成的说话人头进行在线教学,提高课堂互动性。
-
远程通讯:在视频通话中,用户可以选择个性化的说话人头,增强沟通体验。
-
娱乐产业:为游戏、电影等娱乐内容提供高质量的角色面部动画。
【结语】
从“机械复读”到“情感交互”,Ditto-Talkinghead让我们看到:技术的温度,在于无限逼近人性的真实。也许不久的将来,每个人都能拥有自己的“数字分身”,而这一天,可能比想象中来得更快。
-------------------------------------------------------------------------------------------------------------------------
了解更多大数据以及人工智能咨询,请关注微信公众号:智数星辰