A voice-over that misses is not a sound problem. It is a picture problem — a word arrives while the frame it belonged to has already gone. That means you can see the fault on a timeline without hearing anything, which is how every number below was taken.
The beat
The subject was generated on the AI video generator: five seconds, locked-off camera, a cat on a kitchen table that reaches out a paw and pushes a mug over the edge. One clear event, at one findable moment.
Frame-to-frame difference across all 121 frames peaks at frame 86. The mug leaves the table at 3.54 s. Everything after that is an attempt to put the last word there.
Take 1: the line runs past it
The first line was twelve words, typed as a text layer and spoken by one of the stock character voices.
Take 1. I considered every option available to me and this is the best
The speech runs from zero to 3.863 s. The mug goes at 3.54 s. The last word finishes 0.32 s after the thing it was supposed to comment on, which is long enough to read as a mistake rather than as timing.
Twelve words in 3.863 s is 3.11 words per second, which sits inside the usual advice of three to four words per second. The advice is not wrong. It is just not precise enough to hit a beat 3.54 s into a five-second clip.
Take 2: budgeting by words overshoots
If the voice runs at 3.11 words per second and the beat is at 3.54 s, the arithmetic says eleven words. So take 2 was eleven words, ending on the word that matters.
Take 2. I have weighed every option and I am going with gravity
That came back at 3.059 s — 0.48 s early. The correction overshot by more than the original error.
The reason is the unit. Take 1 held nineteen syllables in twelve words; take 2 held sixteen in eleven. Per word, take 2 is shorter, so a budget built from take 1's words-per-second buys less time than it promises.
Syllables are steadier, and still not steady enough
In syllables the two takes are closer: 19 in 3.863 s is 4.92 a second, 16 in 3.059 s is 5.23. So take 3 was budgeted in syllables — 3.54 s at about five a second is around eighteen.
Take 3. I have thought about this carefully and I am going with gravity
Eighteen syllables came back at 3.778 s, 0.24 s late. Closer than take 1, closer than take 2, still not on it.
Across the three, words per second range from 3.11 to 3.60 and syllables per second from 4.76 to 5.23 — a 16 percent spread against a 10 percent one. Syllables are the better unit of the two and neither is good enough to land a quarter-second target by arithmetic.
The same line is not the same length twice
Take 4 regenerated take 2's line — same words, same voice, same settings — and it came back a different length.
The same eleven words through the same voice: 3.059 s the first time, 2.842 s the second. Seven percent apart, which is larger than the error any of the three budgets was trying to correct.
That closes the arithmetic route. If the same input does not give the same duration, no rule converting text length into seconds can place a word on a frame. The length has to be measured after it exists.
What actually lands it
Which leaves the obvious move, and it is the one take 2 made available without anyone noticing. Take 2's line was short — it ended 0.48 s before the beat. A line that ends early can be slid later until it ends where you want. A line that ends late cannot be slid earlier, because it already starts at zero.
So take 4 took the regenerated short line and dragged the speech clip along the timeline until its end sat under the beat.
The finished piece. The last word ends at 3.401 s and the mug goes at 3.54 s — 0.14 s apart, the closest of the four, from a drag that cost nothing.
The original audio on the clip is muted here, because a voice-over replaces it rather than sitting under it. If you want the room back, bring it in as a separate quiet layer so you can set its level independently.
The voices, and what they cost
In the web-editor session used for this test, text to speech appeared in the right-hand panel when a text layer is selected, and the voice list is filtered by a Category dropdown: Trending, TikTok, Female, Male, Character, Narration, Memesong, then a run of languages including English, Japanese, Korean, Chinese, Russian, Vietnamese, Thai, Indonesian, Portuguese, Arabic, Spanish, Turkish and French. The Character group is where the comic voices are — the one used throughout here was a sportscaster voice from that list.
In that session, each generation announced that credits would be consumed, and each one cost 1 credit. Four generations, four credits. Changing the text does not regenerate the speech on its own — the existing speech clip stays as it was until you delete it and apply a voice again, which is its own small trap when you are iterating on wording.
A Custom tab for voice cloning was visible in the session used for this test. Availability and credit requirements may vary by version, region, and account.
What to write instead
Where this stops
One voice, one line, four takes, a five-second clip. The seven percent difference between two generations of one line is a single pair — enough to stop trusting a computed duration, not enough to put a number on how much it varies in general. A longer line, a different voice or a different language could all sit somewhere else.
The drag itself has a floor too. The timeline here ran at roughly 86 pixels per second at the zoom used, so a drag lands within a few hundredths of a second at best. That was enough for a 0.14 s result and it would not be enough for something that has to sit on an exact frame.
Two fixes, two prices
Rewriting the line and regenerating it costs a credit and gives back a duration you cannot predict. Dragging the clip you already have costs nothing and gives back exactly the offset you dialed in. Three of the four takes here spent a credit to move the ending by a quarter of a second, and the fourth moved it further than any of them by dragging. When the line lands wrong, look at the timeline before looking at the script.
Configuration and cost. The clip: Video, Seedance 2.0 Mini, 16:9, 5s, 720p, Standard — the panel declared 25 credits. Text to speech: one of the Character voices on a selected text layer — the panel declared that credits would be consumed and the balance moved by 1 credit per generation, four generations. Total 29 credits, read from the send panel and the balance on each step, 2026-09-20. Editor work and export produced no charge. Credit costs are tied to that configuration on that date; other models, resolutions or durations are priced differently.
Files.clip.mp4 (the generated source, 1280×720, 24 fps, 121 frames, 5.04 s); the four takes as exported, take1-late.mp4, take2-early.mp4, take3-late.mp4 and take4-slid.mp4, each 1920×1080 at 30 fps; the finished piece is shown on this page as take4-slid.gif.
The lines are reproduced exactly as they were typed into the text layer.
How the numbers were taken. The beat was located by frame-to-frame mean absolute difference over all 121 frames of the source, which peaks at frame 86; at 24 fps that frame begins at 3.54 s, and the frame itself is printed above so the reading can be checked by eye. Speech boundaries come from silencedetect at −38 dB with a 0.12 s minimum, run on each exported file; the source audio was muted in the project so that the only sound in those exports is the generated speech. Syllable counts were done by hand on the four lines. The waveforms in the figures are 10 ms peak envelopes of the same exported audio, drawn on a common time axis.