Nodes/Reactor API: Realtime Video/Reactor Microphone Capture
ComfyUI Node

Reactor Microphone Capture

Picking the mic your avatar actually hears

By reactor-team·Created about a month ago·Updated about 11 hours ago· 7
Reactor Microphone Capture
  • microphone
  • REACTOR_MICROPHONE

Talking to an AI character out loud is the one thing in this pack that feels like the future and not like a render farm. Reactor Microphone Capture is the small node that decides which microphone it hears you through.

What it's for

The Reactor pack puts hosted real-time video models inside a ComfyUI graph. One of them is Vidu S2-Avatar: you give it a photo, it becomes a character you hold a conversation with, voiced out loud, in the browser window Reactor Realtime opens. The character's replies go through the main_audio track of the session; your speech goes up through a microphone track. This node picks that microphone.

That puts it in the same territory the KB files under the audio-driven-video bridge: audio in, a face moving in sync out. Locally you'd get there with InfiniteTalk, MultiTalk or Wan-S2V and a pile of dependencies. Here it's one socket and an API call, which is the honest trade - less control, zero install pain.

Only the avatar models take a microphone. A world model or a video generator has nothing to say to you, so the socket simply isn't there.

How it actually works

The node is a pass-through. It lists the microphones your browser exposes, you pick one, and it emits that choice as REACTOR_MICROPHONE. The actual audio capture happens in the Realtime window: the browser publishes a mic track into the session and the model answers you on the video and audio tracks coming back. Leave the socket empty and the browser's default microphone is used - which is what most people should do, since that's the same device Zoom and your browser already agree on.

Inputs and outputs

  • microphone - the device you talk through. Default is the browser's default microphone.
  • REACTOR_MICROPHONE (output) - wire it into the microphone socket on Reactor Realtime when the picked model is an avatar.

Both fields are browser-driven: the names come from the devices the browser can see, not from ComfyUI.

Install

No model files, no CUDA, no VRAM. Via ComfyUI Manager search comfyui-reactor-api, or by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/reactor-team/comfyui-reactor-api
pip install -r comfyui-reactor-api/requirements.txt

Copy config.ini.example to config.ini, set REACTOR_API_KEY under [API] (or export it in ComfyUI's environment - that takes priority), restart, and the nodes show up under Reactor. The examples read images from ComfyUI's input folder, so copy the repo's example_inputs/ there if you want them to load without complaining.

Where people get burned

Wear headphones. This is the pack author's own tip and it's the single most common way an avatar session turns into feedback: the character's voice comes out of your speakers, your microphone hears it, and it starts answering itself. Headphones fix it completely.

Mic permission is a browser thing. If the microphone list is empty or just says "default", the page hasn't been granted microphone access yet. Grant it, reload. getUserMedia needs a secure context, so you're fine on localhost and stuck on a bare LAN IP.

A live take needs a browser tab. Run it through the API or a headless queue and the node fails with "Open this workflow in a ComfyUI browser tab to record a live take."

One session at a time, by default. MAX_CONCURRENT under [Sessions] in config.ini defaults to 1, so a second Realtime run waits its turn and the node reports "Waiting for another Reactor session to finish". That's not a hang - it's a queue. Raise the limit and restart if you want parallel sessions.

Not the ReActor face-swap pack. "Reactor" in ComfyUI circles usually means gourieff's ReActor, a completely different project about face swapping. This one is reactor-team's, in the repo comfyui-reactor-api.

CategoryReactor

Inputs (1)

NameTypeDefaultDescription
microphoneREACTOR_MICROPHONE_DEVICEThe microphone to talk through. Default is the browser's default microphone.

Outputs (1)

NameTypeDescription
REACTOR_MICROPHONEREACTOR_MICROPHONE—