Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · ElevenLabs TTS Eleven v4 Turbo · $0.04/1k chars
ComfyUI Node

arkennemasis fal · ElevenLabs TTS Eleven v4 Turbo · $0.04/1k chars

Half the price, and you probably won't hear it

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · ElevenLabs TTS Eleven v4 Turbo · $0.04/1k chars
    • audio
    • audio_path
    • timestamps
    • info
    ◄text►
    ◄voiceRachel►
    ◄stability0.50►
    ◄similarity_boost0.75►
    ◄seed-1►
    ◄language_code►
    ◄output_formatmp3_44100_128►
    ◄apply_text_normalizationauto►
    ◄timestampsfalse►
    ◄max_cost_usd20.0►
    ◄reuse_identical_runtrue►
    ◄extra_json►
    ◄max_concurrent1►

    Four cents per thousand characters. That's the whole pitch, and it's a good one - the non-Turbo Eleven v4 node next door costs eight. Same widgets, same audio tags, same character limit, same output options. The difference is a latency-optimised model, and the honest summary of the difference is: on a clean read of ordinary prose, most people can't reliably pick them apart in a blind listen. On a deliberately emotional line with three stacked audio tags, they sometimes can.

    So the decision isn't "which sounds better" in the abstract. It's "how many takes am I going to burn." If you're auditioning delivery on a 600-character paragraph and you'll run it six times before you like it, Turbo saves you real money. If you're rendering the final pass of a scripted narration with tagged delivery, pay the eight cents and get the non-Turbo take.

    How it works

    Standard fal-node behaviour for this pack: FAL_KEY from the install's .env, input checks, a cost estimate derived from your character count, one billed submission, polling with live status, and audio downloaded to output/fal/elevenlabs_tts_eleven-v4-turbo/. Every request is logged to output/fal/_requests.jsonl with its estimate, so you can total up what a session actually cost instead of guessing.

    The inputs that matter

    text (up to 5,000 characters) is required and is where the delivery instructions go - [whispering], [excited], [sighs] inline, plus IPA in forward slashes for names the model keeps fluffing. voice is a free-text string defaulting to Rachel; empty lets the model choose.

    Then the two dials worth turning: stability (0–1, default 0.5 - lower for expressiveness, higher for consistency) and similarity_boost (default 0.75 - closer to the reference voice, slightly less natural). The rest are set-and-forget: seed (best-effort), language_code (ISO 639-1), output_format (mp3_44100_128 default, with PCM/Opus if something downstream insists), apply_text_normalization (auto/on/off for numbers and dates), and timestamps for character-level timing.

    Outputs are audio, audio_path, timestamps and info. Wire audio into a save node, the pack's video assembly, or a lip-sync node; timestamps is what you want if you're placing captions on real timings rather than estimating them from the script.

    Money, plainly

    $0.04 per 1,000 characters. A 5,000-character narration - the maximum this endpoint accepts, roughly 35 minutes of speech you'll never actually write in one go - is twenty cents. For scale: 1,500 characters of documentary narration is six cents on this node and twelve on the non-Turbo one. You are not going to bankrupt yourself either way; the reason to care is that cheap enough to iterate on means you actually do iterate, and the delivery gets better.

    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 beside run_nvidia_gpu.bat:

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

    There is no key box on the node and no environment fallback - the key comes from that file and nowhere else, which is why a shared workflow can't leak it.

    Common issues & troubleshooting

    You got the same audio back twice with no charge. reuse_identical_run defaults to true and returned the previously paid result from output/fal. When you're auditioning, turn it off on this node; when you're re-running a graph to test wiring, leave it on.

    A bracket tag was read aloud as words. Not every tag is honoured. Verify the ones you'll rely on.

    The read sounds flat compared to the other node. That's the trade you made. Drop stability a notch before you blame the model, and if it still isn't there, re-render the line on the non-Turbo Eleven v4 node.

    Choosing between this and a local model. Chatterbox runs on your own GPU, is MIT-licensed, and clones a voice from a few seconds of reference audio - for privacy or a specific voice, that's a real option and the audio-generation side of this KB explains where it stands. This node's advantages are delivery control and an install you don't have to think about.

    A failure before submission. Free. The node checks text length and required fields before it uploads or sends anything, so an input error never bills you.

    Categoryarkennemasis/fal/Audio/ElevenLabs

    Inputs (13)

    NameTypeDefaultDescription
    textSTRINGThe text to convert to speech. Supports audio tags such as [whispering] and IPA pronunciation enclosed in forward slashes.
    voiceSTRINGRachelThe voice to use for speech generation Empty leaves it out.
    stabilityFLOAT0.500–1Voice stability. Lower values allow more expressive delivery; higher values make delivery more consistent.
    similarity_boostFLOAT0.750–1How closely the output follows the reference voice. Higher values increase similarity but may reduce naturalness.
    seedINT-1-1–4294967295Seed for best-effort reproducibility. Identical output is not guaranteed. -1 leaves it to the model.
    language_codeSTRINGLanguage code (ISO 639-1) for speech generation and text normalization. Empty leaves it out.
    output_formatCOMBOmp3_44100_128Output format of the generated audio. Formatted as codec_sample_rate_bitrate.
    apply_text_normalizationCOMBOautoWhether to normalize text such as numbers and dates before generation.
    timestampsBOOLEANfalseWhether to return character-level timing information with the generated audio.
    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 (4)

    NameTypeDescription
    audioAUDIO—
    audio_pathSTRING—
    timestampsSTRING—
    infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.