Nodes/comfyui-mpc-heartmula/HeartMuLa Lyrics Compliance From Spec
ComfyUI Node

HeartMuLa Lyrics Compliance From Spec

The Same Compliance Check, One Wire Fewer

By MPC2026·Created 3 months ago·Updated 3 months ago· 0
HeartMuLa Lyrics Compliance From Spec
  • audio_input
  • song_spec
  • transcribed_lyrics
  • similarity_score
  • exact_match
  • report_json
runtime_profileauto
auto_download_modelsfalse
keep_model_loadedtrue
temperature_tuple0.0,0.1,0.2,0.4
no_speech_threshold0.40
logprob_threshold-1.0

HeartMuLa Lyrics Compliance From Spec is the tidy-graph variant of the pack's compliance check. Where the plain version asks you for an expected_lyrics string, this one pulls the expected lyrics straight out of a song_spec object from HeartMuLa Song Spec. Same transcription, same scoring, same outputs - one less wire, and a guarantee that the check uses the exact lyric text that went into generation.

When you'd use it. If your graph already routes Song Spec around - which it should, since that's where the creative decisions happen - then this node plugs in naturally: Song Spec → Generate From Spec → this. Feed it audio_input from the generator and song_spec from the spec node, and you're done. The only reason to reach for the plain HeartMuLaLyricsCompliance instead is if you're generating lyrics some other way and want to check against arbitrary text that isn't living in a spec.

The mechanism is identical under the hood. It hands the audio to HeartTranscriptor-oss through the pack's vendored heartlib runtime, transcribes it to a temp wav, and compares the transcript against the normalized expected lyrics - section headers stripped, lowercased, punctuation removed. The scoring matches the sibling node: a difflib.SequenceMatcher similarity_score (0–1), a strict exact_match boolean, and a report_json with per-word recall. The one difference is cosmetic and useful: the report also nests the entire song_spec, so a saved report is fully self-contained - lyrics, tags, BPM, key, and the compliance verdict in one JSON blob.

Inputs. Everything is inherited from the parent compliance node except the lyric source:

  • audio_input - the AUDIO output of the generator.
  • song_spec - replaces expected_lyrics; the lyrics come from song_spec["lyrics"].
  • temperature_tuple (default "0.0,0.1,0.2,0.4"), no_speech_threshold (0.4), logprob_threshold (-1) - Whisper-family decoder tuning you can ignore until you have a reason not to.
  • runtime_profile (auto), auto_download_models (off), keep_model_loaded (true) - pack-wide settings, defaults are right.

Outputs. transcribed_lyrics (STRING), similarity_score (FLOAT), exact_match (BOOLEAN), report_json (STRING). Gate on the score, not the boolean - exact matches are rare and string similarity isn't musical quality.

Install. This node ships in the ComfyUI-MPC-HeartMuLa pack, so installing the pack gets you all five nodes. ComfyUI Manager → "Install via Git URL" → https://github.com/MPC2026/ComfyUI-MPC-HeartMuLa.git, or clone it:

cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/MPC2026/ComfyUI-MPC-HeartMuLa.git
cd ComfyUI-MPC-HeartMuLa
python -m pip install -r requirements.txt

Restart ComfyUI. The one model this node needs is the transcriptor, in the pack's standard model root:

cd /path/to/ComfyUI/models
hf download HeartMuLa/HeartTranscriptor-oss --local-dir ./HeartMuLa/HeartTranscriptor-oss

If it's missing, the node fails with a hint showing that exact command. HEARTMULA_SPEC is a custom type, so remember the input only resolves once the pack is loaded. And as with the whole pack, keep expectations sane: a low score usually means the model sang different words, not that your hardware is broken.

CategoryHeartMuLa

Inputs (8)

NameTypeDefaultDescription
audio_inputAUDIO
song_specHEARTMULA_SPEC
runtime_profileCOMBOauto5 options: auto, apple_silicon_fast, apple_silicon_safe, cuda, cpu
auto_download_modelsBOOLEANfalse
keep_model_loadedBOOLEANtrue
temperature_tupleSTRING0.0,0.1,0.2,0.4
no_speech_thresholdFLOAT0.400–1
logprob_thresholdFLOAT-1.0-5–5

Outputs (4)

NameTypeDescription
transcribed_lyricsSTRING
similarity_scoreFLOAT
exact_matchBOOLEAN
report_jsonSTRING