Pruna Video Avatar (Replicate)
Pruna Video Avatar — a photo, a script, and a talking head walks out
- image
- audio
- video_path
Pruna Video Avatar is the most complete "talking avatar from a still photo" node in Replicate Select, because it does the whole job itself. Feed it a headshot and it can synthesize the speech too - you give it a voice_script, pick one of 30 voices, and it generates the narration and the lip-synced video in one call. Or, if you already have an audio file, hand it that instead and it just animates the lips. Two modes, one node, no separate TTS step required.
That's the thing that sets it apart from VEED Fabric (which demands audio as an input) and from Sync (which needs an existing video). Pruna's avatar is the "here's a person, here's what they should say, go" option. The catch is it's the fiddliest node in the pack - fourteen inputs, and a couple of them (the negative-prompt system) are genuinely experimental.
How it works
Standard engine around prunaai/p-video-avatar. Your image goes up as PNG; if you provided audio, it goes up as WAV and drives the speech; otherwise the model synthesizes speech from voice_script + voice settings. Output MP4 lands in output/video/, and video_path comes back as a STRING.
The inputs that matter
- image (required) - the first frame / source face.
- audio - optional. If provided, it's used instead of voice_script and voice settings.
- voice_script - required when no audio is given: the exact words the avatar says.
- voice - 30 choices, default
Zephyr (Female). The full roster is in the dropdown. - voice_prompt - style instructions for how to speak the script (tone, pacing, accent, emotion). Default "Say the following." - the note that matters: these instructions are not spoken.
- voice_language - English (US) default, up to 10 language/accent targets.
- video_prompt - visual behavior while speaking; default "The person is talking." This is where you'd add "gesturing," "looking at the camera," etc.
- negative_prompt - empty by default, and the tooltip is explicit: disabled if empty. When you do fill it, the model recommends keyword lists like "subtitles, text, blurry, low quality, frames, watermark, scene change."
- strength_negative_prompt - 0–4, default 0.5, flagged as experimental; tune per video length.
- resolution - 720p (default) or 1080p.
- seed - set for reproducibility.
- disable_safety_filter - defaults to true here, which is unusual for this pack. Flip it on/off deliberately.
- disable_prompt_upsampling - when false (default), the model auto-enhances
video_prompt; enable to use it verbatim. - no_op - a health-check mode that returns status without running inference. Exactly what it sounds like.
Output: video_path, a STRING.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Pharma-Lobby/ComfyUI-Replicate-Select
Or ComfyUI Manager → Install Custom Nodes → "Replicate Select", restart. Dependency: replicate>=1.0.7. Token via environment variable:
export REPLICATE_API_TOKEN=r8_...
Where people get burned
- Audio vs. script mode is exclusive. Provide both and audio wins. Decide which you're driving before you wire it.
- The negative prompt is off until you fill it. "Disabled if empty" is the tooltip's own words - empty means the model ignores the whole system, not that it uses a default.
- Not a great input image, not a great avatar. Same rule as every still-image avatar: clean, front-facing, decent resolution or the result looks worse than the input deserved.
- 14 inputs is a trap for over-tuning. The defaults are sane. Change
video_promptandvoice_promptfirst; leave the negative-prompt strength experiments until a render actually disappoints you.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Input image (first frame). Supports jpg, jpeg, png, webp. | |
| resolutionopt | COMBO | 720p | Resolution of the video. |
| audioopt | AUDIO | Optional uploaded audio to drive avatar speech. If provided, this is used instead of voice_script and voice settings. | |
| voiceopt | COMBO | Zephyr (Female) | Voice to use when generating speech from voice_script. |
| voice_scriptopt | STRING | Exact words the avatar should say. Required when no audio file is uploaded. | |
| voice_promptopt | STRING | Say the following. | Optional style instructions for how to speak voice_script, such as tone, pacing, accent, or emotion. These instructions are not spoken. |
| voice_languageopt | COMBO | English (US) | Language/accent target for generated speech. |
| seedopt | INT | 0-2147483648–2147483647 | Random seed. Set for reproducible generation. |
| video_promptopt | STRING | The person is talking. | Optional visual prompt describing how the person should appear or behave while speaking. |
| negative_promptopt | STRING | Disabled if empty.Mention what you do NOT want in the video, e.g. "subtitles, text, blurry, low quality, frames, watermark, titles, scene change". We recommend using multiple keywords at once. | |
| strength_negative_promptopt | FLOAT | 0.500–4 | Strength of the Negative Prompt. Optimal value can differ for different video lengths (Experimental Feature) |
| disable_safety_filteropt | BOOLEAN | true | Disable safety filter for prompts and input image. When disabled, prompts are not checked for unsafe content before generation. |
| disable_prompt_upsamplingopt | BOOLEAN | false | When true, skip automatic enhancement of the visual video prompt and use video_prompt directly. |
| no_opopt | BOOLEAN | false | Health check mode - returns status without inference. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_path | STRING | — |