Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · MiniMax Voice Clone · $1.50/voice
ComfyUI Node

arkennemasis fal · MiniMax Voice Clone · $1.50/voice

Ten seconds of audio and $1.50 buys you a voice

By Hishamahmer·Created 3 months ago·Updated 9 days ago· 11
arkennemasis fal · MiniMax Voice Clone · $1.50/voice
  • audio
  • audio
  • audio_path
  • custom_voice_id
  • info
◄noise_reductionfalse►
◄need_volume_normalizationfalse►
◄accuracy-1.00►
◄textHello, this is a preview of your cloned voice! I hope you like it!►
◄modelspeech-02-hd►
◄max_cost_usd20.0►
◄reuse_identical_runtrue►
◄extra_json►
◄max_concurrent1►

Hand it at least ten seconds of somebody talking, and it hands back a voice ID you can then use for any amount of speech. $1.50 per clone. No training run, no dataset, no GPU fan spin-up.

The KB's audio chapter makes the case that local cloning crossed the "good enough" line - Chatterbox came close enough that the community stopped treating the API as mandatory, and this pack even ships a local Qwen3-TTS clone node. So why route out? Two reasons: you want it done in one call with zero setup, or you want a specific high-quality voice and don't care that the sample went to a server.

What the node needs, and the 7-day rule

audio is the reference sample: any AUDIO value, at least 10 seconds of it. Clean speech, one speaker, no music. If your source is a ripped interview with a bed underneath, clean it up first - this pack also ships an ElevenLabs audio-isolation node for exactly that job, and the node's own noise_reduction toggle will help but won't perform surgery.

Then the part nobody reads until a voice disappears:

To retain the voice permanently, use it with a TTS (text-to-speech) endpoint at least once within 7 days. Otherwise it will be automatically deleted.

So the clone is generated, and it's provisional. Use it - wire custom_voice_id into a speech node and actually run something - inside a week, or it gets reaped and you're paying $1.50 again.

The inputs worth setting

  • text - a preview line the clone speaks immediately. Defaulted to "Hello, this is a preview of your cloned voice! I hope you like it!" so you hear something the moment it finishes. Preview characters bill separately at $0.30 per 1,000 characters - three cents on a 100-character line, so use a real sentence from your script rather than a nonsense one; it tells you more.
  • model - which MiniMax TTS generates the preview: speech-02-hd, speech-02-turbo, speech-01-hd, speech-01-turbo. It affects the preview only.
  • noise_reduction / need_volume_normalization - off by default. Turn them on when the sample isn't studio-clean.
  • accuracy - a text-validation threshold from 0 to 1, with -1 meaning "leave it to the model". If the clone keeps mis-reading your scripts, this is a dial rather than a mystery.

Outputs and how they wire

audio is the preview as a real ComfyUI AUDIO value with a player on the node. audio_path is that file on disk, under output/fal/fal-ai_minimax_voice-clone/. custom_voice_id is the point of the whole exercise - a STRING, which is exactly why it wires: voice_setting_voice_id on the pack's Speech 2.8 Turbo node is also a plain string, so you connect one to the other and your clone starts narrating. info is the JSON receipt (request id, estimate, files, fal's answer).

Install

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

Restart ComfyUI, or search arkennemasis in ComfyUI-Manager. requirements.txt is httpx alone - for the pack's Codex nodes - and the fal provider is standard-library only. Then your key:

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

in the .env next to run_nvidia_gpu.bat. No key widget exists on any node in this pack; that's a deliberate choice, because widget values are saved into the workflow JSON verbatim.

Where people get burned

  • The clone sounds like a stranger. Sample quality beats sample length. Ten clean seconds of someone speaking directly at a mic outperforms two noisy minutes.
  • It vanished a week later. The 7-day rule above. Generate speech with it once and it sticks.
  • You fed it music, or two speakers. It clones the average of what you gave it, and the average of two people is nobody.
  • You sent someone else's voice. Worth saying once, plainly: consent isn't a formality here, and the sample leaves your machine.
  • You paid twice for the same clone. reuse_identical_run (default true) reuses the paid result for identical inputs, but a new reference sample is a new clone and a new $1.50 - that one's not a bug.
Categoryarkennemasis/fal/Audio/MiniMax

Inputs (10)

NameTypeDefaultDescription
audioAUDIOURL of the input audio file for voice cloning. Should be at least 10 seconds long. To retain the voice permanently, use it with a TTS (text-to-speech) endpoint at least once within 7 days. Otherwise, it will be automatically deleted.
noise_reductionBOOLEANfalseEnable noise reduction for the cloned voice
need_volume_normalizationBOOLEANfalseEnable volume normalization for the cloned voice
accuracyFLOAT-1.00-1–1Text validation accuracy threshold (0-1) -1 leaves it to the model.
textSTRINGHello, this is a preview of your cloned voice! I hope you like it!Text to generate a TTS preview with the cloned voice (optional) Empty leaves it out.
modelCOMBOspeech-02-hdTTS model to use for preview. Options: speech-02-hd, speech-02-turbo, speech-01-hd, speech-01-turbo
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—
custom_voice_idSTRING—
infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.