HOT-Step CPP: Generación local de música con IA mediante C++ y GGML

Genera música estéreo a 48 kHz localmente con HOT-Step CPP, una interfaz de C++/GGML repleta de funciones para ACE-Step, herramientas de audio, complementos y entrenamiento de modelos.

HOT-Step CPP: Generación local de música con IA mediante C++ y GGML

Los generadores de música en la nube son prácticos, pero implican costes recurrentes, suben tu material creativo a servicios externos y a menudo ocultan la configuración de generación subyacente. HOT-Step CPP adopta un enfoque diferente: integra la generación local de música con IA en una aplicación basada en navegador y respaldada por un motor nativo de C++/GGML.

Describe una canción con un texto descriptivo y una letra, selecciona tus parámetros de generación y produce audio estéreo a 48 kHz completamente en tu propio hardware. No necesitas claves de API, suscripciones ni inferencia en la nube.

El proyecto amplía acestep.cpp con más de 100 funciones que abarcan generación, procesamiento de audio, separación de pistas, transcripción MIDI, masterización, gestión de modelos y flujos de trabajo experimentales de entrenamiento.

Por qué HOT-Step CPP resulta interesante

HOT-Step CPP combina tres ventajas que rara vez están disponibles en una sola herramienta de generación musical:

  1. Inferencia local: tus letras, indicaciones y pistas generadas permanecen en tu equipo.
  2. Rendimiento nativo: el motor de inferencia está implementado en C++ y utiliza backends de GGML como CUDA, Vulkan, Metal o ejecución en CPU.
  3. Herramientas orientadas a la producción: la generación es solo el principio; la aplicación incluye versiones, pistas separadas, MIDI, masterización, procesamiento VST3, gestión de letras, repintado y evaluación de calidad.

La aplicación está basada en ACE-Step 1.5, y también ofrece un backend nativo experimental para MiniMax-Music3. Esto la hace útil tanto como estación de trabajo creativa como banco de pruebas para la ingeniería de audio generativo local.

Principales flujos de generación

Auto-Gen

Auto-Gen está diseñado para quienes quieren empezar con una idea en lugar de una especificación completa. Elige un género, proporciona opcionalmente un tema y un idioma, y el modelo de lenguaje integrado puede generar:

  • Letras
  • Un texto descriptivo del estilo
  • Metadatos de la canción
  • Un título

Puedes elegir letras generadas por completo, letras escritas a partir de un tema o un flujo instrumental. El modo de vista previa permite editar las letras generadas antes de convertirlas en audio. Una cola en serie procesa un trabajo cada vez y muestra el progreso en directo.

Custom-Gen

Custom-Gen proporciona acceso directo a los controles de generación. Puedes introducir tus propias letras y texto descriptivo, seleccionar el título y el artista, y configurar:

  • BPM
  • Duración
  • Tonalidad
  • Compás
  • Solver y planificador
  • Modo de guidance
  • Escala CFG y controles latentes
  • Opciones de posprocesamiento

Este es el flujo más adecuado cuando importan la reproducibilidad y la experimentación con parámetros. Las semillas y los metadatos de generación se conservan para que puedas comparar variaciones en lugar de depender de la memoria.

Un sistema flexible de muestreo y complementos

El motor incluye 17 solvers, 9 planificadores y 7 modos de guidance. Su arquitectura de complementos Lua permite añadir nuevos solvers ODE/SDE, planificadores de ruido, modos de guidance y cadenas de posprocesamiento sin recompilar el motor de C++.

Para crear un complemento, coloca un archivo .lua en:

engine/plugins/

El complemento estará disponible en la interfaz después del siguiente inicio. Los complementos pueden exponer sus propios controles deslizantes, interruptores y menús desplegables, lo que permite utilizar métodos de muestreo orientados a la investigación desde la interfaz habitual de la aplicación. Entre los ejemplos incluidos se encuentran CFG-MP, SMC-CFG y CFG-Zero⋆.

Este diseño resulta especialmente valioso para desarrolladores: los experimentos de muestreo pueden distribuirse como pequeños scripts, sin exigir que cada usuario compile un binario personalizado.

Funciones de producción de audio más allá de la generación

HOT-Step CPP trata la música generada como material que se puede editar y perfeccionar, no como un archivo final.

Matchering y posprocesamiento

El motor de masterización Matchering iguala el volumen, la ecualización y la dinámica con respecto a una pista de referencia. Un interruptor A/B instantáneo entre la versión masterizada y la no masterizada facilita determinar si el procesamiento ha mejorado el resultado. El procesamiento funciona a 48 kHz nativos, evitando un ciclo innecesario de remuestreo.

El procesamiento adicional incluye un reductor de ruido espectral basado en filtro de Wiener, un Spectral Lifter nativo de C++, pulido neuronal PP-VAE, Vocal Naturalizer DSP, almacenamiento temporal de duración, recorte automático y fundidos de salida configurables. La cadena interna se mantiene en WAV32, con exportación disponible en WAV, MP3 o FLAC.

StableStep

StableStep vuelve a renderizar la parte instrumental de una pista terminada mediante Stable Audio 3 usando reinyectado parcial de ruido. Su objetivo es sustituir el fizz del VAE y otros artefactos espectrales por detalles más convincentes, manteniendo intactas las letras y las voces.

El flujo separa las voces principales y de apoyo con BS-RoFormer, procesa el instrumental y remezcla el material vocal. Los usuarios pueden ajustar la intensidad del refinado y utilizar una indicación derivada del texto descriptivo original.

Hay dos backends disponibles:

  • GGML: aproximadamente 5,8 GB de modelos
  • ONNX/TensorRT: aproximadamente 12 GB de modelos

Los modelos de Stable Audio se distribuyen bajo la Stability AI Community License.

Versiones, pistas separadas y MIDI

Cover Studio

Cover Studio analiza una pista de referencia mediante Essentia y extrae información sobre BPM, tonalidad, energía y timbre. Puede generar una versión que coincida con el estilo, conservando o transformando determinados aspectos de la fuente.

Entre sus controles útiles se incluyen la fidelidad estructural, la preservación de la fuente, el desplazamiento de tono con vistas previas de transposición tonal, el escalado del tempo, la separación y recombinación de pistas, y preajustes de adaptadores por álbum.

Stem Studio y Stem Builder

Stem Studio utiliza una cadena de separación en cuatro etapas:

  1. BS-RoFormer para la separación primaria en seis pistas
  2. Mel-Band RoFormer para aislar las voces principales y de apoyo
  3. MDX23C para la separación adicional de la batería
  4. HTDemucs para refinar los instrumentos

La gestión secuencial de la VRAM mantiene el uso máximo por debajo de 3 GB durante la separación. El mezclador interactivo admite solo múltiple, controles de volumen por pista y exportación ZIP.

Stem Builder funciona en la dirección opuesta: proporciona una pista fuente y pide al motor DiT que genere pistas vocales, de batería, bajo, guitarra o piano complementarias. Puedes construir un arreglo de forma iterativa en lugar de regenerar la canción completa.

MIDI Studio

MIDI Studio es un port nativo de C++/GGML de MuScriptor, de Kyutai y Mirelo. El proyecto informa de una validación byte a byte frente a la implementación de referencia y de aceleración por GPU; una pista de 3,5 minutos puede transcribirse en menos de un minuto.

La herramienta produce MIDI multipista en 34 grupos de instrumentos, además de batería. Hay modelos pequeños, medianos y grandes, y la interfaz muestra un piano roll en directo mientras se ejecuta la transcripción. Los usuarios pueden comparar inmediatamente el audio original con la interpretación MIDI mediante un control deslizante de fundido cruzado y controles de silencio o solo por instrumento.

Los pesos del modelo están restringidos en Hugging Face y tienen licencia CC BY-NC 4.0, por lo que esta función está destinada a usos no comerciales.

Entrenamiento experimental de modelos

Training Studio permite entrenar adaptadores de estilo dentro de HOT-Step sin Python ni herramientas externas de preprocesamiento. Indica a la aplicación una carpeta de canciones y esta puede guiar el flujo mediante:

  • Creación del conjunto de datos
  • Análisis local de BPM y tonalidad
  • Recuperación de letras desde Genius
  • Textos descriptivos de IA conscientes del audio
  • Preprocesamiento de tensores
  • Entrenamiento LoRA del LM planificador
  • Entrenamiento LoRA del DiT

Los modelos planificadores incluyen variantes de 0,6B, 1,7B y 4B. Un modo de audición basado exclusivamente en el LM permite comparar lo aprendido por el planificador con el modelo base sin influencia del DiT.

Esta función es explícitamente experimental. Se recomienda una GPU con al menos 16 GB de VRAM, mientras que el entrenamiento DiT a máxima profundidad es más adecuado para sistemas con 24 GB o más. Espera un uso elevado de memoria y un comportamiento sujeto a cambios.

Backend MiniMax-Music3

HOT-Step CPP también incluye un port nativo rudimentario de C++/GGML de MiniMax-Music3. El proyecto lo describe como una implementación temprana y, según su conocimiento, como la primera versión del modelo fuera de Python.

