New to Claude Skills? Learn how to install them →

nousresearch on GitHub

HeartMuLa

Free

Generate music from lyrics and tags with an open-source model.

Get this skill

Free · Opens the source repo

What HeartMuLa does

HeartMuLa is an open-source music generation framework designed for creating songs based on input lyrics and associated tags. It offers a suite of models, including the HeartMuLa music language model, which can generate full songs conditioned on textual descriptions. This framework is particularly useful for developers and musicians looking for a local solution to music generation, as it supports offline usage and provides multilingual capabilities. The HeartMuLa system is comparable to proprietary solutions like Suno, making it an attractive option for those seeking open-source alternatives.

The framework comprises several components: the HeartMuLa model itself, which is available in both 3B and 7B parameter versions, a music codec called HeartCodec for high-fidelity audio reconstruction, and HeartTranscriptor for converting spoken lyrics into text. Additionally, HeartCLAP is included for aligning audio with text, enhancing the overall functionality of the system. Users can generate songs by providing structured lyrics and relevant tags, allowing for a customized creative process.

HeartMuLa is particularly suited for developers, musicians, and researchers interested in AI-driven music generation. It supports a variety of input formats and offers flexibility in terms of model loading, making it adaptable to different hardware configurations. Users can leverage this tool to explore new musical ideas or to automate aspects of the songwriting process, thereby enhancing their creative workflow.

However, it is important to note that the installation process involves several steps, including dependency management and code patches due to compatibility issues with newer libraries. Users should be comfortable with Python and have access to a compatible GPU for optimal performance, as running the model on a CPU can be significantly slower. Overall, HeartMuLa provides a robust platform for generating music from text, catering to those looking for an open-source solution in the realm of AI music generation.

When to use it

Use HeartMuLa when you want to generate music from lyrics and tags, especially in an offline environment.

When not to use it

Avoid HeartMuLa if you lack the necessary hardware for GPU acceleration, as performance on CPU is significantly slower.

What you can build with it

Generating a Wedding Song

You want to create a romantic wedding song using specific lyrics and tags related to love and celebration.

Creating Background Music for a Game

You need to generate background music that matches the theme of your game, using descriptive tags and lyrics.

Experimenting with AI Music Generation

As a developer, you're exploring AI tools for creative projects and want to test the capabilities of HeartMuLa.

How to install HeartMuLa

View source

1. Install with the skills CLI

npx skills add nousresearch/hermes-agent/heartmula --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by nousresearch

HeartMuLa - Open-Source Music Generation

Overview

HeartMuLa is a family of open-source music foundation models (Apache-2.0) that generates music conditioned on lyrics and tags, with multilingual support. Generates full songs from lyrics + tags. Comparable to Suno for open-source. Includes:

  • HeartMuLa - Music language model (3B/7B) for generation from lyrics + tags
  • HeartCodec - 12.5Hz music codec for high-fidelity audio reconstruction
  • HeartTranscriptor - Whisper-based lyrics transcription
  • HeartCLAP - Audio-text alignment model

When to Use

  • User wants to generate music/songs from text descriptions
  • User wants an open-source Suno alternative
  • User wants local/offline music generation
  • User asks about HeartMuLa, heartlib, or AI music generation

Hardware Requirements

  • Minimum: 8GB VRAM with --lazy_load true (loads/unloads models sequentially)
  • Recommended: 16GB+ VRAM for comfortable single-GPU usage
  • Multi-GPU: Use --mula_device cuda:0 --codec_device cuda:1 to split across GPUs
  • 3B model with lazy_load peaks at ~6.2GB VRAM

Installation Steps

1. Clone Repository

cd ~/  # or desired directory
git clone https://github.com/HeartMuLa/heartlib.git
cd heartlib

2. Create Virtual Environment (Python 3.10 required)

uv venv --python 3.10 .venv
. .venv/bin/activate
uv pip install -e .

3. Fix Dependency Compatibility Issues

IMPORTANT: As of Feb 2026, the pinned dependencies have conflicts with newer packages. Apply these fixes:

# Upgrade datasets (old version incompatible with current pyarrow)
uv pip install --upgrade datasets

# Upgrade transformers (needed for huggingface-hub 1.x compatibility)
uv pip install --upgrade transformers

4. Patch Source Code (Required for transformers 5.x)

