Nodes/ComfyUI-JM-MiniMax-API/MiniMax Voice Design
ComfyUI Node

MiniMax Voice Design

Design a Voice From a Description — No Audio Required

By juemingai·Created about a year ago·Updated about a year ago· 6
MiniMax Voice Design
    • voice_id
    • trial_audio
    api_key
    prompt讲述悬疑故事的播音员,声音低沉富有磁性,语速时快时慢,营造紧张神秘的氛围。
    preview_text夜深了,古屋里只有他一人。窗外传来若有若无的脚步声,他屏住呼吸,慢慢地,慢慢地,走向那扇吱呀作响的门……
    custom_voice_id

    Most TTS tools make you choose between preset voices and cloning an existing one. The MiniMax Voice Design node takes a third path: you describe a voice in prose, and MiniMax invents one to match. No sample to upload, no person to clone - you type "deep, magnetic narrator for a suspense story" and get back a voice ID that didn't exist until you asked for it.

    If that sounds like the same trick as ElevenLabs' voice design or Alibaba's Qwen3-TTS-VD, it is - this is MiniMax's commercial version of it, living as a node in ComfyUI. The workflow it feeds is short: design the voice, then send its voice_id into Text to Speech's custom_voice_id and narrate whatever you want.

    How it works

    The node POSTs to https://api.minimax.io/v1/voice_design with your voice description and a voice_id it either generates or you provide. (Note the host: this is one of the two nodes in the pack that hit api.minimax.io rather than api.minimaxi.chat - the TTS and video nodes use the other domain. It's a quirk of MiniMax's API split, not a bug.) The API returns the confirmed voice ID plus, if you sent preview_text, a trial audio clip. That clip comes back as hex-encoded audio or a URL; the node sniffs the format from the file's magic bytes (wav, mp3, flac, ogg, aac, m4a), names it voice_design_trial_{voice_id}_{timestamp}.{ext}, and saves it to your output folder.

    The inputs that matter

    • api_key - the pack-wide MiniMax key. Note: no Group ID here, unlike TTS and Voice Cloning. This endpoint only wants the key.
    • prompt - the voice description, and this is where you earn your results. MiniMax's own examples lean heavily on structure: gender, age, emotion, speaking style, tone, and the use case. The node's default is a Chinese suspense-narrator prompt, and the README's worked examples are Chinese too - describe the voice in whatever language the character lives in, but be specific. "Mysterious narrator" is weak; "male, around 40, low and magnetic, speaks slowly with pauses for tension" is a prompt that'll actually do something.
    • preview_text - optional, max 200 characters. The text the trial clip speaks. If you leave it empty, you get no trial_audio.
    • custom_voice_id - optional. Give one and the node uses it as-is; leave it empty and it generates voice_{timestamp}_{uniqueid}. If you're building a voice library, set your own IDs so they're memorable.

    Outputs

    • voice_id - the confirmed ID (the API's version, which may differ slightly from what you sent). Wire it into Text to Speech's custom_voice_id.
    • trial_audio - absolute path to the saved preview clip, or an empty string if no preview was requested. Wire it into Preview Audio to hear the voice before you commit.

    Common issues

    The voice_id you get back is only useful inside the same MiniMax account that generated it - you're not exporting a voice, you're registering one on their platform. If TTS later says it can't find the voice, check that both nodes are using the same API key.

    Also worth knowing: a failure to save the trial audio doesn't fail the node - the voice ID still registers. You'll see a warning in the logs instead. And as with everything in this pack, this is a paid cloud call, so a preview text that's too long just wastes API credit, not your time.

    Install

    Part of the ComfyUI-JM-MiniMax-API pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/synthetai/ComfyUI-JM-MiniMax-API
    pip install -r requirements.txt
    

    Or search "ComfyUI-JM-MiniMax-API" in ComfyUI Manager and restart. Dependencies are just requests and Pillow, nothing runs locally, and the only real requirement is a MiniMax API key from their open platform.

    CategoryJM-MiniMax-API/Speech

    Inputs (4)

    NameTypeDefaultDescription
    api_keySTRING
    promptSTRING讲述悬疑故事的播音员,声音低沉富有磁性,语速时快时慢,营造紧张神秘的氛围。
    preview_textSTRING夜深了,古屋里只有他一人。窗外传来若有若无的脚步声,他屏住呼吸,慢慢地,慢慢地,走向那扇吱呀作响的门……
    custom_voice_idoptSTRING

    Outputs (2)

    NameTypeDescription
    voice_idSTRING
    trial_audioSTRING