Local music generation
Compare local music models for songs, instrumentals and sound effects
The right model depends on whether you want a song from lyrics, a short backing track, or sound effects. Compare the intended use and published results alongside each model’s runtime1 requirements and commercial-use terms.
Separate songs from short audio generation
A vocal song, accompaniment loop, background bed and sound effect need different inputs and outputs. For lyrics, check lyric conditioning and section development; for a scene effect, check duration limits, text prompting and audio format. Compare documented inputs and outputs rather than ranking everything from one identical prompt.
Local means the code and weights run on your device. Initial downloads need internet, and exposing a server to others is a separate choice. Check checkpoint2 size and file licenses, and keep output files organized by project.
Songs with lyrics and vocals
ACE-Step 1.5 generates from descriptions and lyrics and documents cover and editing features. More than 50 languages and up to ten minutes are capability descriptions, not guarantees of equal language quality or device runtime.
HeartMuLa 3B accepts lyric and tag files and lists a default maximum duration of 240,000 ms. Its repository reports current inference3 around RTF4 1.0, so it does not support claims of multi-minute songs in seconds. Lazy loading is a memory option, not a speed guarantee.
YuE2 plans a score from lyrics and synthesizes 48 kHz stereo, with score-editing and cover examples. Its official baseline is Linux, Python 3.12 or newer, and a 24 GB BF165-capable NVIDIA GPU6.
In the model card's ordinary generation table, an RTX 4090 24GB generated 214.85 seconds of audio in 71.04 seconds, averaged across 32 warm runs7, with 11.18 GiB peak VRAM8. This was unquantized PyTorch9 2.10, about 0.33 times the audio duration; initial loading was excluded and it processes one song at a time.
The scores below are automatic evaluations published in the YuE WildSongBench documentation and YuE2 model card on September 12, 2026. They cover the same 192 prompts, but are neither human preference results nor a compute-matched comparison.
Standard YuE2 and public model baselines generate two candidates and select the lower-PER10 result, with four ASR11 passes per candidate. Best-of-812 selects by musicality, prompt control and PER, so it should not be compared directly with the standard setting.
For context, its scores (SongBench Avg 6.9632, PER 9.79%) come from that separate selection process. The benchmark uses the YuE2-Vae13-legacy decoder; YuE2-Vae is the everyday default for better perceived audio quality.
These are automatic metrics, not universal human judgments of sound quality.
| Model setting | SongBench Avg ↑ | Phoneme error rate (PER) ↓ | How to read it |
|---|---|---|---|
| YuE2 (lower PER of two candidates) | 6.7316 | 8.44% | Standard YuE2 setting. Benchmark uses YuE2-Vae-legacy. |
| HeartMuLa | 6.2483 | 10.71% | Automatic scores in the same 192-prompt table. |
| ACE-Step 1.5 | 6.0118 | 7.46% | Higher SongBench average is better; lower PER is better. |
| YuE 1 (original model) | 4.9165 | 36.38% | An earlier-generation model, distinct from current YuE2. |
WildSongBench automatic evaluation on 192 prompts: SongBench average and lyric error rate for local candidates
YuE2 (lower PER of two candidates)
- SongBench Avg ↑
- 6.7316
- Phoneme error rate (PER) ↓
- 8.44%
- How to read it
- Standard YuE2 setting. Benchmark uses YuE2-Vae-legacy.
HeartMuLa
- SongBench Avg ↑
- 6.2483
- Phoneme error rate (PER) ↓
- 10.71%
- How to read it
- Automatic scores in the same 192-prompt table.
ACE-Step 1.5
- SongBench Avg ↑
- 6.0118
- Phoneme error rate (PER) ↓
- 7.46%
- How to read it
- Higher SongBench average is better; lower PER is better.
YuE 1 (original model)
- SongBench Avg ↑
- 4.9165
- Phoneme error rate (PER) ↓
- 36.38%
- How to read it
- An earlier-generation model, distinct from current YuE2.

Instrumental clips and sound effects
Stable Audio Open 1.0 generates up to 47 seconds of 44.1 kHz stereo from text. Its model card describes sound effects and musical elements as intended uses and specifies English prompts. It is a candidate for effects or an instrumental passage, not a replacement for lyric-led songs. Access requires accepting the Hugging Face license terms.
MusicGen offers 300M, 1.5B and 3.3B sizes with text and melody variants. Its model card says realistic vocals are difficult and performance may be lower outside English. AudioCraft's guide lists 16 GB VRAM or more for medium. It fits background-music ideas and research experiments better.