Después de instalar el paquete MiniMax-Music3 mediante Model Manager, aparece un selector de backend en la barra global. El paquete ocupa aproximadamente 24 GB y requiere alrededor de 24 GB de VRAM en f16.

La compatibilidad actual se limita a la generación de texto a música mediante:

  • Texto descriptivo
  • Letras
  • Duración
  • Semilla

Las versiones, el repintado, las pistas separadas, los adaptadores y el entrenamiento aún no son compatibles con este backend. La salida se almacena como WAV sin procesar a 44,1 kHz. Hay variantes cuantizadas que requieren menos VRAM previstas para el futuro.

Compatibilidad de hardware y plataformas

Hay versiones precompiladas disponibles para:

Plataforma Opciones de aceleración
Windows x64 CUDA, Vulkan, CPU
Linux x64 CUDA, Vulkan, CPU
macOS Apple Silicon Metal

Para usuarios de NVIDIA, CUDA ofrece el mejor rendimiento; se recomienda una RTX 2060 o posterior. Vulkan es compatible con hardware de AMD, Intel y NVIDIA antiguo. El modo CPU funciona en cualquier equipo compatible, pero es considerablemente más lento.

Los requisitos habituales de almacenamiento son de aproximadamente 10 GB para la aplicación y los modelos iniciales. El conjunto de modelos estándar de ACE-Step requiere aproximadamente 7 GB para descargarse desde la aplicación.

Inicio rápido con una versión portable

La instalación más sencilla consiste en descargar un archivo de versión, extraerlo y ejecutar el script específico de la plataforma.

Windows

  1. Descarga y extrae el archivo para CUDA, Vulkan o CPU.
  2. Ejecuta HOT-Step.bat.
  3. Abre http://localhost:3001 si el navegador no se abre automáticamente.
  4. Ve a Models → Get More Models y descarga el conjunto de modelos iniciales de aproximadamente 7 GB.

Se requiere Windows 10 u 11 de 64 bits. La variante CUDA necesita controladores NVIDIA compatibles, mientras que la variante Vulkan requiere controladores Vulkan 1.1 o posteriores.

Linux

./HOT-Step.sh

Usa Ubuntu 22.04 o una distribución x86_64 equivalente. Los usuarios de CUDA necesitan controladores NVIDIA 525 o posteriores; los usuarios de Vulkan necesitan controladores compatibles con Vulkan 1.1 y libvulkan1.

macOS

En sistemas Apple Silicon con macOS 13 o posterior:

./HOT-Step.sh

La versión incluye Node.js, por lo que no es necesario instalarlo por separado. Si macOS bloquea los binarios sin firmar, elimina una vez el atributo de cuarentena:

xattr -cr /path/to/HOT-Step-CPP/

Compilación desde el código fuente

Clona el repositorio junto con sus submódulos:

git clone --recursive https://github.com/scragnog/HOT-Step-CPP.git
cd HOT-Step-CPP

Si clonaste el repositorio sin --recursive, inicializa manualmente las dependencias:

git submodule update --init --recursive

Windows con CUDA

Instala Visual Studio 2022 Build Tools con Desktop development with C++, CUDA Toolkit 12.x o posterior con integración para Visual Studio, CMake 3.14 o posterior, Git y Node.js 18–22 LTS. Node.js 24 no es compatible.

El comando de compilación práctico es:

engine\build.cmd

Para una compilación manual con CMake:

cd engine
mkdir build
cd build
cmake .. -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=native
cmake --build . --config Release -j %NUMBER_OF_PROCESSORS%
cd ..\..

macOS con Metal

Instala las herramientas de línea de comandos de Xcode, CMake, Node.js 18–22 LTS y Git. Después, compila con Metal activado:

cd engine
mkdir build && cd build
cmake .. -DGGML_METAL=ON -DGGML_METAL_EMBED_LIBRARY=ON -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release -j $(sysctl -n hw.ncpu)
cd ../..

Incrustar la biblioteca de shaders de Metal significa que no se necesita ningún archivo .metallib externo durante la ejecución.

Linux

Las compilaciones con CUDA utilizan:

cd engine
mkdir -p build && cd build
cmake .. -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE=Release
cmake --build . -j $(nproc)

Para Vulkan:

cmake .. -DGGML_VULKAN=ON -DCMAKE_BUILD_TYPE=Release
cmake --build . -j $(nproc)

Para compilaciones exclusivas de CPU, omite la opción del backend:

cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . -j $(nproc)

Instala las dependencias del servidor y de la interfaz antes de iniciar:

cd server && npm install && cd ..
cd ui && npm install && cd ..

