SongGeneration – Modelo de Música de Código Abierto LeVo (NeurIPS 2025)

SongGeneration – Modelo de Música de Código Abierto LeVo (NeurIPS 2025)

Si alguna vez has imaginado una IA que pueda escribir canciones completas con letras, melodías y acompañamiento bajo demanda, SongGeneration es la herramienta para ti. Desarrollado como la base de código oficial del artículo NeurIPS 2025 LeVo: Generación de Canciones de Alta Calidad con Alineación multi-preferencia, este repositorio convierte un modelo de investigación de vanguardia en un módulo de código abierto amigable para desarrolladores que puede generar pistas de longitud completa en solo unos segundos.

🎶 ¿Qué es SongGeneration?

SongGeneration es una arquitectura basada en modelos de lenguaje que combina dos componentes centrales:

  1. LeLM – un modelo LM al estilo transformador que modela conjuntamente tokens mezclados (voz + música de fondo) y tokens doble pista (voz y acompañamiento separados), permitiendo al modelo alinear las letras con la estructura armónica y rítmica.
  2. Music Codec – un codec neuronal eficiente que decodifica los tokens de doble pista de nuevo a audio PCM de alta fidelidad.

La combinación brinda un sistema capaz de:

  • Producir canciones de hasta 4 minutos y 30 segundos de longitud.
  • Soportar múltiples idiomas (chino, inglés, español, japonés, etc.) según el punto de control.
  • Generar salidas multi‑pista (voz, acompañamiento o ambos combinados) e incluso voz puro o música pura.
  • Usar audio de sugerencia para guiar el estilo, género o tono.

🏗️ Estructura del Repositorio

SongGeneration/
├─ conf/                # Archivos de configuración por defecto
├─ img/                 # Imágenes para README y documentación
├─ sample/              # Archivos JSONL de muestra y salidas
├─ tools/
│  └─ gradio/           # Scripts de interfaz Gradio
├─ generate.py          # Punto de entrada de inferencia basado en Gradio
├─ generate.sh           # Wrapper de shell para inferencia
├─ LICENSE              # Licencia estilo MIT
├─ README.md            # Documentación completa
├─ requirements.txt      # Dependencias de Python
└─ ...

El README es tu punto de entrada. Cubre todo, desde la instalación hasta el uso avanzado (por ejemplo, inferencia de bajo‑memoria, conmutadores de Flash Attention y despliegue en Docker).

📦 Instalación y Ejecución

1. Requisitos Previos

  • Python ≥ 3.8.12
  • CUDA ≥ 11.8 (para aceleración GPU; fallback opcional a CPU)
  • GPU con al menos 10 GB de memoria libre (GPU RTX 10B+). Si tu GPU es más pequeña, consulta la sección low‑memory.

2. Instala el Código

# Clonar el repositorio
git clone https://github.com/tencent-ailab/SongGeneration.git
cd SongGeneration

# Instalar dependencias
pip install -r requirements.txt
pip install -r requirements_nodeps.txt --no-deps

# Opcional: instalar Flash Attention (mejora velocidad)
# pip install https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.4.post1/flash_attn-2.7.4.post1+cu12torch2.6cxx11abiFALSE-cp310-cp310-linux_x86_64.whl

3. Descarga los Puntos de Control del Modelo

Todos los puntos de control están alojados en Hugging Face. Por ejemplo, para descargar el punto de control SongGeneration‑base‑full:

huggingface-cli download lglg666/SongGeneration-base-full --local-dir ./songgeneration_base_full

Si prefieres el modelo más grande SongGeneration‑large, ajusta la ruta en consecuencia. Los nombres de las carpetas del modelo deben coincidir exactamente con el nombre del punto de control.

4. Ejecuta Inferencia

Puedes lanzar la interfaz Gradio o ejecutar la inferencia desde la línea de comandos.

a) Interfaz Gradio

sh tools/gradio/run.sh <ckpt_path>
# ejemplo:
# sh tools/gradio/run.sh ./songgeneration_base_full

Esto iniciará un servidor web local (por defecto http://localhost:7860) donde podrás:

  • Subir un archivo JSONL o escribir las letras directamente.
  • Elegir una versión del modelo.
  • Conmutar opciones como Separate Tracks, Pure Vocals, o Pure Music.
  • Previsualizar y descargar clips estilo MP3 generados.

b) Inferencia por Línea de Comandos

sh generate.sh <ckpt_path> <input_jsonl> <output_dir> [options]
# uso de ejemplo
sh generate.sh ./songgeneration_base_full sample/lyrics.jsonl sample/output

