CommunityProgramación y desarrollogithub.com

kizuna-intelligence/song-generation

Genera canciones con voz (hasta ~5 minutos, también en japonés) a partir de letra y descripción musical usando MiniMax Music 3, el modelo abierto más reciente (publicado en agosto de 2026), en una GPU local.

¿Qué es song-generation?

Este skill permite a un agente de IA (como Claude Code, Cursor o Codex) generar canciones completas con voz utilizando el modelo abierto MiniMax Music 3, el más nuevo entre los investigados. El agente prepara un archivo `song.json` con letra y una descripción estructurada en inglés (metadatos globales, detalles vocales y arreglo), luego ejecuta el script de generación en una GPU local con al menos 24 GB de VRAM (o 8 GB con `--offload stream`, aunque más lento). La canción resultante puede pasarse directamente al skill `biim-motion` para crear un videoclip. El skill también incluye un script para verificar que la letra se haya cantado correctamente mediante transcripción con Whisper. Es útil para pedidos como "haz una canción", "tema original para MV", "ponle música a esta letra" o "compón un BGM". Se recomienda generar 2-3 semillas diferentes para que el usuario elija, ya que el agente no puede evaluar el audio.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kizuna-intelligence/kokuren-mv/tree/main/skills/song-generation

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Hacer una canción (MiniMax Music 3)

Usa MiniMax Music 3, el modelo de generación de canciones abierto más nuevo que hemos investigado. La comparación de licencias con otras alternativas está en references/models.md.

El directorio de este skill se escribe como $SKILL (se muestra como "Base directory" al cargarlo).

Requisitos previos

  • Funciona con una sola GPU (versión diffusers). La VRAM necesaria es de unos 24 GB tal cual, aproximadamente 22 GB con --offload cpu, y 8 GB con --offload stream (más lento).
  • Probado en: AMD Radeon AI PRO R9700 (32 GB, ROCm 6.4 con PyTorch 2.9.1). Una canción de 60 segundos tardó unos 5 minutos, aproximadamente 5 veces el tiempo real. Aún no se ha probado en GPU NVIDIA (la expectativa oficial es CUDA).
  • Los pesos ocupan unos 27 GB. Verifica primero el espacio libre en disco.
  • El método rápido oficial (SGLang-Omni) requiere 2 GPU CUDA, por lo que no se usa en este skill.

1. Preparar el entorno (solo la primera vez)

Si ya tienes un entorno, úsalo (por ejemplo, .venv* dentro del clon de MiniMax-Music3). Si no, créalo.

git clone https://github.com/MiniMax-AI/MiniMax-Music3.git && cd MiniMax-Music3
uv venv -p 3.12 .venv && source .venv/bin/activate
# NVIDIA: uv pip install torch torchaudio
# AMD:    uv pip install torch torchaudio --index-url https://download.pytorch.org/whl/rocm6.4
uv pip install "diffusers==0.41.0" transformers accelerate soundfile huggingface_hub
# No descargar archivos exclusivos de la versión SGLang. Usar --exclude por patrón.
hf download MiniMaxAI/MiniMax-Music3 --exclude "qwen_7B/qwen_7B/model-*" \
  --exclude flowmatching_vae.pth --exclude dav.pth --exclude "figures/*"
  • La tarjeta del modelo indica un procedimiento con commits de diffusers previos a la fusión, pero con eso el transformer no se carga. Usa una versión fusionada publicada (0.40.0 o superior; la 0.41.0 está verificada).
  • Si la caché de Hugging Face (HF_HOME) tiene poco espacio, redirige HF_HOME a una ubicación con espacio libre.
  • Si se establece HF_HUB_OFFLINE=1, la carga del transformer falla. No lo uses.

2. Escribir la letra y la descripción de la canción

Crea song.json.

