OmniHuman 1.5 (BudgetPixel)
Make a still photo speak, with actual body motion
- image
- audio
- video
OmniHuman is the lip-sync node that goes beyond lips. BytePlus's OmniHuman 1.5 takes one image of a person - or a character, or a pet - and animates them to speak your audio with synchronized lips, facial expression and body motion. It's not a talking-head-with-frozen-shoulders job; the whole person moves. That's the difference between this and the pack's P-Video Avatar node, and it's why OmniHuman is the one to reach for when the performance matters.
It's a hosted API node, billed by the second of input audio at 135 credits per second, rounded up to whole seconds - so a 12.4-second clip bills as 13 seconds. It's the most expensive per-second rate in the pack, which makes it emphatically a "final render" tool rather than an iteration tool. The heavy lifting happens server-side; you just feed it an image and an audio track and get back a core VIDEO value.
The inputs
image(required) - the subject: a human portrait/face, character, or pet. jpg/png/webp, as a normalIMAGEconnection.audio(required) - the speech to lip-sync, mp3 or wav, up to 60 seconds and 5 MB. A coreAUDIOconnection.output_resolution- 720 or 1080, and the tooltip is refreshingly honest: same price for both. So take 1080.prompt- optional text to guide the animation style or actions. Worth using; it's how you get more than a static talking head.
Output is a single video socket - wire it to Save Video.
The billing math, spelled out
This is where people get stung, because the price is tied to the audio, not the output. A 60-second clip is 60 seconds × 135 credits = 8,100 credits. That's a big number, and it's entirely determined by the length of your audio track. Shorten the audio and the bill shrinks linearly - the inverse of the video nodes, where length_seconds controls cost. Before you commit, run the BudgetPixel Cost Estimate node with your actual audio duration. Also note the rounding: a 30.1-second clip bills as 31 seconds, so trimming just under a whole-second boundary actually saves you a full second of credits.
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 clean.
Standard pack caveats: a 2025+ ComfyUI for the VIDEO type, and interrupting a run abandons the local wait but the server-side job keeps going - and on this node, keeps billing per second. Also, quality tracks with the input: a clear, front-facing portrait works dramatically better than a profile or a busy background. Garbage in, expensive garbage out.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | The subject to animate — a human face/portrait, character, or pet. 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 60 seconds, max 5 MB). A public audio URL, a data URI, raw base64, or an uploaded-file URL from POST /v1/uploads. | |
| output_resolutionopt | COMBO | 1080 | Output resolution (same price for both). |
| promptopt | STRING | Optional text prompt to guide the animation style or actions. | |
| force_rerunopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |