Separar canciones en stems con HTDemucs v4 en un servidor con poca RAM
Separar voz, batería, bajo y melodía de una mezcla es uno de los problemas más bonitos del audio con IA. Así desplegué HTDemucs v4 con procesado asíncrono y segmentación para que funcione sin GPU y con memoria limitada.
La separación de fuentes musicales —descomponer una canción mezclada en sus pistas individuales— parecía ciencia ficción hace pocos años. Hoy, modelos como HTDemucs lo hacen sorprendentemente bien. El reto de este proyecto no fue el modelo, sino ponerlo a funcionar en un servidor modesto, sin GPU.
El problema
Separar cualquier canción en 4 stems (voces, batería, bajo y melodía) y permitir remezclarla en el navegador. Todo ello en una máquina con CPU y RAM limitada, donde un proceso descuidado tumba el servidor.
El modelo: HTDemucs v4
Uso HTDemucs v4 (variante htdemucs_ft), un modelo híbrido transformer/convolucional que opera tanto en el dominio de la forma de onda como en el espectrograma. Es el estado del arte abierto en separación de fuentes, con licencia MIT.
Las dos decisiones de ingeniería que lo hacen viable
- Segmentación (
--segment 5): procesar una canción entera de golpe dispara el uso de memoria. Trocear el audio en segmentos cortos mantiene el pico de RAM bajo control, a costa de algo más de tiempo. Sin esto, el proceso muere por OOM. - Procesado asíncrono: la separación tarda decenas de segundos. Bloquear la petición HTTP sería inaceptable, así que el trabajo se encola y procesa en segundo plano (sin necesidad de Celery: una solución asíncrona ligera), y el frontend consulta el progreso.
El frontend usa WaveSurfer.js para visualizar las ondas y la Web Audio API para la remezcla en tiempo real: ajustar el volumen de cada stem, silenciar la voz para hacer karaoke, etc.
Detalle de despliegue
El modelo (~400 MB) se descarga en el primer uso. El servicio corre con límites de memoria de systemd y, como otras demos pesadas del portfolio, arranca bajo demanda y se apaga tras un periodo de inactividad para no malgastar RAM.
Qué aprendí
Que desplegar IA en hardware limitado es una disciplina en sí misma. El modelo es solo el principio; la segmentación, el procesado asíncrono y la gestión de memoria son lo que separa una demo que funciona de una que tumba el servidor.
Sobre este proyecto
Stem Splitter + Remix
Separa cualquier canción en 4 stems (voces, batería, bajo, melodía) con HTDemucs v4 en segundos. Remézclala en tiempo real: ajusta BPM, tonalidad y volumen de cada stem.