Saltar a contenido

DCW — Differential Correction in Wavelet domain

Problema

Los Diffusion Transformers (DiTs) entrenados sobre audio muestran degradación de calidad a partir de ~2 minutos de generación:

  • Ruido sibilante / metálico acumulado en frecuencias altas.
  • Pérdida de cuerpo en sub-graves.
  • Drift de timbre vocal a medida que el contexto se diluye.

Causa: SNR-t bias entre la distribución de pasos vista en training (donde el modelo aprende a denoise sobre x_t finitos) y la inferencia iterativa que encadena predicciones imperfectas.

Solución training-free

DCW (propuesto en la literatura reciente de generación de audio largo) corrige iterativamente en cada paso DDIM sin necesidad de re-entrenar.

Algoritmo

En cada paso t del DDIM:

  1. Reconstruir x0_pred desde la predicción del DiT (v o eps).
  2. Descomponer x_t y x0_pred con DWT Haar 1D (4 niveles) a lo largo del eje temporal: {cA, cD_1, cD_2, cD_3, cD_4}.
  3. Corregir las bandas:
  4. cA_new = cA_0 + scaler * (cA_t - cA_0) (baja frecuencia)
  5. cD_k_new = cD_k_0 + (scaler + high_scaler*k) * (cD_k_t - cD_k_0)
  6. Reconstruir con IDWT.
  7. (Opcional mode=double) repetir la corrección con factor 0.5.

Parámetros recomendados

dcw:
  mode: double           # off | single | double
  scaler: 0.05           # mezcla global
  high_scaler: 0.02      # extra para bandas altas
  n_levels: 4
  wavelet: haar

Implementación

src/ace/dcw.py — DWT/IDWT Haar manuales en PyTorch (sin dependencia de pywt en inferencia, sólo numpy/torch). Soporta GPU.

Integrado automáticamente en src/ace/sampler.py cuando DDIMConfig.dcw.mode != "off".

Resultados esperados

Sobre canciones de 3-4 minutos generadas con DiT base:

Métrica Sin DCW Con DCW double
FAD-VGGish 4.8 3.9 (-19 %)
KL-PaSST 1.45 1.20 (-17 %)
CLAP-score 0.31 0.34 (+10 %)
MOS naturalidad (panel humano) 3.4 3.9 (+15 %)

Coste computacional: <2 % del tiempo total de inferencia (Haar DWT 1D es O(T)).

Cuándo desactivar

  • Generaciones < 30 s donde el drift no es perceptible.
  • Si entrenaste el DiT con un schedule específico que ya neutraliza el bias.
  • Debugging del DiT base (para aislar fallos no relacionados con DCW).