Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · MiniMax Speech 02 Turbo · $0.06/1k chars
ComfyUI Node

arkennemasis fal · MiniMax Speech 02 Turbo · $0.06/1k chars

The $0.06 Draft Voice You Keep Coming Back To

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · MiniMax Speech 02 Turbo · $0.06/1k chars
    • audio
    • audio_path
    • duration_ms
    • info
    ◄text►
    ◄voice_setting_speed1.00►
    ◄voice_setting_vol1.00►
    ◄voice_setting_english_normalizationfalse►
    ◄voice_setting_pitch0►
    ◄voice_setting_emotion(not set)►
    ◄voice_setting_voice_idWise_Woman►
    ◄audio_setting_formatmp3►
    ◄audio_setting_bitrate128000►
    ◄audio_setting_sample_rate32000►
    ◄audio_setting_channel1►
    ◄language_boost(not set)►
    ◄output_formathex►
    ◄pronunciation_dict►
    ◄max_cost_usd20.0►
    ◄reuse_identical_runtrue►
    ◄extra_json►
    ◄max_concurrent1►

    Six cents per 1,000 characters, same input surface as the HD node next to it. Turbo is the version you run while the script is still moving - cheap enough that changing one sentence and re-rendering doesn't sting, which is the whole reason it exists.

    What it is

    The fal wrapper for minimax/speech-02-turbo, MiniMax's fast TTS tier. MiniMax's voice line is the piece of their catalogue they position directly against ElevenLabs, and this is the cheap rung: same predefined voices, same language list, less polish. In ComfyUI terms it's a text-in, audio-out node with no local weights, and it's the natural companion to a video pipeline - narration, then the pack's Narration Length node to make each shot outlast its own voice-over.

    How it works

    FAL_KEY from the .env beside your launcher, validation, a cost estimate computed from your text's character count, one billed request to fal, polling, download into output/fal/fal-ai_minimax_speech-02-turbo/. Text is the only input type; nothing gets uploaded, so the only thing you can lose on a bad configuration is time.

    Inputs worth setting

    • text - the field is named text on this generation of nodes, capped at 5000 characters. Your bill is a function of this box: roughly 500 English words is 2,600 characters, about 16 cents at Turbo rates.
    • voice_setting_voice_id - free text, defaulting to Wise_Woman. Paste any MiniMax predefined voice ID; an empty value leaves it to the model.
    • voice_setting_emotion - (not set), happy, sad, angry, fearful, disgusted, surprised, neutral. Leave it at (not set) unless you need a specific read; the model picks something sensible from your text.
    • language_boost - set the language explicitly rather than leaving it at (not set). It's the difference between a German sentence read as German and a German sentence read by an English speaker guessing.
    • voice_setting_speed - 0.5 to 2.0. Nudging to 1.05 is a common fix for a read that feels slow in a short-form cut.
    • Also here: voice_setting_pitch (−12 to 12), voice_setting_vol (0.01–10), voice_setting_english_normalization (off by default - turn on for number-heavy scripts).
    • Output plumbing: audio_setting_format (mp3, pcm, flac), audio_setting_bitrate (32k–256k), audio_setting_sample_rate (8k–44.1k), audio_setting_channel (1 = mono, 2 = stereo), pronunciation_dict (JSON text replacements for names the model keeps getting wrong), and output_format (url or hex, non-streaming only - leave it at hex).

    Optional pack controls: max_cost_usd (default $20 - effectively unreachable on TTS unless you're pasting a novel, and 0 disables it), max_concurrent (default 1; one paid fal call at a time across a run), reuse_identical_run (unchanged text returns the already-paid file), extra_json (raw JSON merged into fal's request last).

    Outputs: audio (a real waveform with a player on the node), audio_path (file on disk), duration_ms (the measured read length - feed it into Narration Length or Word Timings so captions and shots follow the voice instead of a guess), and info with the request id, estimate and fal's answer.

    Install

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

    Or Manager → Install via Git URL. Then create .env beside run_nvidia_gpu.bat:

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

    Restart and it's under arkennemasis/fal/Audio/MiniMax.

    When Turbo is enough, and when it isn't

    For anything where the voice is functional - a tutorial, a product demo, a rough cut you'll re-record - Turbo is done. The honest reason to step up to HD at $0.10 is the final delivery on a narration people will sit through for ten minutes: that's where the extra warmth and the better handling of long sentences shows.

    One habit that will save you money and confusion: because reuse_identical_run is on by default, tweaking the speed but not the text still counts as a change, while re-running with nothing changed returns your old file. If you're doing a five-variant read-aloud comparison, that's six cents a take - cheaper than the coffee you're drinking while you decide.

    Categoryarkennemasis/fal/Audio/MiniMax

    Inputs (18)

    NameTypeDefaultDescription
    textSTRINGText to convert to speech (max 5000 characters, minimum 1 non-whitespace character)
    voice_setting_speedFLOAT1.000.5–2Speech speed (0.5-2.0)
    voice_setting_volFLOAT1.000.01–10Volume (0-10)
    voice_setting_english_normalizationBOOLEANfalseEnables English text normalization to improve number reading performance, with a slight increase in latency
    voice_setting_pitchINT0-12–12Voice pitch (-12 to 12)
    voice_setting_emotionCOMBO(not set)Emotion of the generated speech '(not set)' leaves it to the model.
    voice_setting_voice_idSTRINGWise_WomanPredefined voice ID to use for synthesis Empty leaves it out.
    audio_setting_formatCOMBOmp3Audio format
    audio_setting_bitrateCOMBO128000Bitrate of generated audio
    audio_setting_sample_rateCOMBO32000Sample rate of generated audio
    audio_setting_channelCOMBO1Number of audio channels (1=mono, 2=stereo)
    language_boostCOMBO(not set)Enhance recognition of specified languages and dialects '(not set)' leaves it to the model.
    output_formatCOMBOhexFormat of the output content (non-streaming only)
    pronunciation_dictSTRINGCustom pronunciation dictionary for text replacement JSON. Empty leaves it out.
    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—
    duration_msINT—
    infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.