En Windows, ejecuta LAUNCH.bat; en macOS y Linux, ejecuta ./launch.sh. El modo de producción escucha en el puerto 3001. El modo de desarrollo utiliza el frontend de Vite en el puerto 3000.

Organización de los modelos

Una compilación desde el código fuente espera los siguientes archivos dentro de models/:

models/
├── acestep-5Hz-lm-4B-Q8_0.gguf
├── Qwen3-Embedding-0.6B-Q8_0.gguf
├── acestep-v15-turbo-Q8_0.gguf
└── vae-BF16.gguf

Los archivos recomendados son aproximadamente:

Componente Archivo Tamaño
Modelo de lenguaje acestep-5Hz-lm-4B-Q8_0.gguf 4,2 GB
Codificador de texto Qwen3-Embedding-0.6B-Q8_0.gguf 748 MB
DiT acestep-v15-turbo-Q8_0.gguf 2,4 GB
VAE vae-BF16.gguf 322 MB

Hay disponibles variantes LM más pequeñas de 0,6B y 1,7B. Entre los modelos opcionales se incluyen ScragVAE, de 322 MB; PP-VAE, de 644 MB; recursos GGML de StableStep, de 5,8 GB; y recursos ONNX de StableStep, de 12 GB.

El Model Manager integrado suele ser más sencillo: proporciona paquetes iniciales seleccionados y acceso a más de 100 modelos GGUF en cinco repositorios de Hugging Face, con descargas simultáneas reanudables.

Arquitectura para desarrolladores

El sistema se divide en tres componentes cooperantes:

Componente Tecnología Responsabilidad
Motor C++, CUDA, GGML Ejecuta la inferencia de modelos y las operaciones de audio nativas
Servidor Node.js, TypeScript Orquesta trabajos, gestiona canciones y sirve la aplicación
Interfaz React, Vite, TypeScript Proporciona la interfaz creativa basada en navegador

Esta separación hace que el proyecto sea accesible desde varias áreas. Los desarrolladores de C++ pueden trabajar en la inferencia y el DSP, los desarrolladores de TypeScript pueden ampliar la orquestación y las API, y los desarrolladores frontend pueden añadir flujos creativos sin modificar el motor.

El motor admite GGUF y safetensors de Hugging Face. Las carpetas de safetensors pueden colocarse en el directorio de modelos y se identifican con una insignia de formato en la interfaz. Los safetensors BF16 producen una salida idéntica bit a bit a BF16 GGUF, y los adaptadores LoRA funcionan con ambos formatos.

Problemas habituales de compilación

Hay algunos problemas especialmente frecuentes:

  • Fallos al instalar Node.js 24: cambia a Node.js 22 LTS con nvm install 22 y nvm use 22.
  • Errores C2589 de MSVC: define NOMINMAX y, si es necesario, configura CMake con /DNOMINMAX /DWIN32_LEAN_AND_MEAN.
  • Directorio de CUDA Toolkit no encontrado: verifica CUDA_PATH, instala la integración con Visual Studio y reinicia la terminal.
  • Errores de ubicación del binario Ninja: Ninja coloca los binarios directamente en engine/build/, no en engine/build/Release/.
  • Configuración de CMake obsoleta: elimina engine/build/ y vuelve a configurar después de cambiar las versiones de CUDA o los ajustes del compilador.
  • Errores por longitud de rutas en Windows: abre una terminal nueva si las compilaciones repetidas han ampliado PATH mediante vcvars64.bat.
  • Bloqueos de Gatekeeper en macOS: usa xattr -cr en el directorio de la versión extraída.

¿Quién debería probarlo?

HOT-Step CPP es una opción muy adecuada para desarrolladores, músicos y creadores con inclinación técnica que quieren mantener el control local sobre la generación musical con IA. Es más que una demostración de texto a audio: el proyecto ofrece un motor nativo extensible, una interfaz web completa, ports experimentales de modelos y una colección creciente de herramientas para llevar el audio generado hacia una producción terminada.

La contrapartida es la complejidad. Los modelos grandes pueden requerir mucho espacio en disco y VRAM, algunas funciones son experimentales y los flujos MiniMax-Music3 y Training Studio aún están evolucionando. Sin embargo, para quienes se sienten cómodos con las herramientas de IA local, esa misma apertura es el atractivo: puedes inspeccionar la configuración, cambiar de modelo, escribir complementos Lua, compilar desde el código fuente y mantener todo el flujo creativo en tu propio equipo.

Fuente

scragnog/HOT-Step-CPP: ¡Gira los diales. Invoca temazos! ¡AHORA CON MÁS C++! Generación local de música con IA basada en GGML