Reactor Vidu S2-Avatar Segment
A photo that talks, and answers you back
- image
- references
- sequence
- REACTOR_SEQUENCE
Give this node a photo of a person, a persona and a voice, and you get a character you talk to - out loud, through your microphone, in a browser window. In render mode, each segment is one beat of that conversation.
What it's for
Vidu S2-Avatar is the conversational model in this pack, and it's a genuinely different thing from the talking-head tooling you'd build locally. Locally, "photo speaks a script" means LTX-2 lipsync or InfiniteTalk or Wan-S2V - a pipeline where you supply the audio and the model moves the mouth. Here the model answers. You say something, it replies, in a voice you picked, wearing an outfit you handed it from a reference image. That's why this is the one node in the pack where a microphone socket appears.
Two ways to use it. Live, in Reactor Realtime, where you actually talk and it actually answers. Or here, in a sequence, where each segment is a scripted exchange: the segment's prompt is what you say, frames is how long that beat runs, and the character's replies fill in the rest.
How it works
The first segment sets everything the character is: the reference image it's built from (required - there's no text-only avatar), the persona describing who they are, the voice, and a greeting for the opener. Later segments only contribute their own prompt and length; their persona and voice fields are ignored, exactly like every other settings-carrying node in this pack.
Only the short side of your photo is fitted to the model's frame, so a portrait photo gives you a portrait video and a landscape photo a landscape one. Output runs at 25fps and frames are counted one at a time - no chunk snapping to worry about, so a segment is as long as you asked for.
References - objects to hold, garments to wear, backgrounds to stand in - come from Reactor Vidu S2-Avatar Reference nodes wired into the references sockets. Up to three per segment.
The inputs that matter
- prompt - your line in this beat of the conversation.
- frames - default 120, step 1.
- image (optional in the schema, required in practice) - the person. First segment.
- persona - who the character is. First segment.
- voice - 19 options out of the box, default
Jennifer, from Jennifer and Katerina through to Li. First segment. - greeting - the opener, set with persona and voice on the first segment.
- references - autogrowing sockets for Reactor Vidu S2-Avatar Reference nodes.
- sequence - the earlier segments; empty on the first.
- REACTOR_SEQUENCE (output) - onward, then Reactor Render.
Install
Manager search comfyui-reactor-api ("Reactor API: Realtime Video"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/reactor-team/comfyui-reactor-api
pip install -r comfyui-reactor-api/requirements.txt
reactor-sdk>=1.6 is the whole dependency list; nothing to download. Add REACTOR_API_KEY in ComfyUI's environment or under [API] in config.ini and restart. Then copy example_inputs/ into ComfyUI's input folder - the bundled avatar template needs its photos.
Where people get burned
Wear headphones. The pack's own tip, and it's the failure everybody hits once: the character's voice comes out of your speakers, your microphone hears it, and now you're in a feedback argument with your own avatar.
Voice, persona and greeting come from segment one. Change them later in the chain and nothing happens.
References expire. A reference goes away at the first segment that doesn't have it connected, so wire it into every segment it should last for. People connect it once and then wonder why the character dropped the prop halfway through.
A live take needs a browser tab. Recording from a headless queue fails with "Open this workflow in a ComfyUI browser tab to record a live take."
One session at a time. MAX_CONCURRENT defaults to 1 in config.ini, so a second run waits and reports "Waiting for another Reactor session to finish". That's a queue, not a bug.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| frames | INT | 1201–100000 | How many frames of video this segment plays. It starts where the segment before it in the sequence ends. |
| imageopt | IMAGE | Reference image, read on the first segment. | |
| personaopt | STRING | Read on the first segment. | |
| voiceopt | COMBO | Jennifer | Read on the first segment. |
| greetingopt | STRING | Read on the first segment. | |
| referencesopt | COMFY_AUTOGROW_V3 | — | |
| sequenceopt | REACTOR_SEQUENCE | The segments before this one. Leave it empty on the first segment. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| REACTOR_SEQUENCE | REACTOR_SEQUENCE | — |