{
  "name": "noche-en-la-ciudad",
  "prompt": "Global Metadata: Japanese city pop, mid-tempo around 100 BPM, nostalgic night-drive mood that lifts into a bright chorus; polished 80s-inspired production. Vocal Details: warm female lead vocal singing in Japanese, airy in the verse, fuller with light harmonies in the chorus. Arrangement: intro with electric piano and slap bass; verse adds tight drums and muted guitar; chorus opens up with synth brass and lush pads; short outro on electric piano.",
  "lyrics": "[intro]\n\n[verse]\n夜の街を ひとり歩く\nネオンの色が 揺れている\n\n[chorus]\nこのまま 朝まで\n君の声 探してる\n\n[outro]",
  "duration": 180
}
  • La descripción de la canción (prompt) debe estar en inglés, dividida en tres partes: Global Metadata (género, tempo, flujo emocional, producción), Vocal Details (género de la voz, timbre, estilo de canto, armonías) y Arrangement (entrada y salida de instrumentos por sección).
  • Indica siempre el género de la voz y el timbre. Si no se especifica, la canción puede quedarse solo con el acompañamiento instrumental. Para cantar en japonés, añade singing in Japanese.
  • Si quieres más detalle, puedes usar el skill oficial de MiniMax music-caption-rewriter (ejecuta npx skills add MiniMax-AI/MiniMax-Music3 --skill music-caption-rewriter, o copia el clon de skills/music-caption-rewriter a ~/.claude/skills/).
  • La letra (lyrics) puede escribirse directamente con kanji y kana japoneses (verificado). Las etiquetas [intro], [verse], [pre-chorus], [chorus], [bridge], [instrumental], [solo], [outro] deben ir siempre en líneas separadas. Cualquier texto en la misma línea que la etiqueta se ignora (el script lo detecta y se detiene).
  • Las líneas deben ser cortas y, dentro de lo posible, de longitud similar. Separa las secciones con líneas en blanco (son consejos generales para modelos de generación de canciones; no se ha comparado el efecto específico en MiniMax Music 3).
  • duration es el límite superior en segundos (10 a 300). El modelo puede terminar antes. Incluir [intro] tiende a alargar la introducción (en una prueba de 60 segundos, duró unos 25).
  • No uses nombres de canciones o artistas reales para imitarlos (está prohibido por la licencia; ver más abajo).

3. Generar

python $SKILL/scripts/generate.py song.json --out-dir songs/ --seeds 1 2 3
  • Con la misma configuración, diferentes semillas producen canciones distintas. Genera 2 o 3 propuestas para que el usuario las escuche y elija. Claude no puede oír el audio, así que no decidas por tu cuenta cuál es mejor.
  • Lleva tiempo (en la R9700, aproximadamente 5 veces el tiempo real más la carga inicial), así que ejecútalo en segundo plano y espera a que termine.
  • Salida: <name>-seed<N>.wav (estéreo a 44.1 kHz), un archivo .json con el mismo nombre (semilla, duración, prompt, letra y tiempo de procesamiento), y <name>-lyrics.txt (letra sin etiquetas para mostrar).
  • Puedes verificar si la letra se ha cantado correctamente mediante transcripción (requiere faster-whisper). En la introducción, Whisper tiende a alucinar y repetir la letra.
python $SKILL/scripts/check_lyrics.py songs/*.wav --language ja

4. Hacer un videoclip

La canción seleccionada se pasa directamente al modo MV del skill biim-motion.

  • assets.music: el archivo WAV seleccionado
  • musicLyrics: el contenido de <name>-lyrics.txt (sin etiquetas)
  • musicMood: un breve resumen en japonés del ambiente descrito en prompt
  • En el informe reports/delivery.md del MV, registra en los materiales utilizados: "Generado con MiniMax Music 3 (seed, prompt, lyrics)".

Licencia (MiniMax-Music3 Community License)

El texto original está en https://huggingface.co/MiniMaxAI/MiniMax-Music3/blob/main/LICENSE . Aquí solo se indican los puntos clave (no es asesoramiento legal).

  • Si se usa en un producto o servicio comercial, se debe mostrar "MiniMax-Music3" de forma visible en la interfaz. Si los ingresos anuales superan los 20 millones de dólares, se requiere un permiso por escrito adicional de MiniMax.
  • Se debe cumplir con la Política de Uso Aceptable adjunta y no infringir los derechos de propiedad intelectual de terceros.
  • Si se planea un uso comercial, se deben informar estas condiciones al usuario antes de la generación.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills relacionados