Official code release for the CVPR paper Cinematic Audio Source Separation Using Visual Cues.
Kang Zhang1*, Suyeon Lee1*, Arda Senocak2+, Joon Son Chung1+
1 School of Electrical Engineering, KAIST
2 Graduate School of Artificial Intelligence, UNIST
* equal contribution, + equal corresponding.
🎬 Abstract
Cinematic Audio Source Separation (CASS) aims to decompose mixed film audio into speech, music, and sound effects, enabling applications like dubbing and remastering. Existing CASS approaches are audio-only, overlooking the inherent audio-visual nature of films, where sounds often align with visual cues. We present the first framework for audio-visual CASS (AV-CASS), leveraging visual context to enhance separation quality. Our method formulates CASS as a conditional generative modeling problem using conditional flow matching, enabling multimodal audio source separation. To address the lack of cinematic datasets with isolated sound tracks, we introduce a training data synthesis pipeline that pairs in-the-wild audio and video streams, such as facial videos for speech and scene videos for effects, and design a dedicated visual encoder for this dual-stream setup. Trained entirely on synthetic data, our model generalizes effectively to real-world cinematic content and achieves strong performance on synthetic, real-world, and audio-only CASS benchmarks.
Updates
2026.08.05: We have released all files related to the Wrong Placement Ratio (WPR), including the class-label mapping and evaluation implementation.
📁 Repository Overview
This release contains two main components:
av_cass/: training, inference, and evaluation code for audio-only and audio-visual CASS.av_dnr/: dataset preparation, manifest generation, and AVDnR synthesis utilities.
✅ Supported Workflows
- Stage-1 audio-only training.
- Stage-2 audio-visual training.
- Audio-only inference on AVDnR-format data.
- Audio-visual inference on AVDnR-format data.
- Objective evaluation on AVDnR outputs.
- Manifest-driven AVDnR generation.
📦 Pretrained weights
-
AV-CASS checkpoint
- Download the pretrained model weights from the links below.
- You can jump to the Inference section (4. 🔍 Run inference) directly with these pretrained models.
| Model | Link |
|---|---|
| Audio-only | Google Drive Link |
| Audio-visual | Google Drive Link |
-
See
docs/CHECKPOINTS.mdfor the expected layout. -
Visual backbone checkpoints for AV training and AV inference
- CAVP checkpoint: at
Diff-Foley/diff_foley_ckpt/cavp_epoch66.ckptof Diff-Foley - TalkNet checkpoint: at Google Drive
- CAVP checkpoint: at
🛠️ Installation
Create a Python environment with PyTorch, torchaudio, diffusers, accelerate, audioldm_eval, and the visual-backbone dependencies.
The minimal package list is provided in requirements.txt.
🚀 Quick Start
1. 🧱 Build source and split manifests
See av_dnr/prepare_sources/README.md for preparing source datasets (VGGSound & FMA).
After preparation, set the source directories in configs/source_roots.json to your paths.
cd av_dnr
python bin/build_source_manifest.py \
--config configs/source_roots.json \
--output-dir manifests/source_catalog
python bin/make_split_manifests.py \
--catalog-dir manifests/source_catalog \
--output-dir manifests/release_split \
--seed 20260309 \
--test-fraction 0.1
python bin/validate_split_manifests.py \
--split-dir manifests/release_split2. 🎧 Generate AVDnR
cd av_dnr python bin/generate_dataset.py \ --manifest-dir manifests/release_split \ --output-root /path/to/output \ --dataset-name AVDnR \ --split test \ --num-samples 1000 \ --mixture-length 60
3. 🏋️ Train models
- Stage-1 audio-only training:
cd av_cass
DATASET_ROOT=/path/to/AVDnR \
RESULTS_DIR=/path/to/training_output \
NUM_PROCESSES=4 \
bash ./bin/train_ao.sh- Stage-2 audio-visual training (requires a stage-1 checkpoint):
cd av_cass
DATASET_ROOT=/path/to/AVDnR \
RESULTS_DIR=/path/to/training_output \
INIT_CKPT=/path/to/ao_cass_checkpoint.pt \
CAVP_CKPT=/path/to/cavp.ckpt \
TALKNET_CKPT=/path/to/talknet.ckpt \
NUM_PROCESSES=4 \
bash ./bin/train_av.sh4. 🔍 Run inference
- Audio-only:
cd av_cass
DATASET_ROOT=/path/to/AVDnR \
SAMPLE_DIR=/path/to/output_predictions \
CKPT=/path/to/ao_cass_checkpoint.pt \
NUM_GPUS=2 \
./bin/infer_ao.sh- Audio-visual:
cd av_cass
DATASET_ROOT=/path/to/AVDnR \
SAMPLE_DIR=/path/to/output_predictions \
CKPT=/path/to/av_cass_checkpoint.pt \
CAVP_CKPT=/path/to/cavp.ckpt \
NUM_GPUS=2 \
./bin/infer_av.sh5. 📊 Run evaluation
cd av_cass
PRED_ROOT=/path/to/output_predictions/run_name \
GT_ROOT=/path/to/AVDnR/test \
SYMLINK_ROOT=/path/to/tmp_symlinks \
RESULTS_OUT=/path/to/eval_results \
MODEL_NAME=AV-CASS \
./bin/evaluate.sh📝 BibTex
@inproceedings{zhang2026cinematicaudiosourceseparation,
title={Cinematic Audio Source Separation Using Visual Cues},
author={Zhang, Kang and Lee, Suyeon and Senocak, Arda and Chung, Joon Son},
booktitle={IEEE Conf. Comput. Vis. Pattern Recog.},
year={2026}
}
