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¶
pedalboardpara EQ/compressor/reverb/delay (research only, GPLv3).src/mixing/dsp_pure.pycon 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 |