Say you need a talking head for a product demo, a docs walkthrough, or a short course module. You don't want to be on camera for every update, and re-recording a whole video because one API endpoint got renamed is painful.
The usual workaround is a pipeline: write a script, run it through text-to-speech, then run a lip-sync model over a photo or a short clip. It works. It also tends to look like exactly what it is.
There's a different approach worth knowing about: audio-driven human animation, where one model takes a reference image and an audio track and generates the whole performance from the audio. OmniHuman 2.0, ByteDance's model in this category, is the one I'll use as the example here.
Disclosure: I run omnihuman2.org, an independent web app for generating OmniHuman 2.0 videos. It is not affiliated with ByteDance or BytePlus. This post is mostly about inputs and workflow, which apply whatever tool you use.
The stitched pipeline, and where the seams show
A typical TTS + lip-sync setup looks like this:
- Script goes into a TTS engine and comes out as audio.
- A lip-sync model edits the mouth region of a still image or a base video so it matches that audio.
- Everything else, the eyes, eyebrows, head, shoulders and hands, is either frozen or a loop from the base clip.
That's cheap, fast, and predictable, and for a lot of use cases it's fine. The problem is that people don't talk with only their mouths. When you stress a word, your eyebrows move, your head tips, sometimes your hand comes up. In a stitched pipeline the mouth hits the stress and the rest of the face carries on as if nothing happened. Viewers may not be able to name what's wrong, but they notice.
What "audio-driven" changes
In an audio-driven model, the audio is the signal for the whole figure, not just the lips. With OmniHuman 2.0 the inputs are:
- One reference image of the person or character.
- One audio track, speech or singing.
- An optional text prompt to steer motion, scene, and camera.
The output is a 720p video with lip sync, facial expressions, gestures, and body movement generated together from that audio.
| TTS + lip-sync | Audio-driven animation | |
|---|---|---|
| What moves | Mostly the mouth | Mouth, face, gestures, body |
| Inputs | Image or base video + audio | One image + audio (+ optional prompt) |
| Where your effort goes | Matching a base clip, hiding loops | Preparing the image, audio, and prompt |
| Fine control | Frame-level, if you edit the base video | Steered through inputs and prompt |
Two things worth pointing out. First, you can still use TTS. The audio-driven model doesn't care whether a human or a speech engine produced the track, so the only part that changes is what happens after the audio exists. Second, you're trading some control for coherence. You won't keyframe a specific hand gesture at 0:14. You shape the result through what you feed in.
So most of the practical work moves into input prep.
Preparing the reference image
The image sets the identity, framing, and the starting pose for everything that follows.
- Frame for the shot you want. If you only need a head-and-shoulders explainer, a head-and-shoulders photo is fine. If you want hand gestures, give the model an image where the upper body and hands are actually in the frame.
- Keep the face clear. Even lighting, nothing covering the mouth (mics, hands, hair across the lips), and the face not turned too far from the camera.
- Pick a neutral-ish starting expression. A huge grin or a wide-open mouth is a strange place to start talking from.
- Use a decent source resolution. The output is 720p, so you don't need a 50MP portrait, but a blurry, heavily compressed thumbnail gives the model less to work with.
- Reuse the same image across a series. If you're making ten docs videos, one reference image keeps the presenter looking consistent.
And the non-technical rule: only use images you have the rights to. If it's a real person, get their consent.
Preparing the audio
Since the audio drives the motion, it's worth more care than you'd give a voice memo.
Length limits. OmniHuman 2.0 works with audio from 4 seconds to 5 minutes. On omnihuman2.org, uploads between 1.5 and 300 seconds are accepted, and anything shorter than 4 seconds is billed as 4.
Clean it up:
- Remove background music under speech for talking-head videos. Add music back in your editor afterward. (Singing performances are the obvious exception.)
- Cut room echo and noise as much as you can.
- Normalize the level so it isn't whisper-quiet in one part and clipping in another.
- Trim silence at the start and end. You're billed per second, and dead air also means an avatar standing there doing nothing.
Mind the delivery. A flat, monotone read gives the model very little to work with when it decides how the face and body should move. If you're using TTS, pick a voice and settings with some natural variation in pace and emphasis. If you're recording yourself, read it the way you'd explain it to a colleague, not the way you'd read a legal disclaimer.
Split long scripts. Even though the model accepts up to 5 minutes, one clip per section is easier to work with. If section three needs a fix, you regenerate 40 seconds instead of the whole thing.
Writing the prompt
The prompt is optional. Use it for what the audio can't express: the setting, the camera, and the general motion style.
Some example prompts (illustrations, not tested recipes):
Static medium shot, plain studio background, calm presenter, small hand gestures.
Slow push-in, warm indoor lighting, relaxed and friendly, occasional nods.
A few rules of thumb:
- Keep it short. One camera instruction, one scene description, one note on motion style.
- Don't fight the audio. If the track is a calm, slow read, prompting "energetic, animated gestures" asks the model to reconcile two signals that disagree.
- Keep it fixed across a series. Same image, same prompt, different audio. That's the easiest way to make a set of videos feel like one presenter.
A workflow for docs and demo explainers
Here's a workflow that fits technical content well:
- Write the script per section, roughly 30 to 90 seconds each.
- Produce the audio for each section, recorded or TTS, then clean and trim it.
- Choose one reference image and one base prompt for the whole series.
- Generate each section separately with the same image and prompt.
- Composite in your editor. The common layout is the avatar in a corner over a screen recording, or cutting between the avatar and full-screen code.
- Add captions and a visible note that the presenter is AI-generated.
When the product changes, you rewrite one section, regenerate that one clip, and swap it in. That's where this approach saves the most time compared with re-shooting.
Doing the cost math up front
omnihuman2.org uses credits: 2.5 credits per billed second, available through subscriptions or credit packs. Some quick arithmetic:
- A 60-second section is 150 credits.
- A 5-minute clip is 750 credits.
- A 2-second clip is billed as 4 seconds, so 10 credits.
Trimming silence and splitting by section aren't just about quality. They also keep you from paying to regenerate parts that were already fine.
Consent, rights, and labeling
This part isn't optional, especially for content that goes out under a company name.
- Only use images and audio you have the right to use.
- If you're animating a real person, get their consent first. That includes coworkers and the founder who "won't mind."
- Don't make anyone appear to say or endorse something they didn't.
- Label the video as AI-generated where it's appropriate. A line in the description or a small on-screen note is enough for most explainers.
Where it's not the right tool
To be fair about the limits:
- You need more than 720p. You'll need to upscale or use a different route.
- You need a specific gesture at a specific frame. Real recording or traditional animation is still more predictable.
- Your audience expects a real person. For a founder update or a personal apology, an avatar sends the wrong signal no matter how good it looks.
For recurring explainers, onboarding clips, course modules, and character narration, it's a much better fit than a mouth pasted onto a still photo.
If you want to try it with your own image and a short audio clip, omnihuman2.org is where I'd start.
What's in your current pipeline for explainer videos? Recording yourself, TTS + lip-sync, or something else? I'd like to hear what's breaking for people.
Top comments (0)