README.md
April 25, 2026 Β· View on GitHub
Omni2Sound β Your Multimodal Audio Generation Codebase π΅
Official repository for "Omni2Sound: Towards Unified Video-Text-to-Audio Generation"
π Accepted at CVPR 2026 (Highlight)
Omni2Sound is a unified framework for generating temporally aligned and semantically faithful audio from video, text, or both, handling three tasks β VT2A (video + text β audio), V2A (video β audio), and T2A (text β audio) β within a single model. Our design principle is to keep the model simple and push performance through data and training: instead of chasing bespoke architectures, Omni2Sound is built on a plain, off-the-shelf DiT backbone, and all of our gains come from a high-quality dataset (SoundAtlas) and a three-stage progressive multitask training schedule. With nothing fancy in the model, this deliberately minimal design still delivers state-of-the-art performance across all three tasks and remains robust under challenging scenarios such as off-screen audio synthesis and incomplete text inputs.
β¨ Highlights
- π Omni2Sound β unified state-of-the-art across VT2A, V2A, and T2A on the VGGSound-Omni benchmark
- π SoundAtlas β large-scale, high-quality A-V-T aligned audio captions, surpassing even human-expert annotation quality
- π§ͺ VGGSound-Omni β unified VTA evaluation benchmark with robustness off-screen tracks
- π Open-source friendly β a multimodal extension of stable-audio-tools, with both inference and finetune code released
π¬ Out-of-Distribution demos
Omni2Sound generalizes to stylised / fictional videos it never saw during training while preserving tight audio-visual synchronization.
| Gongs and drums + lip-synced chorus | Steady guitar + chorus + crackling flames | Melodic vocal with wind chimes in forest |
| Acoustic guitar synced with teenager's motion | Ice clinking synced with bubble hissing | Creaking intensifying with motion rhythm |
π For the full set of demos (VT2A, V2A, caption-quality comparisons), see the π¬ project page.
π οΈ Quick Start
1. Environment
Tested on Python 3.10 + CUDA 12.1. Clone the repo, install the torch wheel matching your CUDA first, then install the remaining requirements:
git clone https://github.com/omni2sound/Omni2Sound.git
cd Omni2Sound
# 1) Install torch first (pick the CUDA wheel matching your driver)
pip install torch==2.1.0 torchaudio==2.1.0 torchvision==0.16.0 \
--index-url https://download.pytorch.org/whl/cu121
# 2) Install the rest
pip install -r requirements.txt
2. Download model weights
Download three model folders into weights/:
| Model | Source | Target directory |
|---|---|---|
| Omni2Sound (ours) | Dalision/Omni2Sound | weights/omni2sound/ |
| DFN5B-CLIP-ViT-H-14-384 | apple/DFN5B-CLIP-ViT-H-14-384 | weights/DFN5B-CLIP-ViT-H-14-384/ |
| flan-t5-base | google/flan-t5-base | weights/flan-t5-base/ |
One-liner with huggingface-cli:
huggingface-cli download Dalision/Omni2Sound --local-dir weights/omni2sound
huggingface-cli download apple/DFN5B-CLIP-ViT-H-14-384 --local-dir weights/DFN5B-CLIP-ViT-H-14-384
huggingface-cli download google/flan-t5-base --local-dir weights/flan-t5-base
Expected layout:
weights/
βββ omni2sound/
β βββ oob_vae_16k_224410.ckpt
β βββ synchformer_state_dict.pth
β βββ vt2a-24-v55vt35-oa15-mq-td15/
β βββ args.yaml
β βββ data_config.yaml
β βββ model_config.json
β βββ checkpoints/model.ckpt
βββ DFN5B-CLIP-ViT-H-14-384/
βββ flan-t5-base/
π§ Inference
Omni2Sound accepts any of { video, text, video + text } and produces temporally and semantically aligned audio.
Online β from raw mp4
CLIP / Synchformer features are extracted on the fly. The input jsonl does
not need any feature field.
bash scripts/infer_online.sh
Offline β with pre-extracted features
If you have pre-computed CLIP and Synchformer features per clip, use the faster offline path:
bash scripts/infer.sh
Both scripts default to the mock dataset under data/mock_dataset/. To run
on your own data, edit dataset_config= at the top of the script and point
it to your jsonl.
𧬠Finetune on your own data
Finetuning is organised in scripts/train.sh as two sequential stages:
bash scripts/train.sh 0 # Stage 0: joint VT2A + V2A + T2A finetuning
bash scripts/train.sh 1 # Stage 1: resume stage 0 with data augmentation
# (off-screen synthesis + text dropout)
Note
Multi-GPU training uses a custom DistributedVT2ASampler as the batch sampler.
PyTorch Lightning will try to re-wrap it and pass unsupported arguments (drop_last, etc.), causing a crash.
You need to patch one function in your Lightning installation to fix this.
Open the file (replace <your_env> with your conda env name):
<conda_root>/envs/<your_env>/lib/python3.10/site-packages/pytorch_lightning/utilities/data.py
Find the function _dataloader_init_kwargs_resolve_sampler (around line 230), and insert an early return before the if batch_sampler is not None line:
batch_sampler = getattr(dataloader, "batch_sampler")
batch_sampler_cls = type(batch_sampler)
# --- patch: skip Lightning's batch-sampler re-wrapping ---
return {
"sampler": None,
"shuffle": False,
"batch_sampler": batch_sampler,
"batch_size": 1,
"drop_last": False,
}
if batch_sampler is not None and (batch_sampler_cls is not BatchSampler or is_predicting):
- Stage 0 β Multi-task Interleaved Finetuning. Jointly optimises VT2A, V2A, and T2A on paired (V, T, A) triplets plus T2A / V2A data, using a shared DiT backbone.
- Stage 1 β Decoupled Robustness Finetuning. Continues from the Stage-0 checkpoint with two pushβpull synergistic augmentations: off-screen synthesis counteracts video bias, while text dropout counteracts text bias, keeping cross-modal reliance balanced under asymmetric input scenarios.
Batch feature extraction (CLIP and Synchformer) follows the pipeline of MMAudio β please refer to that repo for the extractor setup.
π§ͺ Benchmark
Two benchmarks are released at π€ Dalision/Omni2Sound_Benchmark:
- SoundAtlas β a large-scale A-V-T triple dataset augmenting AudioSet and VGGSound, produced by an agentic annotation pipeline that combines Vision-to-Language Compression (to mitigate visual hallucinations) with a JuniorβSenior Agent Handoff (for 5Γ cost reduction), delivering captions that surpass even human-expert quality.

The SoundAtlas agentic annotation pipeline.
- VGGSound-Omni β unified VT2A / V2A / T2A evaluation, including off-screen audio and incomplete-text robustness tracks.
π Citation
If you find this work useful, please cite:
@article{dai2026omni2sound,
title = {Omni2Sound: Towards Unified Video-Text-to-Audio Generation},
author = {Dai, Yusheng and Chen, Zehua and Jiang, Yuxuan and Gao, Baolong and
Ke, Qiuhong, Cai, Jianfei and Zhu, Jun},
journal = {arXiv preprint arXiv:2601.02731},
year = {2026}
}
π§ Contact
If you have any comments or questions, feel free to contact: yusheng.dai@monash.edu
π Acknowledgements
- stable-audio-tools β codebase, DiT backbone and OOB VAE
- FreeAudio β T2A pretrain + Wav VAE
- MMAudio β feature extraction pipeline
- Synchformer β synchronisation features
- AudioX β prior work on unified multimodal audio generation
π License
Both the code and the model weights are released under CC BY-NC 4.0 (non-commercial use only).