Nodes/ComfyUI-RT-HeartMuLa/RT HeartMuLa Transcribe
ComfyUI Node

RT HeartMuLa Transcribe

Round-Trip Your Generated Song Back to Lyrics

By monnky·Created 7 months ago·Updated 7 months ago· 11
RT HeartMuLa Transcribe
  • transcriptor_pipe
  • audio
  • lyrics

RT HeartMuLa Transcribe is the second half of the pack's optional transcriptor branch. It takes the pipeline from RT HeartMuLa Transcriptor Loader, points it at an AUDIO input, and returns the words it hears as a single STRING. It's the "did the model actually sing my lyrics?" node.

Given the pack's own feature set, this reads like a verification loop: you feed the sampler lyrics, it sings them, and this node transcribes the result back so you can compare. Community testing of HeartMuLa backs up the premise - the model is unusually faithful to lyrics, so the round-trip usually comes back clean, which makes transcription more of a QA tool and an accessibility nicety (subtitles, lyric sheets) than a fixer. It will also happily transcribe any AUDIO you feed it, not just freshly generated songs - hook it up after a LoadAudio node and it works on anything.

How it works

The node takes the audio's waveform and sample rate, downmixes to mono if it's stereo, then walks through the waveform in 30-second chunks. Each chunk goes through the loaded ASR pipeline with timestamps, the transcribed pieces are joined with spaces, and the whole thing comes back as a lyrics string. Tiny tail chunks under 100 samples are dropped rather than fed to the model, which is a small detail but a sensible one - no point burning a model call on a fragment of silence.

It runs inside a progress bar loop that respects ComfyUI's interrupt handling, so a 4-minute track's transcription is cancelable mid-run rather than a hang-you-until-it's-done affair.

Inputs and output

  • transcriptor_pipe - the pipeline object from the Transcriptor Loader (HEART_TRANSCRIPTOR). Wire the loader's output here.
  • audio - an AUDIO input. The sampler's output works directly; so does any audio source.
  • Output: a single lyrics STRING.

That string is plain text, so route it to a text display node (the pack's example workflow uses ShowText) or anywhere a string is useful.

Before you use it

Remember the transcriptor model is optional and not installed by default. If the loader throws Model not found, that's the cause:

cd ComfyUI/models/HeartMuLa
git clone https://huggingface.co/HeartMuLa/HeartTranscriptor-oss

Common issues

  • Empty or truncated transcription - the 100-sample tail cutoff is the usual culprit on short clips; feed it a longer piece of audio. Stereo inputs are handled (downmixed), so that's rarely the issue.
  • Slow transcription - it's a full ASR model running chunk-by-chunk. On CPU this is genuinely tedious; keep device: cuda in the loader if you can.
  • Timestamps ignored - the pipeline is called with return_timestamps=True but the node discards them and returns only concatenated text. If you need word-level timing, you'll be writing your own node; this one gives you the words, not the clock.
  • Transcription doesn't match your lyrics - that's the model's adherence talking, not the transcriptor. If it's a different song entirely, your prompt conditioning was off; revisit cfg_scale and the tag format in the sampler side.
CategoryHeartMuLa/Transcriptor

Inputs (2)

NameTypeDefaultDescription
transcriptor_pipeHEART_TRANSCRIPTOR
audioAUDIO

Outputs (1)

NameTypeDescription
lyricsSTRING