A voice that survives the cut
Faces get all the attention in AI video, but the thing that actually breaks a series is sound. Your captain is a weathered baritone in scene one and a bright thirty-year-old in scene four, and no amount of visual consistency rescues it — the audience hears a different person. The fix isn't prompt craft. It's mechanical, and it comes with limits that no documentation states plainly.
Why the voice drifts
Every generation is independent. The model has no memory of the previous shot, so a described voice — "a gravelly man in his fifties" — is re-invented from scratch each time, and that description has thousands of legitimate readings. You are not asking for the same voice; you are asking for a voice from the same category, and getting one.
The only thing that pins a voice down is the voice itself, supplied as a reference on every single request. Send the same few seconds of audio with each render and the model copies the timbre instead of guessing at it.
The limits nobody writes down
We measured these against the live API, because the published documentation doesn't state them in a usable form.
| Constraint | Value | Consequence |
|---|---|---|
| Total audio per request | ≈15s on the 2.0 family, ≈30s on 2.5 | The cap is on the sum of all audio references, not per clip |
| Relation to video length | None | A 5-second render has the same audio budget as a 15-second one |
| Clip length | 2s minimum, 15 MB maximum | Very short samples are refused outright |
| Formats | MP3 and WAV only | A voice note recorded in a messenger (OGG) has to be converted |
| Audio references per request | 3 on the 2.0 family, 10 on 2.5 | Ensemble scenes need 2.5, and even there the total-length cap binds first |
The first row is the one that bites. Because the ceiling applies to the total, two characters with ten-second samples can never appear in the same shot on a 2.0 model — the request is refused before anything renders. Keep samples short: four to six seconds carries a timbre perfectly well and leaves room for a second and third speaker.
audio/ as a file format name, not as a MIME type — and it knows exactly
two, mp3 and wav. So data:audio/mp3;base64,… works, while
audio/mpeg — the technically correct web MIME type for an MP3, and the one every library
will hand you — is rejected with Invalid base64 audio_url. The error blames your encoding,
which is fine. Your encoding is not the problem. This one cost us an afternoon.
What makes a good sample
The sample is not a demo reel; it is the specification for every future scene. Everything in it propagates.
- One voice, nothing else. No music, no effects, no room tone, no second speaker. Whatever shares the clip gets copied into scenes where you never asked for it.
- Ordinary delivery. Record the register you want across the series, not a dramatic peak. A shouted sample makes a character who always sounds strained.
- Four to six seconds. Enough for timbre, short enough to leave room for other speakers under the total cap.
- If you generate it, say so explicitly. Text-to-speech models are perfectly happy to produce a full soundscape with music underneath. The instruction has to spell out one speaker, no music, no effects, no background — otherwise you have just made an orchestra a permanent member of your cast.
Generating a sample is cheap — roughly $0.002 per second of audio, so a four-second take runs about eight tenths of a cent. Iterating on it a dozen times costs less than one video render, which is the right ratio: the sample outlives every shot it appears in.
How Longtake handles it
The mechanism above is wired in rather than left to discipline. A character owns a portrait and a voice
sample; writing @captain in a prompt attaches both, and the studio adds an explicit
instruction tying the character's image to their audio reference so the model doesn't have to infer the
pairing. The composed prompt is shown to you exactly as it was sent, so nothing about it is a black box.
The total-length ceiling is checked locally before the request goes out, so an over-budget shot fails
instantly with a readable message instead of an API error about r2v limits. Sample duration
is measured on upload and stored, which is what makes that check possible.
Questions
- Can I use a real actor's voice?
- Technically yes — a dry MP3 works regardless of origin. Whether you may is a rights question, not a technical one: get the performer's consent in writing, the same as you would for any recording you intend to reuse indefinitely.
- Does the voice reference also control what the character says?
- No. The line is in the prompt; the sample supplies timbre and delivery style. Keep dialogue in quotation marks in the prompt text.
- Why is my two-character scene refused when each sample is fine alone?
- Because the limit is on the total. Two ten-second samples make twenty seconds, over the 2.0 ceiling. Shorten both, or move that shot to 2.5.
- Does a longer sample give a better match?
- Not in our experience, and it costs you the budget for other speakers. Four to six clean seconds beat twelve noisy ones.
Related
Measured in August 2026 against Seedance 2.0, 2.0 Fast and 2.5 through BytePlus ModelArk. Provider limits change; the reasoning outlives the numbers.