Give it recordings of one person speaking and their consent; get a voice_id that
elevenlabs-tts-v4 speaks any text in, for every later take. Use it when the person
wants their own voice (or one they have the right to) saying lines they never recorded:
a founder presenting their own pitch deck, a creator narrating a guide. To pick a voice
from the library, use guide-cast-a-voice; when the person has already recorded every
line, use the recordings themselves (guide-voice-a-script).
Inputs
- Consent, asked first, in chat. The person confirms they have the right to clone
this voice: it's theirs, or its owner agreed. ElevenLabs' terms require it, and the
call refuses without
consent: true. Never clone a voice from a video or a call the owner didn't give you for this. - Recordings of that one speaker: about 30 s of them alone on the best microphone they have, varying pitch and intonation across it (excited, calm, a question, an emphatic point). A flat read makes a flat clone, and the mic and that range matter far more than length. One or more files, at most 25; no music, no other voices, little room echo. A podcast or a webinar recording works once the other voices are cut out.
- A
namefor the voice (what it's called in the account) and, optionally, adescription.
Prepare the samples
Convert each recording to a mono WAV and cut out anything that isn't this speaker (intros with music, the other person's questions):
exec ffmpeg -i <recording> -vn -ac 1 -ar 44100 -c:a pcm_s16le voices/<name>/sample_01.wav
Then check them all at once. Write references/check_samples.md's script into the
job's scripts/ as check_samples.py, unchanged:
exec("python", ["scripts/check_samples.py", "voices/<name>/sample_01.wav", "voices/<name>/sample_02.wav"], cwd="<job>")
Listen to a few seconds of each file too: the script counts speech, not whose speech
it is. Background music or a second voice under the speaker: separate the voice first
(elevenlabs-voice-isolation) or ask for a cleaner recording.
Run it
Call describe("elevenlabs/voices/add") before the first clone and use the field names
it gives. The request is the name, the sample files (local paths; run uploads them),
and the consent:
run("elevenlabs/voices/add",
{"name": "<Person> narrator", "files": ["voices/<name>/sample_01.wav", "voices/<name>/sample_02.wav"],
"description": "Warm, quick, American; for the product guide", "remove_background_noise": false,
"consent": true},
into="<job>/voices/<name>")
remove_background_noise: true asks ElevenLabs to clean the samples first; leave it
off for clean recordings.
What you get
voice.json with the new voice_id, its name, and requires_verification (true
means ElevenLabs wants the owner to verify the voice before it speaks; tell the
person). Record the voice id with the job's picks, and in <character>/voice.md as for
any cast voice (guide-cast-a-voice, step 8).
Tips and traps
- Where the clone lives decides what it costs. On Hypernatural's account the clone
is a flat fee (list price $1 at the time of writing), speaks for the person's team
only, a team holds a limited number at once, and a clone left unused for a month is
deleted: clone again from the same samples. On the person's own ElevenLabs key it
goes into their account, costs nothing per clone and takes one of their plan's voice
slots.
describegives the current price and limits. - The clone sounds like the samples: a flat read gives a flat clone, a laptop microphone a laptop voice. Ask for samples in the energy the video needs.
- Audition the clone before voicing the script: two or three sentences of the
script's copy (
elevenlabs-tts-v4), and say plainly where it doesn't sound like them. The person is the judge; a model can't tell whether a take "is the same voice" (guide-cast-a-voice, Avoid). - Never a voice the person doesn't own: a celebrity, a colleague who wasn't asked, a library voice's preview.
Check it
Transcribe the audition (whisper-cli-transcribe-with-word-times, Check it): every
word, no tag read aloud. Then the person listens to it against one of their own samples and
approves the clone before any script is voiced in it.


