First audio component: the Cosmos3 sound tokenizer's decode path (t2vs needs
only DECODE — generate sound latents, decode to waveform).
Finding: the shipped `sound_tokenizer` checkpoint is decoder-only (`decoder.*`,
the SpectrogramConvNeXt encoder is not exported) in diffusers AutoencoderOobleck
naming, but with SnakeBeta activations (alpha+beta, logscale) and
weight_g/weight_v weight-norm — i.e. exactly FastVideo's existing native
`OobleckVAE` decoder. So no from-scratch port: reuse it.
- `OobleckDecoderBlock`: add `output_padding=stride % 2` to the transpose conv.
A provable no-op for even strides (Stable Audio: [2,4,4,8,8]); required for the
odd stride in Cosmos3 (`[2,4,5,6,8]`), where the framework's
`output_padding=stride%2` otherwise makes the decode 1 sample longer per
odd-stride block. Without it, parity diverged (60 vs 59 samples).
- `Cosmos3SoundVAE` (`fastvideo/models/audio/cosmos3_avae.py`): decoder-only
wrapper — `decode` (Oobleck decoder + clamp to [-1,1], matching AVAEModel),
`get_latent_num_samples` (N // hop_size=1920), `from_pretrained` (reads the
checkpoint config, strict-loads `decoder.*`). 48 kHz stereo, 473M params.
- Parity: `test_cosmos3_avae_parity.py` maps the framework OobleckDecoder
(`avae_utils.models`, Sequential naming, the oracle) into the FastVideo decoder
and asserts bit-exact decode across stride patterns incl. odd (5) — max abs
diff 0.0. Verified the real 1.9GB checkpoint strict-loads and decodes
[1,64,25] -> [1,2,48000] (1s @ 48kHz stereo).
Full cosmos3 suite: 121 passed, 0 skipped.
tests/local_tests/ holds local-only parity, smoke, and component tests
organized by model family (e.g. tests/local_tests/ltx2/,
tests/local_tests/stable_audio/). They typically require a checked-out
reference repo and/or model weights and are skipped in CI; see each family's
README.md for setup. The top-level
tests/local_tests/README.md is the family index.
The CI-backed test suite still lives in fastvideo/tests/.