Do not treat hardware figures as equivalent
Beyond the standard 2B DiT14's 4/6 GB starting guidance, ACE-Step offers an XL 4B DiT. The current NVIDIA table recommends CPU15 offload16 for XL in the 16–20 GB tier, no offload from 20 GB, and a 4B LM from 24 GB. Apple silicon has a dedicated MLX17 launcher alongside the broader MPS support. YuE2 specifies Linux and 24 GB BF16 NVIDIA; MusicGen medium lists 16 GB VRAM.
Stable Audio Open and HeartMuLa do not state one minimum VRAM for all setups. Do not turn missing data into claims of low-end support or high-end necessity; check the exact checkpoint instructions. Test the Apple-silicon MLX path briefly, without comparing it directly to NVIDIA VRAM tiers.
Check code and weights separately
The current YuE2 README distinguishes Apache 2.0 code/docs from CC BY-NC 4.0 plus additional creator permission for YuE2-3B/VAE weights. Do not carry older YuE license announcements forward. MusicGen's MIT code license does not cover its CC BY-NC 4.0 weights.
Stable Audio Open uses the Stability AI Community License and directs commercial users to separate terms. HeartMuLa says its code and associated weights are Apache 2.0; ACE-Step 1.5 lists MIT. Recheck the exact checkpoint terms.
Training data, reference lyrics/audio, voice imitation and platform policies can remain separate from model licenses. Read the relevant terms before monetizing or releasing music.
Narrow candidates by task
For vocal-song experiments, start with ACE-Step; for lyric/tag-file workflows, HeartMuLa; for score control on 24 GB Linux/NVIDIA, YuE2. Stable Audio Open suits effects and musical elements up to 47 seconds; MusicGen suits text- or melody-conditioned background-music experiments. This is a task-based shortlist, not a quality ranking.
For a hands-on comparison, align target duration and genre, and record each model's supported inputs. Compare runtime, memory, Korean lyric intelligibility, sample rate18 and editing effort. Mark undocumented memory or timing as unspecified.

Make a short comparison session reproducible
Start with two models that target the same outcome to limit setup overhead. Use the same short lyrics and genre for songs, or the same sound description and target duration for effects, adapting only to each model's supported input. A cold start may include downloads and initialization, so record it separately from generation and check that the output file is saved.
In your comparison notes, record model and checkpoint, code version, device, settings, output duration, generation time, peak memory and listening notes. Separate published claims from your own measurements; do not fill unmeasured fields with guesses. If the audio is for release, note the license and input-material review too.
Terminology notes
Runtime — Software that loads model files and runs their computations. Supported formats, hardware, and optimizations vary by runtime.
Back to the textCheckpoint — A file containing saved model weights and related state. Versions or tasks in one model family may use different checkpoints.
Back to the textInference — The process of using a trained model to compute an output for an input. Here, local inference means running the model on the user’s device.
Back to the textReal-Time Factor — Generation time divided by the duration of the output. Under comparable conditions, a lower value indicates faster generation.
Back to the textBF16 — A 16-bit floating-point format for storing and computing model values. Support depends on the hardware and runtime.
Back to the textGPU — A processor designed to handle many calculations in parallel. It performs model computations during AI inference.
Back to the textWarm run — A measurement made after model loading and initialization. It may exclude the loading wait from the first run.
Back to the textVRAM — Memory used by a graphics card’s GPU for model weights and intermediate values. It is distinct from system RAM.
Back to the textPyTorch — A software framework for building and running AI models. Check the compatible PyTorch version and hardware support along with the model.
Back to the textPhoneme Error Rate — An error metric comparing recognized sound units with a reference. Lower means a closer match, but it does not measure overall audio quality or enjoyment.
Back to the textAutomatic Speech Recognition — Technology that recognizes speech and converts it to text. Its output can help assess intelligibility, but does not represent overall audio quality or naturalness.
Back to the textBest of eight — An evaluation that generates eight candidates and selects one using a defined criterion. It uses more computation than a single-generation run.
Back to the textVAE — Short for Variational Autoencoder. It can encode input into a compact latent representation or decode that representation into an output.
Back to the textDiT — Short for Diffusion Transformer: a model architecture that uses a transformer to refine noisy representations across diffusion steps.
Back to the textCPU — The central processor that executes general-purpose program instructions. AI workloads may divide work between it and other processors such as GPUs.
Back to the textOffloading — Moving some model data from GPU memory to system RAM or storage when capacity is limited. This adds data transfer.
Back to the textMLX — A machine-learning framework for Apple silicon. It uses Apple silicon’s unified-memory architecture; supported models and features vary by MLX tool.
Back to the textSampling rate — The number of times per second an audio signal is measured when digitized. It is distinct from bit depth.
Back to the text