P-Video Avatar (BudgetPixel)
A talking head from one photo and a voice clip
- image
- audio
- video
P-Video Avatar is the "give me a talking head" node: one image of a person plus a speech clip, and out comes a video of them speaking it with synced lips. It's the cheaper, simpler member of the pack's lip-sync pair - next to OmniHuman 1.5 it's less ambitious (no full-body performance, just the avatar talking) but also a fraction of the price: 40 credits per second at 720p, 60 at 1080p, vs OmniHuman's 135. If you need a presenter, a spokesperson, or a character reading your script, this is the budget tool for it.
It's a hosted API node like the rest of the pack. Image and audio go to the API, the avatar pipeline renders server-side, and the video comes back as a core VIDEO value. Billing is per second of input audio, rounded up to whole seconds - a 12.4-second clip at 1080p bills as 13 × 60 = 780 credits - so the length of your speech is the entire cost story.
The inputs
image(required) - the avatar. A person facing the camera works best, per the tooltip; jpg/png/webp.audio(required) - the speech to lip-sync, mp3 or wav, up to 30 seconds and 5 MB.resolution- 720p or 1080p, which sets the per-second price (40 vs 60). The output quality difference is real but for social-loop content 720p is a fine way to halve the bill.video_prompt- optional visual prompt describing how the person should appear or behave while speaking. Use it for delivery direction - "calm, looking slightly to the side" - rather than leaving the model to default.
Output is video into Save Video.
The honest comparison with OmniHuman
Both take an image and audio and return a talking video. OmniHuman 1.5 animates the whole body with expression and motion, takes up to 60 seconds of audio, and costs 135 credits/second. P-Video Avatar is a head-and-shoulders avatar, caps at 30 seconds, and costs a third as much. For a podcast-style talking head, product explainer, or social avatar, the P-Video version is usually the right call - the full-body motion is a luxury you're paying triple for. For a character performance that has to move, spring for OmniHuman.
Either way, remember the pack-wide rule: hitting Stop abandons the local wait but the server-side render keeps running and keeps billing per second. On a node priced by audio length, the bill is set the moment you hit Run - estimate it first with the Cost Estimate node if you're close to the 30-second cap.
Install and issues
Install via ComfyUI Manager (search "BudgetPixel") or:
cd ComfyUI/custom_nodes
git clone https://github.com/budgetpixel-ai/comfyui-budgetpixel.git
pip install -r comfyui-budgetpixel/requirements.txt
Restart, find it under Add Node → BudgetPixel → Lip Sync, and set your API key via BUDGETPIXEL_API_KEY or a budgetpixel.json file - no key widget, so shared workflows stay safe to share.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | The avatar image (a person facing the camera works best). A public image URL, a data URI, raw base64, or an uploaded-file URL from POST /v1/uploads. jpg/png/webp. | |
| audio | AUDIO | The speech/audio to lip-sync (mp3/wav, up to 30 seconds, max 5 MB). A public audio URL, a data URI, raw base64, or an uploaded-file URL from POST /v1/uploads. | |
| resolutionopt | COMBO | 720p | Output resolution — sets the per-second price (720p = 40, 1080p = 60 credits/second). |
| video_promptopt | STRING | Optional visual prompt describing how the person should appear or behave while speaking. | |
| force_rerunopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |