Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · MiniMax Preview Speech 2.5 HD · $0.1/1k chars
ComfyUI Node

arkennemasis fal · MiniMax Preview Speech 2.5 HD · $0.1/1k chars

10 Cents per 1,000 Characters, Better Than the Name Suggests

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · MiniMax Preview Speech 2.5 HD · $0.1/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►

    "Preview" in the endpoint name makes it sound like a work-in-progress. It isn't a downgrade in the way you'd assume - this is the Speech 2.5 generation on fal's preview route, priced identically to the Speech 02 HD node at $0.10 per 1,000 characters. The thing that actually separates it from its siblings is the language list.

    What it is, and why the language list matters

    MiniMax's voice line is the part of their catalogue they benchmark openly against ElevenLabs, and the practical reason to pay for TTS at all is the same everywhere: local models like Chatterbox and Kokoro are excellent in a single language and less reliable across many. This node exposes a language_boost picker that includes Persian, Filipino and Tamil on top of the usual Chinese/English/Japanese/Korean/European set - and those three are exactly the ones missing from the 2.6 and 2.8 node lists in this pack. If your narration is in Farsi or Tagalog, that's not a nice-to-have, that's the reason you're on this node.

    How it works

    Standard pack behaviour over fal's minimax/preview/speech-2.5-hd endpoint: read FAL_KEY from the .env beside your launcher, validate the text, estimate cost from the character count, submit one billed request, poll while the node shows status, then download into output/fal/fal-ai_minimax_preview_speech-2.5-hd/. No uploads, so nothing before the submit can cost you anything.

    One small confusion to head off: fal's own description text for these preview endpoints still says "using the MiniMax Speech-02 HD model" - the marketing copy wasn't updated when the endpoint moved on. Ignore the blurb; the box list is what the model takes.

    Inputs

    • text - the field is text on this generation (the 2.6 and 2.8 nodes call it prompt), capped at 5000 characters. Your bill tracks this box: ~500 words is about 26 cents.
    • voice_setting_voice_id - free text, default Wise_Woman, from MiniMax's predefined voice IDs. Empty leaves it to the model. This is not a cloning slot.
    • voice_setting_emotion - (not set) plus happy, sad, angry, fearful, disgusted, surprised, neutral.
    • language_boost - set it. An English script read with the wrong language hint is where "the model can't pronounce anything" complaints come from.
    • voice_setting_speed (0.5–2.0), voice_setting_pitch (−12 to 12), voice_setting_vol (0.01–10), voice_setting_english_normalization (off by default).
    • Output: 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 replacements for names the model butchers), output_format (url or hex, non-streaming only - keep the default).

    Optional, same four as every node in the pack: max_cost_usd ($20 default; the run stops before sending when the estimate exceeds it, 0 = uncapped), max_concurrent (default 1 - one paid fal call at a time in a run), reuse_identical_run (default on: identical text and settings return your already-paid file, even after a restart), extra_json.

    Outputs: audio (waveform and sample rate, with a player on the node), audio_path, duration_ms - wire that integer into the pack's Narration Length so each shot covers its own voice-over - and info (request id, estimate, saved files, fal's answer).

    Install

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

    Or ComfyUI Manager → Install via Git URL. Then:

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

    in the .env next to run_nvidia_gpu.bat. Restart; the node is under arkennemasis/fal/Audio/MiniMax.

    Notes

    The 5000-character cap is a hard stop, and no pause markers exist on this generation - the <#x#> syntax showed up later. If you need a deliberate beat in the read, use a full stop and a new sentence, or splice it in your editor.

    For a script you're still editing, run the Turbo sibling at $0.06 instead and keep this one for the take you'll ship. The inputs are identical, so switching is a copy-paste, not a rebuild.

    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.