Saltar al contenido
ModelPublicadoExterno
Descargar

DreamVAE

A distilled decoder for the ACE-Step 1.5 Oobleck VAE. Drop-in replacement: same [B, 64, T] latent input, same [B, 2, 1920T] stereo output at 48 kHz. 51.7M parameters (61% of the teacher), 0.24 dB SNR degradation vs....

TipoOtherModelo baseACE-Step/ACE-Step-v1-3.5BVersiónRevision 53e74f7Bcalidad

Fuente del modelo

Tipo
Other
Tamaño del archivo
197 MB
Modelo base
ACE-Step/ACE-Step-v1-3.5B
Versión
vRevision 53e74f7
Actualizado
9 oct 2026
Descargas
28
Fuente
Hugging Face

Descripción de la fuente

DreamVAE

A distilled decoder for the ACE-Step 1.5 Oobleck VAE. Drop-in replacement: same [B, 64, T] latent input, same [B, 2, 1920*T] stereo output at 48 kHz. 51.7M parameters (61% of the teacher), 0.24 dB SNR degradation vs. the teacher across 20 diverse music tracks, and 37.2 ms to decode 60 seconds of audio on an RTX 5090 TensorRT FP16 engine (8.66x faster than the teacher in PyTorch, 1.45x faster than the teacher's own TRT engine).

Usage

import json
import torch
from huggingface_hub import hf_hub_download
from safetensors.torch import load_file

repo = "daydreamlive/DreamVAE"
weights = hf_hub_download(repo, "model.safetensors")
config  = hf_hub_download(repo, "config.json")
mod_py  = hf_hub_download(repo, "modeling.py")

import sys, os
sys.path.insert(0, os.path.dirname(mod_py))
from modeling import FastOobleckDecoder

cfg = json.load(open(config))
model = FastOobleckDecoder(
    channels=cfg["channels"],
    input_channels=cfg["input_channels"],
    audio_channels=cfg["audio_channels"],
    upsampling_ratios=cfg["upsampling_ratios"],
    channel_multiples=cfg["channel_multiples"],
).eval().to("cuda")
model.load_state_dict(load_file(weights))

# latents: [B, 64, T]  ->  audio: [B, 2, 1920 * T]
with torch.no_grad():
    audio = model(latents)

Pair with the stock ACE-Step encoder; only the decoder is distilled.

ONNX export is at onnx/model.onnx. Build a TRT engine with scripts/export_trt.py.

Results

Quality (20 diverse FMA tracks, 10 s clips):

vs. original audioSNR (dB)STFT distMel dist
Teacher OobleckDecoder5.0 (std 2.5)0.6980.733
DreamVAE4.7 (std 2.4)0.6950.742
Degradation0.24 dBbetter+0.008

The VAE's own reconstruction error (~5 dB SNR) dominates; DreamVAE's additional error is well under a quarter of that. STFT distance is marginally better for the student; mel distance is 1.1% worse. Informal listening finds the difference inaudible.

Speed (RTX 5090, 60 s stereo audio at 48 kHz, TensorRT FP16):

BackendTime (60 s)vs. teacher PyTorch
Teacher PyTorch321.9 ms1.00x
Teacher TRT FP1654.0 ms5.97x
DreamVAE PyTorch241.1 ms1.34x
DreamVAE TRT FP1637.2 ms8.66x

Distillation alone is modest (1.45x over the teacher's own TRT engine). The compelling number is the composition with TRT: what a deployment sees moving from stock PyTorch VAE to DreamVAE on TRT is 8.66x.

Architecture

TeacherDreamVAE
Parameters84.4M51.7M (61%)
Channel multiples[1, 2, 4, 8, 16][1, 2, 4, 8, 8]
Residuals/block3 (dil 1, 3, 9)2 (dil 1, 3)
Upsampling ratios[10, 6, 4, 4, 2][10, 6, 4, 4, 2]
ActivationSnake1dSnake1d
Hop length19201920

Trained for 650K steps on 8,000 FMA Small tracks (two-phase: 500K reconstruction + 150K adversarial). Released checkpoint is step 635K, selected as the HF-energy-match peak from a six-point trajectory over the adversarial phase.

Files

.
├── README.md
├── config.json            architecture + training hyperparameters
├── model.safetensors      FP32 weights (207 MB, 51.7M params)
├── modeling.py            self-contained FastOobleckDecoder class
├── onnx/model.onnx        ONNX export
└── scripts/               training, eval, speed bench, TRT export/verify

Limitations

  • Signal-level metrics only (no MUSHRA / PESQ / preference tests).
  • Evaluated on VAE round-trip, not end-to-end through the full text-to-DiT-to-VAE pipeline. FAD on generated samples is future work.
  • One point on the quality-speed frontier ([1,2,4,8,8], 2 residual units). Width variants not evaluated.
  • Trained in FP32. INT8 / FP8 quantization would likely stack another 1.5-2x on top of FP16 and is not explored here.

Citation

Technical note (methodology, training recipe with source-paper attribution, adversarial-phase trajectory, and negative results on encoder distillation) is forthcoming on arXiv. Citation block will be added here on release.

License

Apache 2.0, matching the upstream ACE-Step 1.5 license.

Fuentes

1 fuente
Hugging FacePrincipalVersión 53e74f7ed07cd053680fc2aa2b072124c63528d0
huggingface.co/daydreamlive/DreamVAE/tree/53e74f7ed07cd053680fc2aa2b072124c63528d0

Verificado 9 oct

Artefactos del modelo

2 artefactos

model.safetensors

safetensors · 197 MB · SHA-256 41141656aef8…a91f · Hugging Face

Descargar

onnx/model.onnx

onnx · 197 MB · SHA-256 4ffd920e10b3…2969 · Hugging Face

Descargar

Extractos de fuentes

3 extractos

--- license: apache-2.0 language: - en library_name: pytorch pipeline_tag: audio-to-audio tags: - ace-step - audio - vae - knowledge-distillation - music-generation - streaming - tensorrt - dreamvae base_model: - ACE-Step/ACE-Step-v1-3.5B --- # DreamVAE A distilled decoder for the [ACE-Step 1.5](https://huggingface.co/ACE-Step/ACE-Step-v1-3.5B) Oobleck VAE. Drop-in replacement: same `[B, 64, T]` latent input, same `[B, 2, 1920*T]` stereo output at 48 kHz. 51.7M parameters (61% of the teacher), 0.24 dB SNR degradation vs. the teacher across 20 diverse music tracks, and 37.2 ms to decode 60 seconds of audio on an RTX 5090 TensorRT FP16 engine (8.66x faster than the teacher in PyTorch, 1.45x faster than the teacher's own TRT engine). ## Usage ```python import json import torch from huggingface_hub import hf_hub_download from safetensors.torch import load_file repo = "daydreamlive/DreamVAE" weights = hf_hub_download(repo, "model.safetensors") config = hf_hub_download(repo, "config.json") mod_py = hf_hub_download(repo, "modeling.py") import sys, os sys.path.insert(0, os.path.dirname(mod_py)) from modeling import FastOobleckDecoder cfg = json.load(open(config)) model = FastOobleckDecoder( channels=cfg["channels"], input_channels=cfg["input_channels"], audio_channels=cfg["audio_channels"], upsampling_ratios=cfg["upsampling_ratios"], channel_multiples=cfg["channel_multiples"], ).eval().to("cuda") model.load_state_dict(load_file(weights)) # latents: [B, 64, T] -> audio: [B, 2, 1920 * T] with torch.no_grad(): audio = model(latents) ``` Pair with the stock ACE-Step encoder; only the decoder is distilled. ONNX export is at `onnx/model.onnx`. Build a TRT engine with `scripts/export_trt.py`. ## Results **Quality** (20 diverse FMA tracks, 10 s clips): | vs. original audio | SNR (dB) | STFT dist | Mel dist | |---------------------------|----------------|-----------|----------| | Teacher OobleckDecoder | 5.0 (std 2.5) | 0.698 | 0.733 | | DreamVAE | 4.7 (std 2.4) | 0.695 | 0.742 | | **Degradation** | **0.24 dB** | **better**| +0.008 | The VAE's own reconstruction error (~5 dB SNR) dominates; DreamVAE's additional error is well under a quarter of that. STFT distance is marginally better for the student; mel distance is 1.1% worse. Informal listening finds the difference inaudible. **Speed** (R...

Source context: 28 downloads · 17 likes · Pipeline audio-to-audio · Library pytorch · Repo daydreamlive/DreamVAE

Source context: 10 downloads · 17 likes · Pipeline audio-to-audio · Library pytorch · Repo daydreamlive/DreamVAE