Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · ElevenLabs Speech to Text · $0.03/min
ComfyUI Node

arkennemasis fal · ElevenLabs Speech to Text · $0.03/min

Transcripts you can actually caption with

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · ElevenLabs Speech to Text · $0.03/min
  • audio
  • language_probability
  • language_code
  • text
  • words
  • info
◄language_code►
◄tag_audio_eventstrue►
◄diarizetrue►
◄max_cost_usd20.0►
◄reuse_identical_runtrue►
◄extra_json►
◄max_concurrent1►

Whisper is free and runs on your own card, so the case for paying for transcription needs to be made. Here it is: this endpoint returns structured output the local tools make you assemble - speaker labels, audio-event tags, word-level timing, and a language-confidence number - in one pass, and it costs $0.03 a minute.

Three real uses in a ComfyUI graph. One, subtitles: the words output gives you timings, so you're not estimating caption placement from word length. Two, that same text feeds the pack's forced-alignment node when you want character-accurate timing instead of word-level. Three, an LLM stage: transcribe the narration, hand the text to a language model for a shot list or a title, and you've closed a loop that used to require leaving ComfyUI.

How it works

The audio is uploaded to fal's CDN (free), transcribed in one billed call, and the response is unpacked into the node's outputs with the run written to output/fal/_requests.jsonl. Nothing runs on your machine. That's worth weighing: transcription sends your audio - interviews, unreleased scripts, whatever is being talked about - to a third party, which is the standing trade of every API node in this pack.

The inputs that matter

audio is required; that's the whole input.

Then three settings that decide the shape of the answer:

  • diarize - default true, annotates who is speaking. Leave it on for interviews and panels, turn it off for a single narrator.
  • tag_audio_events - default true, tags thing like laughter and applause inline. Lovely for a podcast transcript, slightly annoying for a subtitle file, because the tag will end up in your caption text if you pipe the raw string through.
  • language_code - empty lets it detect. The output echoes the detected code back, which is how you find out your "English" interview had a French exchange in the middle.

Outputs: language_probability (a float - if this is low, don't trust the transcript), language_code, text, words (the JSON structure with per-word timing, surfaced as a string), and info.

Money

$0.03 per input minute. A fifty-minute interview is $1.50. The max_cost_usd default of $20 is about eleven hours, so this isn't a node you'll trip the cap on - but note that fal bills in minutes and rounds, so a graph that transcribes one twenty-second scene per branch adds up faster than the per-minute rate suggests.

Install

Manager → search comfyui-arkennemasis, or:

cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis

Restart, then one line in the .env next to run_nvidia_gpu.bat:

FAL_KEY=your-key-from-fal.ai/dashboard/keys

No model downloads. The httpx entry in the pack's requirements is for the ChatGPT-login Codex nodes, not this one.

Common issues & troubleshooting

Low language_probability and a garbled transcript. Heavy music beds, overlapping speakers or a bad phone line. Clean the audio first with the ElevenLabs Audio Isolation node - a tenth of the price per minute - and re-run. It's the single best fix available in this pipeline.

Speaker labels jump around on one person. Diarization is clustering voices, and a long pause or a cough starts a new cluster. It's a labelling artefact, not a transcription error.

[laughter] ended up burned into your subtitles. tag_audio_events was on and you piped text straight through. Turn it off, or filter the tags before the caption node.

Captions are close but drift over a long clip. Use the words output rather than estimating placement from the script, or go all the way to forced alignment for character-level timing.

A long file seems to hang. Transcription of a long recording takes time, and the node shows status while it works. Cancel propagates to fal; if ComfyUI crashed instead, the job still finished server-side - pull it down free with fal Recover Result and the request id from the ledger.

Categoryarkennemasis/fal/Audio/ElevenLabs

Inputs (8)

NameTypeDefaultDescription
audioAUDIOURL of the audio file to transcribe
language_codeSTRINGLanguage code of the audio Empty leaves it out.
tag_audio_eventsBOOLEANtrueTag audio events like laughter, applause, etc.
diarizeBOOLEANtrueWhether to annotate who is speaking
max_cost_usdoptFLOAT20.00–100000Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap.
reuse_identical_runoptBOOLEANtrueIf these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings.
extra_jsonoptSTRINGAdvanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally.
max_concurrentoptINT11–32How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed.

Outputs (5)

NameTypeDescription
language_probabilityFLOAT—
language_codeSTRING—
textSTRING—
wordsSTRING—
infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.