Nodes/CRT-Nodes/Audio Transcript Batch (CRT)
ComfyUI Node

Audio Transcript Batch (CRT)

Batch transcription that actually pairs each transcript with its file

By PGCRT·Created 2 years ago·Updated 6 days ago· 138
Audio Transcript Batch (CRT)
  • audio
  • strings_batch
  • display
  • status
isolate_voicefalse
keep_model_loadedtrue
whisper_modellarge-v3-turbo
compute_typefloat16
vad_filtertrue
transcribe_batch_size8
beam_size5
languageauto

Want to turn a folder of audio into transcripts without babysitting each file? Audio Transcript Batch (CRT) takes a batched AUDIO input - the kind Audio Loader Crawl Batch (CRT) produces - runs faster-whisper over every item, and returns one transcript per batch slot as a list. The design goal is obvious once you see the outputs: strings_batch lines up item-for-item with the loader's file_names, so a Save Text With Path (CRT) node can write each .txt next to the audio it describes. Transcribing a hundred clips becomes "load window, transcribe, save, next window."

It's part of the PGCRT CRT-Nodes pack, the author's steadily growing grab-bag that started with a Z-Image LoRA loader in late 2025 and expanded into a full audio+video toolkit. Transcription sits in its audio corner, and it leans on two real dependencies rather than reinventing anything: faster-whisper (the CTranslate2-accelerated Whisper) for the actual decoding and MelBandRoFormer for optional voice isolation.

How it works

Every batch item gets decoded through faster-whisper. Under the hood the model is downloaded from HuggingFace on first use and cached, then runs with batched decoding - transcribe_batch_size (default 8) is how many 30-second chunks get decoded in parallel per file. That's the setting that turns a long podcast from "wait forever" into "wait a bit"; set it to 1 to disable batched decoding entirely.

Three of the settings do the heavy lifting in practice:

  • vad_filter (default on) - runs Silero VAD to cut silences before inference. For long files this is a real speed win, and it keeps Whisper from hallucinating over dead air.
  • beam_size (default 5) - beam search width. Drop to 1 for greedy decoding when you want speed over the last few percent of accuracy.
  • compute_type - float16 is the default and the right call on a GPU; int8_float16 and int8 shrink memory if you're tight.

The whisper_model menu starts at large-v3-turbo, which is the sensible modern default - near-large accuracy at turbo speed. tiny through medium exist if you want something lighter, and language defaults to auto so it'll figure out the language per file.

isolate_voice is the interesting one: flip it on and each file first runs through a MelBandRoFormer voice-isolation model before transcription. If your audio is music or has heavy background noise, separating the vocals first is often the difference between a transcript and a word salad. The cost is an extra model load and slower runs.

Inputs and outputs

Required inputs are just audio, isolate_voice, and keep_model_loaded. That last one defaults to true so the Whisper model stays warm in VRAM between runs - turn it off if you're memory-starved and want it freed as soon as the batch finishes.

Outputs:

  • strings_batch - one transcript per batch item, as a list. This is the one to wire into a text-saver; it pairs with the loader's file_names.
  • display - the same transcripts stitched into one readable string with blank lines between items. Good for a quick look or a text-preview node.
  • status - a summary line: model, compute type, and how many of the batch transcribed.

Installing it

It ships in the CRT-Nodes pack, so install once: ComfyUI Manager → search CRT-Nodes, or:

cd ComfyUI/custom_nodes
git clone https://github.com/PGCRT/CRT-Nodes.git
pip install -r requirements.txt

then restart. The requirements file pulls in faster-whisper, openai-whisper, transformers, and the rest of the pack's heavy stack, so the install is slow even if this is the only node you wanted. First run also downloads the Whisper weights (large-v3-turbo is roughly 1.6 GB) and, if you enable it, the MelBandRoFormer model.

Common issues

  • First run "downloads" forever - that's the model pull. It's one-time; subsequent runs load from cache.
  • Long files crawl - enable vad_filter if you haven't, and raise transcribe_batch_size. The two together are most of the speed story.
  • Red nodes / NaN after an update - CRT nodes change socket names between versions. Right-click → Fix node (recreate).
  • VRAM pressure - large-v3-turbo in float16 is a big resident model. If you batch a lot, either drop compute_type to int8_float16 or uncheck keep_model_loaded.
CategoryCRT/Audio

Inputs (9)

NameTypeDefaultDescription
audioAUDIO
isolate_voiceBOOLEANfalseRun MelBandRoFormer voice isolation on each file before transcription.
keep_model_loadedBOOLEANtrueKeep the Whisper model loaded in VRAM after batch transcription. Disable to free VRAM immediately.
whisper_modeloptCOMBOlarge-v3-turbo14 options: tiny.en, tiny, base.en, base, small.en, small, +8
compute_typeoptCOMBOfloat164 options: float16, int8_float16, int8, float32
vad_filteroptBOOLEANtrueCuts silences before inference for faster long-audio processing. Uses Silero VAD to skip silent regions.
transcribe_batch_sizeoptINT81–64Number of 30s chunks decoded in parallel per file. 1 disables batched decoding.
beam_sizeoptINT51–10Beam search width. 1 = greedy decoding (faster, slightly less accurate).
languageoptSTRINGauto

Outputs (3)

NameTypeDescription
strings_batchSTRINGOne transcript per batch item as a list — pairs item by item with the batch loader's file_names in SaveTextWithPath.
displaySTRINGSame transcripts stitched into one display string, separated by a blank line per item.
statusSTRINGSummary status for the batch run.