Patch 1 - RoPE cache fix in src/heartlib/heartmula/modeling_heartmula.py:

In the setup_caches method of the HeartMuLa class, add RoPE reinitialization after the reset_caches try/except block and before the with device: block:

# Re-initialize RoPE caches that were skipped during meta-device loading
from torchtune.models.llama3_1._position_embeddings import Llama3ScaledRoPE
for module in self.modules():
    if isinstance(module, Llama3ScaledRoPE) and not module.is_cache_built:
        module.rope_init()
        module.to(device)

Why: from_pretrained creates model on meta device first; Llama3ScaledRoPE.rope_init() skips cache building on meta tensors, then never rebuilds after weights are loaded to real device.

Patch 2 - HeartCodec loading fix in src/heartlib/pipelines/music_generation.py:

Add ignore_mismatched_sizes=True to ALL HeartCodec.from_pretrained() calls (there are 2: the eager load in __init__ and the lazy load in the codec property).

Why: VQ codebook initted buffers have shape [1] in checkpoint vs [] in model. Same data, just scalar vs 0-d tensor. Safe to ignore.

5. Download Model Checkpoints

cd heartlib  # project root
hf download --local-dir './ckpt' 'HeartMuLa/HeartMuLaGen'
hf download --local-dir './ckpt/HeartMuLa-oss-3B' 'HeartMuLa/HeartMuLa-oss-3B-happy-new-year'
hf download --local-dir './ckpt/HeartCodec-oss' 'HeartMuLa/HeartCodec-oss-20260123'

All 3 can be downloaded in parallel. Total size is several GB.

GPU / CUDA

HeartMuLa uses CUDA by default (--mula_device cuda --codec_device cuda). No extra setup needed if the user has an NVIDIA GPU with PyTorch CUDA support installed.

  • The installed torch==2.4.1 includes CUDA 12.1 support out of the box
  • torchtune may report version 0.4.0+cpu — this is just package metadata, it still uses CUDA via PyTorch
  • To verify GPU is being used, look for "CUDA memory" lines in the output (e.g. "CUDA memory before unloading: 6.20 GB")
  • No GPU? You can run on CPU with --mula_device cpu --codec_device cpu, but expect generation to be extremely slow (potentially 30-60+ minutes for a single song vs ~4 minutes on GPU). CPU mode also requires significant RAM (~12GB+ free). If the user has no NVIDIA GPU, recommend using a cloud GPU service (Google Colab free tier with T4, Lambda Labs, etc.) or the online demo at https://heartmula.github.io/ instead.

Usage

Basic Generation

cd heartlib
. .venv/bin/activate
python ./examples/run_music_generation.py \
  --model_path=./ckpt \
  --version="3B" \
  --lyrics="./assets/lyrics.txt" \
  --tags="./assets/tags.txt" \
  --save_path="./assets/output.mp3" \
  --lazy_load true

Input Formatting

Tags (comma-separated, no spaces):

piano,happy,wedding,synthesizer,romantic

or

rock,energetic,guitar,drums,male-vocal

Lyrics (use bracketed structural tags):

[Intro]

[Verse]
Your lyrics here...

[Chorus]
Chorus lyrics...

[Bridge]
Bridge lyrics...

[Outro]

Key Parameters

ParameterDefaultDescription
--max_audio_length_ms240000Max length in ms (240s = 4 min)
--topk50Top-k sampling
--temperature1.0Sampling temperature
--cfg_scale1.5Classifier-free guidance scale
--lazy_loadfalseLoad/unload models on demand (saves VRAM)
--mula_dtypebfloat16Dtype for HeartMuLa (bf16 recommended)
--codec_dtypefloat32Dtype for HeartCodec (fp32 recommended for quality)

Performance

  • RTF (Real-Time Factor) ≈ 1.0 — a 4-minute song takes ~4 minutes to generate
  • Output: MP3, 48kHz stereo, 128kbps

Pitfalls

  1. Do NOT use bf16 for HeartCodec — degrades audio quality. Use fp32 (default).
  2. Tags may be ignored — known issue (#90). Lyrics tend to dominate; experiment with tag ordering.
  3. Triton not available on macOS — Linux/CUDA only for GPU acceleration.
  4. RTX 5080 incompatibility reported in upstream issues.
  5. The dependency pin conflicts require the manual upgrades and patches described above.

Links

Frequently asked questions about HeartMuLa

Similar skills