Las opciones incluyen:

  • --low_mem  Usar inferencia de bajo‑memoria (reduce los requisitos de VRAM).
  • --not_use_flash_attn Saltar Flash Attention si no está disponible.
  • --bgm  Generar solo música de fondo.
  • --vocal  Generar solo vocal (estilo a cappella).
  • --separate Generar pistas vocal y acompañamiento separadas.

5. Prompt‑Audio y Descripciones

Puedes dirigir la generación con un audio de sugerencia corto (10 segundos) o especificando etiquetas description. El repositorio proporciona una tabla de etiquetas admitidas para género, timbre, género musical, emoción, instrumento y BPM. Por ejemplo:

{
  "idx": "song_01",
  "gt_lyric": "[intro-short] ; [verse] … ; [chorus] … ; [outro-medium]",
  "descriptions": "female, bright, pop, energetic, guitar, drums"
}

El modelo producirá una pista pop de 2 minutos con timbre vocal y instrumentación coincidentes.

🚀 Últimas Funcionalidades (octubre 2025)

Fecha Actualización
2025‑10‑16 Página web de demostración ahora soporta generación de canciones completas (hasta 4 m 30 s)
2025‑10‑15 Base de código actualizada para velocidad de inferencia y nueva versión de modelo
2025‑10‑14 Solucionado el punto de control SongGeneration‑large
2025‑10‑13 Publicado SongGeneration‑base‑full con datos de evaluación
2025‑10‑12 Publicado SongGeneration‑base‑new con mejoras en inglés
2025‑09‑23 Se lanzó la tubería de procesamiento de datos – seguimiento automático de ritmo y alineación de letras
2025‑07‑25 El modelo puede funcionar con tan solo 10 GB de memoria GPU

📚 Cómo Usarlo en Tus Proyectos

1️⃣ Construir una Aplicación Web

Utiliza la UI de Gradio como base y embédenla en tu propio servidor Flask o FastAPI. El script generate.py expone una API simple que puedes llamar desde cualquier lenguaje.

2️⃣ Crear una Demostración Móvil

Exporta los puntos de control entrenados a ONNX o TorchScript y despliega en Android/iOS usando CoreML o TensorFlow Lite. La bandera de inferencia de bajo‑memoria es especialmente útil en GPUs móviles.

3️⃣ Generar Música para Videojuegos

Ingiere guiones de letras estructurados (por ejemplo, archivos JSONL) en el sistema. El formato de salida (VST o PCM sin procesar) se puede importar directamente a motores de audio de videojuegos como FMOD o Wwise.

4️⃣ Experimentar con Prompting Basado en Recuperación

El repositorio incluye una pequeña herramienta para seleccionar automáticamente audio de sugerencia de una librería: al especificar auto_prompt_audio_type puedes indicarle al modelo que genere una pieza Jazz o Rock sin subir un archivo de audio.

🔗 Recursos y Comunidad

  • Hugging Face Space – Demo interactiva: https://huggingface.co/spaces/lglg666/song-generation-levo
  • PaperLeVo: High‑Quality Song Generation with Multi‑Preference Alignment (arXiv 2506.07520)
  • Imagen Docker – Inicio rápido: docker pull juhayna/song-generation-levo:hf0613
  • Discusión e Issues de GitHub – Haz preguntas, comparte ejemplos y reporta errores.

⚙️ Highlights de Evaluación

El repositorio enumera métricas de evaluación exhaustivas (por ejemplo, PER, Audiobox Aesthetics, SongEval). En comparación con modelos de código abierto existentes como Suno o Mureka, SongGeneration muestra el PER más bajo y las puntuaciones estéticas más altas, especialmente en la variante SongGeneration‑large.

🎓 Reflexiones Finales

SongGeneration conecta el puente entre la investigación y la producción. Su diseño modular, documentación extensa y puntos de control preentrenados a gran escala lo convierten en un candidato ideal para cualquiera que desee crear herramientas de generación musical impulsadas por IA—ya sea para una plataforma comercial, un proyecto personal o investigación académica. Con una comunidad activa en GitHub y soporte en Hugging Face, puedes mantenerte actualizado con las últimas novedades y aprovechar nuevas variantes de modelo tan pronto como se publiquen.

¡Pruébalo hoy—explora el repositorio, ejecuta la demo y compón tus propias canciones creadas por IA con un solo comando!

Artículo original: Ver original

Compartir este artículo