OmniAvatar
综合介绍
OmniAvatar 是一个由浙江大学和阿里巴巴集团共同开发的开源项目,它能够根据一段音频、一张人物照片和一段描述文字,生成一个带有自然身体动画的虚拟人视频。 和之前大多数只关注脸部动画的模型不同,OmniAvatar能够驱动全身的动作,包括手势和身体的姿态,使得生成的视频更加生动和真实。 该模型通过一种名为“像素级多层次音频嵌入”的技术,提升了口型与音频的同步准确性。 同时,用户可以使用简单的文字指令(Prompt)来控制视频中人物的行为、情绪乃至背景环境,例如可以让虚拟人表现出开心或愤怒,或者让背景变成动态的场景。 这个项目利用了LoRA训练方法,在保留了基础视频模型强大的文生视频能力的同时,高效地融入了音频信息,实现了对虚拟人视频内容更精细的控制。
功能列表
- 音频驱动生成: 输入一段音频和一张静态人物图片,即可生成对应的虚拟人说话视频。
- 全身动画: 不仅限于面部,模型能生成包含手臂、躯干等部分的自适应全身动作。
- 口型同步: 采用像素级多层次音频嵌入策略,确保视频中人物的口型与输入音频高度同步。
- 文本指令控制: 用户可以通过文本提示(Prompt)精确控制视频内容,包括:
- 情绪控制: 指定人物表现出开心、悲伤、愤怒等不同情绪。
- 行为动作: 控制人物的动作幅度,甚至可以实现与物体的互动。
- 背景控制: 能够根据文本描述改变视频背景,例如将人物置于动态的汽车内。
- 多种模型尺寸: 提供1.3B和14B两种参数规模的模型,用户可以根据设备性能选择。
- 性能优化: 支持多种高级配置,如使用
FSDP
以减少多GPU推理时的显存占用,或调整TeaCache
参数来加速生成过程。 - 开源免费: 项目代码、模型权重均已在Hugging Face和Github开放,并采用Apache-2.0许可证。
使用帮助
OmniAvatar 能够将一张静态图片和一段音频,结合文本指令,转化成一段生动的虚拟人视频。以下是详细的安装和使用流程。
1. 安装
首先,需要将OmniAvatar的项目代码克隆到你的本地计算机。
git clone https://github.com/Omni-Avatar/OmniAvatar.git
cd OmniAvatar
接下来,安装项目所需的核心依赖库,主要是PyTorch以及其他一些Python包。官方建议使用特定版本的PyTorch。
# 推荐使用cu124版本的PyTorch
pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 --index-url https://download.pytorch.org/whl/cu124
# 安装其他依赖
pip install -r requirements.txt
为了获得更快的处理速度,你可以选择性安装flash_attn
库来加速模型的注意力计算。
pip install flash_attn
2. 下载模型
OmniAvatar的运行需要依赖多个预训练模型。你需要先创建一个用于存放模型的文件夹,然后使用huggingface-cli
工具从Hugging Face Hub上下载。
首先,创建目录并安装Hugging Face的命令行工具。
mkdir pretrained_models
pip install "huggingface_hub[cli]"
然后,根据你希望使用的模型大小(1.3B或14B),下载对应的模型文件。以下载14B模型为例:
# 下载基础视频模型
huggingface-cli download Wan-AI/Wan2.1-T2V-14B --local-dir ./pretrained_models/Wan2.1-T2V-14B
# 下载OmniAvatar的LoRA和音频条件权重
huggingface-cli download OmniAvatar/OmniAvatar-14B --local-dir ./pretrained_models/OmniAvatar-14B
# 下载音频编码器模型
huggingface-cli download facebook/wav2vec2-base-960h --local-dir ./pretrained_models/wav2vec2-base-960h
下载完成后,请确保你的pretrained_models
文件夹结构如下所示:
OmniAvatar
└── pretrained_models
├── Wan2.1-T2V-14B
│ └── ...
├── OmniAvatar-14B
│ ├── config.json
│ └── pytorch_model.pt
└── wav2vec2-base-960h
└── ...
3. 准备输入文件
你需要准备一个文本文件,用于定义生成视频的各项输入。这个文件(例如examples/infer_samples.txt
)的格式非常关键,每一行代表一次生成任务,格式如下:
[prompt]@@[img_path]@@[audio_path]
[prompt]
: 描述视频内容的文本。官方建议格式为“[第一帧画面的描述] - [人物行为的描述] - [背景描述(可选)]”。例如:"A man is talking - upper body - in a wood room"。[img_path]
: 你的原始人物图片路径。[audio_path]
: 你希望人物朗读的音频文件路径。
4. 执行生成命令
准备好所有文件后,就可以运行推理脚本来生成视频了。
单GPU生成(以1.3B模型为例)这是一个基本的生成命令,使用inference_1.3B.yaml
配置文件和infer_samples.txt
输入文件。
torchrun --standalone --nproc_per_node=1 scripts/inference.py \
--config configs/inference_1.3B.yaml \
--input_file examples/infer_samples.txt
多GPU生成与性能优化如果你的设备拥有多张GPU,可以通过并行处理来加速生成。同时,你也可以通过调整参数来管理显存占用。
例如,在一个拥有8张GPU的设备上,你可以使用FSDP
(Fully Sharded Data Parallel)来显著降低显存占用。
torchrun --standalone --nproc_per_node=8 scripts/inference.py \
--config configs/inference.yaml \
--input_file examples/infer_samples.txt \
--hp=sp_size=8,max_tokens=30000,guidance_scale=4.5,overlap_frame=13,num_steps=25,use_fsdp=True,tea_cache_l1_thresh=0.14,num_persistent_param_in_dit=7000000000
--hp=...
: 用于传递一系列超参数。sp_size=8
: 设置序列并行数为8(与GPU数量对应)。use_fsdp=True
: 启用FSDP来优化显存。num_steps=25
: 设置扩散模型的步数,步数越多通常质量越好,但速度越慢。推荐范围是[20-50]。
生成的视频文件将保存在输出目录中,你可以在配置文件configs/inference.yaml
里查看或修改输出路径。
应用场景
- 播客与访谈节目只需要一张主持人的照片和节目的音频,就可以自动生成主持人的讲解视频,大大降低了视频内容的制作成本和周期。
- 电商营销广告可以生成模特介绍产品的视频。通过文本指令,还能让模特与产品进行互动,例如拿起一件商品进行展示,使广告内容更具吸引力。
- 虚拟歌手表演输入歌曲的音频和虚拟偶像的图片,OmniAvatar可以生成口型精准、肢体动作自然的演唱视频,为虚拟偶像的舞台表演提供了一种高效的制作方案。
- 个性化数字人普通用户可以利用自己的照片和录音,轻松创造一个能说会动的“数字分身”,用于社交媒体、视频简历或在线教育等多种场合。
QA
- OmniAvatar与其他的“AI说话脸”工具有什么不同?最大的不同在于OmniAvatar能够生成“全身”动画,而不仅仅是脸部。 它不仅能实现精准的口型同步,还能根据音频和文本指令,生成自然的身体姿态、手势和动作,适用场景更广泛。
- 我是否需要很强的编程能力才能使用它?需要一些基础的命令行操作能力。使用者需要熟悉如何使用
git
克隆代码库,并使用pip
安装Python依赖。核心操作是通过运行提供的脚本来完成的,但需要根据文档正确配置模型路径和输入文件。 - 对硬件设备(GPU)有什么要求?要求较高。根据官方提供的数据,即便是经过优化的14B模型,在单张GPU上也需要至少8GB的显存才能运行,而标准模式下则需要36GB显存。因此,推荐在配备有高端NVIDIA GPU的设备上运行。
- 是否可以控制视频中人物说话的语气和情绪?是的。你可以通过在
prompt
中加入描述性词语来控制情绪,例如“happy”(开心)、“angry”(愤怒)等。 此外,通过调整audio_cfg
参数,可以增强口型与音频的匹配度,让语气表现更突出。