Gemini Omni Audio
Mint a voice, get an ID, then go build the video
- video
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
This one is a factory, not a generator. It creates a reusable voice on KIE's Gemini Omni API - a named asset with a character description - and the useful thing it hands back is an identifier you paste into the later Omni steps. If you were expecting a text-to-speech node you can wire straight into an audio player, read the next paragraph before you spend credits.
What it actually does
The payload is a voice definition, not a script. You pick a preset voice ID, name the voice, and describe the character of it: timbre, style, pace, emotion. You can also give one short example line. KIE's docs for this endpoint treat that as the input surface - the output is the created voice asset plus a task ID, and the voice's ID is what the Omni character and video endpoints consume later.
The card's own tooltips make the character of the thing plain: the voice description allows an enormous text budget, the example dialogue is capped short, and the name is capped at a couple hundred characters. This is a casting sheet, not a recording.
One quirk to know up front. The card lives in the Video family and its media output socket is a VIDEO. That's the pack deriving the node's media type from the API family it came from, not a claim that this endpoint returns footage. Do the obvious thing: run it, then look at the url and raw_json outputs to see what KIE actually returned before you wire the media socket into anything downstream.
Inputs
- audio_id - the preset voice enum, default
achernar. The tooltip lists the cast:achird(male, friendly, mid pitch),algenib(male, raspy, low),algieba(male, easygoing),aoede(female, brisk), and more like it. This is your starting timbre. - name - what the voice is called, e.g.
achernar Narrator. Max 210 characters. - voice_description - the real control. Describe timbre, style, speaking rate, emotion. The field accepts up to 20,000 characters, so be specific; this is what makes the voice yours instead of the preset.
- example_dialogue - a short sample line, capped at 120 characters. "Hello, I am Adam" is the documented shape.
- timeout_seconds - how long the node waits for the job, default 1200 seconds, adjustable between 30 and 7200.
Outputs
video, url, all_urls_json, task_id, raw_json, credits_consumed, credits_left - the pack's standard media signature. Practically: task_id and the identifier inside raw_json are what you carry forward into the character/video nodes, all_urls_json preserves every URL the response reported in case the primary one isn't the asset you want, and the two credit floats plus the on-node credits receipt tell you what the cast cost.
Install
ComfyUI Manager, searching the pack title, or:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt
Restart afterwards. Requirements are requests, Pillow, numpy, PyYAML - no local models, no GPU work, everything on KIE's side, paid per call.
Key: Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. Validated before it's saved; masked fingerprint and CONNECTED status after. KIE_API_KEY in the environment takes priority for headless installs.
Gotchas
Treating the media socket as the point. If you're chasing a playable waveform, you're on the wrong node - this is an ID-minting step. Route the identifier forward instead.
Vague voice descriptions get preset voices back. The large text budget is there for a reason; "calm male voice" is roughly the default.
Reruns cost. Nothing here is cached, and a create call is a paid call. Get the description right in the field before you hit queue five times.
Cards come from the live catalogue. The pack builds its node library from KIE's API documentation on startup and re-checks roughly daily, so this endpoint's fields can gain or lose options between ComfyUI restarts.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_id | STRING | achernar | Enum voice ID, used to select a preset voice character. achernar - female, soft, high pitch achird - male, friendly, mid pitch algenib - male, raspy, low pitch algieba - male, easygoing, mid-low pitch alnilam - male, steady, mid-low pitch aoede - female, brisk, mid pitch autonoe - female, bright, mid pitch callirrhoe - female, easygoing, mid pitch charon - male, intellectual, low pitch despina - female, smooth, mid pitch enceladus - male, breathy, low pitch erinome - female, clear, mid pitch fenrir - male, lively, younger pitch gacrux - female, mature, mid pitch iapetus - male, clear, mid-low pitch kore - female, capable, mid pitch laomedeia - female, cheerful, mid-high pitch leda - female, young, mid-high pitch orus - male, steady, mid-low pitch puck - male, cheerful, mid pitch pulcherrima - genderless, forward, mid-high pitch rasalgethi - male, intellectual, mid pitch sadachbia - male, vivid, low pitch sadaltager - male, knowledgeable, mid pitch schedar - male, smooth, mid-low pitch sulafat - female, warm, mid pitch umbriel - male, smooth, low pitch vindemiatrix - female, gentle, mid pitch zephyr - female, bright, mid-high pitch zubenelgenubi - male, casual, mid-low pitch |
| name | STRING | achernar Narrator | Voice name. Maximum length: `210` characters. |
| voice_descriptionopt | STRING | A calm, clear, and friendly male voice suitable for tech explainers and daily conversation. | Voice characteristic description used to define timbre, style, speaking rate, emotion, and other traits. Maximum length: `20000` characters. |
| example_dialogueopt | STRING | Hello, I am achernar | Example dialogue, such as "Hello, I am Adam". Maximum length: `120` characters. |
| timeout_secondsopt | INT | 120030–7200 | — |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |