Saltar a contenido

Arquitectura técnica

Pipeline end-to-end

PROMPT (ES/EN)
1) PromptParser  → PromptSpec(genre, mood, bpm, key, theme, duration, …)
2) Lyric Generator (Transformer 50M, SentencePiece propio 16K)
      cond(género, mood, estructura, rima, métrica) → letra estructurada
3) Score Generator (Transformer 80M sobre tokens REMI)
      cond(género, BPM, tonalidad, progresión) → MIDI multitrack
4) Alignment letra ↔ melodía (programático: sinalefa + melisma)
      + G2P ES/EN → (phoneme, note, duration_frames)
5a) SVS Acoustic (DDPM mel 40M) + F0/duration predictors
5b) Vocoder HiFi-GAN (14M) → vocal_lead.wav
6) Instrumental Generator (MusicGen-like AR 300M, delay pattern)
     cond(score, género, texto) → stems instrumentales WAV
     [usa tokens del Neural Audio Codec propio 24kHz, 8 codebooks]
7) Mixing DSP (pedalboard): preset por género, sidechain, paneo
8) Mastering: EQ + multibanda + limiter -1 dBTP + LUFS norm (-14 LUFS)
9) Watermark AudioSeal (Meta, MIT) inaudible
10) Export WAV/MP3 + metadata JSON (model card)

Decisiones arquitectónicas clave

AR sobre tokens RVQ vs. difusión latente

Aspecto AR + delay (elegido) Difusión latente
Streaming nativo
Canciones >2 min ❌ (exposure bias)
VRAM training Alta (O(T²)) Baja (latente comprimido)
Vocales realistas integradas Limitado
Coherencia estructura global Baja sin tokens semánticos Alta
Complejidad implementación Más simple Más compleja

Decisión final: híbrida en 3 fases — 1. Neural Audio Codec propio (factible en A100). 2. AR transformer pequeño tipo MusicGen-small con delay pattern para 20–30 s. 3. Futuro: migrar a DiT sobre VAE continuo con H100 alquilada.

SVS separado del backbone instrumental (más controlable, calidad mejorable independiente).

Neural Audio Codec

  • SEANet encoder con LSTM stack + RVQ 8 × 1024 (dim=128) + SEANet decoder.
  • 24 kHz mono, downsampling 320× (ratios 8-5-4-2) → 75 Hz tasa latente.
  • Pérdidas: L1 wav + multi-resolution mel (7 resoluciones) + GAN hinge (MS-STFT + MPD periods 2,3,5,7,11) + feature matching + commitment EMA.
  • λ = 15 mel / 3 adv / 4 feat / 0.25 commit / 0.1 L1.
  • ~48 M params entrenables (g+d).

LM autoregresivo (MusicGen-like)

  • Transformer decoder con RoPE, RMSNorm, SwiGLU, self-attn causal + cross-attn al texto.
  • K cabezas (una por codebook), patrón delay para que cada step prediga los K tokens.
  • Classifier-free guidance (CFG) con dropout de condición durante training.
  • Sampling top-k + top-p + temperatura.
  • Config small ~300 M params: dim=1024, n_layers=24, n_heads=16, n_codebooks=8, max_tokens=750 (10 s @ 75 Hz).

Lyric LM

  • Transformer decoder-only ~50 M (d=512, n_layers=8, n_heads=8, ctx=512).
  • SentencePiece BPE 16 K + tokens especiales (sección/género/mood/rima/sílabas).
  • Constrained sampling: rejection sampling con conteo silábico (silabeador) y rima asonante.

Score LM (REMI)

  • Mismo backbone que Lyric pero d=640, n_layers=10 → ~80 M.
  • Vocabulario REMI: <BAR>, POS_*, PITCH_*, VEL_*, DUR_*, CHORD_*, GEN_*, BPM_*, KEY_*, INST_*.
  • Convierte MIDI ↔ tokens vía pretty_midi.

SVS

  • Acoustic (~40 M) estilo DiffSinger: FFT encoder + length regulator + duration/F0 variance predictors + DDPM 1D U-Net sobre mel-spectrograma.
  • Vocoder HiFi-GAN V1 (~14 M): upsample 256× con 4 stages (rates 8/8/2/2) + MRF + MPD/MSD disc.
  • G2P ES por reglas (~24 fonemas SAMPA-ES, soporta seseo/distinción/yeísmo).
  • Alineamiento letra↔melodía programático con sinalefa y melisma.

Mixing & Mastering DSP

  • pedalboard para EQ/compressor/reverb/delay (research only, GPLv3).
  • src/mixing/dsp_pure.py con implementación 100 % Python (Apache-compatible) para distribución comercial.
  • Presets por género en configs/mixing.yaml.
  • LUFS normalize con pyloudnorm (ITU-R BS.1770-4) a -14 LUFS / -1 dBTP.

Watermarking

  • AudioSeal 16-bit msg (Meta, MIT, ICML 2024).
  • Inserción a 16 kHz (resample interno) sobre la mezcla final.
  • Cumple EU AI Act art. 50 (machine-detectable synthetic output).

Tabla de tamaños y memoria

Componente Params VRAM training (bs típico, bf16) VRAM inferencia
Codec (G+D) ~48 M A100 ~6 GB bs=16 <1 GB
Lyric LM ~50 M T4 ~4 GB bs=32 <500 MB
Score LM ~80 M T4 ~8 GB bs=16 <1 GB
SVS acoustic ~40 M A100 ~6 GB bs=16 <1 GB
Vocoder ~14 M A100 ~4 GB bs=16 <500 MB
Instrumental LM ~300 M A100 ~30 GB bs=8 + grad-accum ~2 GB
Pipeline E2E inferencia ~530 M ~5 GB con model-swap