File size: 3,811 Bytes
86b2ec3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | ---
license: mit
tags:
- active-speaker-detection
- audio-visual
- speaker-diarization
- streaming
- pytorch
- pytorch-lightning
---
# CAST-ASD
Pretrained weights for **CAST-ASD: Causal Attention over Speakers and Time for Online Active Speaker Detection**.
Pratham Gupta, Haotian Qi, Tushar Sandhan, Gabriel Skantze
[Paper (arXiv:2610.14676)](https://arxiv.org/abs/2610.14676) · [Code](https://github.com/prathamg007/CAST-ASD) · [Project page and interactive demo](https://prathamg007.github.io/CAST-ASD/)
CAST-ASD decides, for every visible face in every video frame, whether that person is speaking, without reading any future frame. It adds one CAST block to a causal per-face backbone: a speaker pass attends across the faces present at the current frame, and a time pass attends causally over each face's own past. The block has 1.57M parameters, independent of the number of faces. On MSDWild it removes 32% of the competing-speaker false alarms of the causal per-face backbone it extends.
## Files
All four checkpoints are CAST ×1 (one block). Each needs its config, included here and in the code repository.
| File | Config | Seed | Validation mAP | Paper (mean of 3 seeds) |
|---|---|:---:|---|---|
| `weights/msdwild_cast.ckpt` | `configs/msdwild/cast.yaml` | 42 | few.val 97.01, many.val 90.66 | few.val 96.99, many.val 90.56 |
| `weights/msdwild_cast_offline.ckpt` | `configs/msdwild/cast_offline.yaml` | 1 | few.val 97.55, many.val 91.77 | few.val 97.51, many.val 91.70 |
| `weights/ava_cast.ckpt` | `configs/ava/cast.yaml` | 2 | official 91.21 | official 91.07 |
| `weights/ava_cast_offline.ckpt` | `configs/ava/cast_offline.yaml` | 1 | official 94.31 | official 94.20 |
- `msdwild_*` are trained on MSDWild (few-speaker training split); `ava_*` on AVA-ActiveSpeaker.
- `*_offline` checkpoints use the same architecture without the causal constraints and read the whole clip.
- Each model was trained with seeds 42, 1 and 2; the released file is the best of the three on the selection metric (few.val mAP on MSDWild, official mAP on AVA). The paper reports the mean over the three seeds.
- MSDWild checkpoints are from the final (12th) epoch; AVA checkpoints are the best epoch under early stopping.
- The frozen Mimi audio encoder is not stored in these files. It is downloaded from `kyutai/moshiko-pytorch-bf16` and merged in when a checkpoint loads. Optimizer state is stripped, so the files evaluate but cannot resume training.
## Usage
The checkpoints are PyTorch Lightning files for the code in the [GitHub repository](https://github.com/prathamg007/CAST-ASD).
```bash
git clone https://github.com/prathamg007/CAST-ASD.git
cd CAST-ASD
pip install -e ".[mimi]"
hf download prathamg007/CAST-ASD --include "weights/*" --local-dir .
python train.py --config configs/msdwild/cast.yaml --test --checkpoint weights/msdwild_cast.ckpt
```
Or fetch a single file from Python:
```python
from huggingface_hub import hf_hub_download
path = hf_hub_download("prathamg007/CAST-ASD", "weights/msdwild_cast.ckpt")
```
Data preparation for MSDWild and AVA-ActiveSpeaker is described in the code repository.
## License
MIT, the same as the code. The models were trained on AVA-ActiveSpeaker and MSDWild, so use them in line with those datasets' terms (MSDWild is distributed under its own license agreement).
## Citation
```bibtex
@misc{gupta2026castasd,
title = {{CAST-ASD}: Causal Attention over Speakers and Time for Online Active Speaker Detection},
author = {Gupta, Pratham and Qi, Haotian and Sandhan, Tushar and Skantze, Gabriel},
year = {2026},
eprint = {2610.14676},
archivePrefix = {arXiv},
primaryClass = {cs.CV},
doi = {10.48550/arXiv.2610.14676},
url = {https://arxiv.org/abs/2610.14676}
}
```
|