The clip is the conditioning
Here is the whole model in one sentence: every generation is conditioned on the reference clip you uploaded. There is no training step that averages anything away, and there is no abstract “voice” extracted from the recording. Whatever is in the clip, the synthesized speech inherits. That one fact derives every rule below, so you do not have to memorize any of them:- Room reverb in the clip clones the room. The voice sounds like it is always in that room.
- Background music clones a hum that follows the speaker into every sentence.
- A second voice in the background is a second voice the model may reach for.
- A clip recorded through a heavy codec clones the codec artifacts.
- A shouted clip clones a shouted voice, and it will shout your terms of service.
Only the first six seconds are used
Six seconds is not an arbitrary round number. The acoustic encoder that builds the voice prompt is quadratic in clip length, and a ten-second reference was enough to exhaust the memory on the serving card — which surfaced as a call that went silent rather than as an error. Six seconds also happens to be what cloning wants. Two things follow, and both change what you should upload:- A longer take is not a better clone. Cut the best six seconds out of a long recording rather than uploading the whole session. Uploading two minutes and hoping the model picks the good part gets you the first six seconds of it, whatever they contain.
- Put the usable speech at the start. A clip that opens with two seconds of breath and room tone has spent a third of its budget before the voice arrives.
ready, and it clones badly. Aim for a connected sentence.
Two shipped surfaces still say three to ten seconds: the SDK method’s own
summary, and the message
POST /v1/voices returns when an upload is over the
size cap — “A reference clip only needs 3-10 seconds of clean speech”. Six is
the number the pipeline enforces. Anything above it is stored and ignored.What a good clip looks like
Uploads are capped at 10 MB and must carry an
audio/* content type. At these
lengths that ceiling is generous: if you are anywhere near it, you are uploading
far more audio than the model will use.
Match the clip to the job. The clip sets register as well as timbre. If the
voice will read support answers, record it reading something like a support
answer — not a dramatic performance, and not a single word.
The two failures that look like a bad model
The clip transcribed badly
The reference transcript is not optional and it is not yours to supply. The platform transcribes the trimmed clip itself, because the synthesis model concatenates that transcript with your input and crops by clip duration — the words have to be the words in the audio the encoder sees. Supplyingref_text
on the upload changes nothing; it is replaced.
So the transcript is only as good as the recording. A noisy clip transcribes
badly, the bad transcript conditions the voice, and the clone comes out subtly
wrong in a way retrying cannot fix, because retrying re-derives the same bad
transcript from the same audio. A clip that transcribes to nothing does not come
out wrong at all — it fails, with status: "failed" and the reason in error.
The fix is always the recording: less room, closer mic, a clearer read.
The voice is right but the room is wrong
The other one is quieter. The clone sounds like the person, and every sentence it speaks sits in the space the clip was recorded in — a slight hall, a hard desk, a laptop microphone’s thin midrange. It reads as “the model sounds artificial” when it is really “the model reproduced your kitchen.” You can hear this in one listen if you know to check for it. You cannot fix it after the fact.Audition before you ship
POST /v1/voices/{voice_id}/preview synthesizes one fixed sentence. You do not
choose the text, and that is the feature: two voices previewed on the same
sentence are comparable, where two voices reading their own best lines are not.
Listen for the things that come from the clip rather than from the model:
- Does it sound like it is in a room you did not intend?
- Does the energy match what you want it saying at minute nine of a call?
- Does it hold across a long sentence, or thin out at the end?
If it sounds wrong, re-record
Cloning is deterministic given the clip. Uploading the same audio again produces the same voice, so a retry is worth something only if you changed the input — a different take, a tighter cut, the noise gone, the good part moved to the front. The fastest loop is to cut three candidate clips from one recording session, clone all three, preview them side by side, keep one and delete the rest. Deleting a voice erases the reference clip from storage before it removes the row, so a rejected candidate leaves no voiceprint behind. Each clone costs 100 credits, and the free plan includes exactly one, so run this loop on an account with credits rather than discovering the limit on candidate two.Consent is not a formality
A reference clip is a recording of a real person, which in several jurisdictions makes it biometric data and a protected likeness.consent_attested=true is
required and the timestamp is stored on the voice — but an attestation records
your claim. Nothing checks who is speaking on the clip.
Two things to plan around:
- Keep your own evidence of the speaker’s permission. It has to outlive the clip.
- A clone is erased three years after its last use, and that period is not configurable on any deployment. Using a voice resets the clock, so a voice in production never expires out from under you — but one you cloned once and shelved will go, along with its reference audio.
Next
Voices
The API: clone, preview, rename, delete.
Clone a voice
The whole loop, end to end.