Nodes/ComfyUI Eclipse/Transcribe Audio
ComfyUI Node

Transcribe Audio

Local Whisper large-v3 in ComfyUI, no API key and no lyrics required

By r-vage·Created 12 months ago·Updated 14 days ago· 38
Transcribe Audio
  • audio
  • vocals
  • transcript
  • timing_json
  • srt
  • report
◄languageAuto►
◄deviceauto►

You have audio and you want words out of it. Maybe it's a spoken clip that needs an SRT, maybe it's a song you didn't write and you need the text before you can caption or lip-sync anything to it. The usual answer is a standalone Whisper script, or the WhisperSRT node, or a detour through ffmpeg. This node does it in the graph: local Whisper large-v3, four text outputs, nothing leaves your machine.

What it actually is

Transcribe Audio [Eclipse] runs the same local recognition stack the pack's lyric caption renderer uses - faster-whisper with the large-v3 CTranslate2 conversion, driven through stable-ts so you get word-level timestamps, not just sentence blocks. It's recognition only: no supplied lyrics, no reference text, no API. Give it a recording and it tells you what it heard and roughly when.

That word-timing part is why it exists rather than you pasting audio into some other tool. Subtitle text is the easy half; timestamps tight enough to highlight a word on a beat are the hard half - and exactly what you need if you're feeding a TTS or lip-sync pipeline.

How the recognition works

The audio gets downmixed and resampled to 16 kHz mono, then the model transcribes it with beam search, word timestamps enabled and language conditioning off between segments, which keeps one early mistake from snowballing through the whole file.

Language is the interesting bit. On Auto it doesn't assume the first ten seconds are representative - it finds vocal candidates across the recording and samples inside them, then reports confidence and VAD coverage. If it finds silence and no signal at all, it errors instead of defaulting to English. That's the right call: silently transcribing your Japanese track as English is worse than a clear failure.

Segments come back filtered, not accepted blindly. Anything with no letters or numbers, or a recognition score below roughly -1.2 average log-probability, is discarded and listed in the report rather than exported as gibberish. Small overlapping word timestamps get reconciled to a midpoint boundary; nothing is evenly divided to fill a gap. The model unloads when the run finishes, and the node keys its cache on the model files, so a downstream tweak reuses the transcript instead of re-running recognition.

The inputs and outputs

You get three required inputs: audio (the complete recording - its time zero is the time zero of every timestamp you'll get back), language (defaults to Auto, otherwise a Whisper language code), and device (auto, cpu or cuda; CUDA runs float16, CPU runs int8 and is slower but works). There's one optional input, vocals, for an isolated vocal stem - it must share the recording's time zero and duration within 50 ms, and on singing it's the difference between usable and hopeful.

Four string outputs, in order: transcript, timing_json, srt, report.

  • transcript → a String or Multiline Text node, or straight into the lyric caption node's lyrics socket.
  • timing_json → the caption node's corrected_timing input if you want to skip a second alignment pass entirely.
  • srt → any text preview; it's full-audio seconds, so it lines up with the recording rather than a trimmed clip.
  • report → read this one. It's where low-confidence segments, language detection, rejected spans and unresolved timings are listed.

For a review stop, send transcript through Show Text [Eclipse] with its result-review option on and queue once - read it, fix it, queue again.

Install

Same pack, same model files as the caption renderer:

cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
python -m pip install -r ComfyUI_Eclipse/requirements.txt

# the model is NOT downloaded for you: pinned Systran conversion
mkdir -p ComfyUI/models/whisper/large-v3
huggingface-cli download Systran/faster-whisper-large-v3 \
  --revision edaa852ec7e145841d8ffdb056a99866b5f0a478 \
  --local-dir ComfyUI/models/whisper/large-v3

Use your embedded Python if you're on the portable Windows build, then restart ComfyUI.

Where people get burned

The model is not automatic. No download happens at install, at queue time, or when the node appears in the menu. Missing files give you a "Missing large-v3 files" error; a different conversion gives you an unverified-artifact error, because all five files are hashed against a pinned revision. Use the revision above, not whatever the first search result offers.

Singing is the weak case and the node says so. Its own report warns that automatic transcription can miss or invent words in singing, backing vocals and instrumental passages. Long instrumental stretches produce nothing, sustained notes wander, and repetitions can get hallucinated. Isolated vocals help; reading the report before you trust the text helps more.

A few things it can't do. It transcribes in the selected language and never translates. It won't fill gaps with plausible-sounding text. And mixed-language singing needs a manual language pick - Auto picks one predominant language and lives with it.

Set expectations on speed. Large-v3 is the big model, recognition is sequential with the rest of your graph, and the model unloads after every run, so a batch of separate runs pays the load cost each time.

Category🌒 Eclipse/ Audio

Inputs (4)

NameTypeDefaultDescription
audioAUDIOComplete recording. Output timestamps start at this audio's time zero.
languageCOMBOAuto101 options: Auto, en, zh, de, es, ru, +95
deviceCOMBOauto3 options: auto, cpu, cuda
vocalsoptAUDIOOptional isolated vocals with the same time zero and duration as audio (within 50 ms).

Outputs (4)

NameTypeDescription
transcriptSTRING—
timing_jsonSTRING—
srtSTRING—
reportSTRING—