Enroll Voice Clones from Calls
A voice clone is a custom TTS voice your organization trains from real audio. The most common source is an enrollment call: a recorded call in your account where the speaker you want to clone gave their blessing to be recorded. You can also clone from an audio sample you host yourself, or — when there is no real person’s voice involved — design a fully synthetic voice from a text description. This guide covers the consent gates, how clones are priced, how to track a clone through its lifecycle, and how to mark synthesized output with a watermark. Open the working surface at Voice → Voice clones (/voice/voice-clones), or drive the same lifecycle over the API.
The endpoint paths below are relative. Send them against
https://api.orbit.devotel.io/api/v1.
Why enroll from a call
Use a phone-enrolled clone to hear exactly what your customers will hear before you roll a new voice into production:- QA a new IVR or agent voice. Check pronunciation, pacing, and tone of your brand voice against a script before it answers a single call.
- Audition agent voices end to end. Pair a clone with the AI agent rollout pipeline: roll the voice behind the same offline comparison, canary, and regression stages that gate prompt and model changes.
- Keep the brand voice consistent across IVR, outbound dialer, and agent surfaces by pointing them all at one trained clone.
1. Enrollment-call provenance (source_call_id)
Every clone records where its training audio came from in
source_call_id:
- A clone trained from a recorded call stores that call’s ID. The clone traces back to a specific recording — enough to answer “which call did this voice come from?” during a review.
- A clone trained from an uploaded sample, or designed from a text prompt, has no source call — it stores the sample URL or prompt as its provenance instead.
- A recorded enrollment call. Record the call with
record: trueat call creation (see Record a call), then use the call’s ID ascall_id. A short, clean enrollment recording — one speaker, minimal background noise, a minute or three of speech — trains a markedly better clone than a noisy hour. - Recording consent on that call. The source call must carry an
active recording-consent receipt (
consent_state='granted', not revoked). Without it, the create call is refused withVOICE_CLONE_CONSENT_REQUIRED— recording consent is the floor for the audio existing at all. Cloning is a separate consent surface on top of it. - A voice-owner attestation (below).
https://api.orbit.devotel.io/api/v1; the SDK sends the
full consent fields — pass the same attestation fields shown in the curl
example for enrollments that are not self-recorded.
Upload a sample instead
No recorded call yet? Host a short audio sample (picked from a voice-actor session or narrator recording) behind anhttps:// URL you control and
clone from it directly:
Design a synthetic voice instead
POST /voice/clones/design mints a brand-new synthetic voice from a text
prompt (for example, “a warm, mid-30s British woman with a calm,
professional tone”). There is no real person’s voice to consent to, so the
recording-consent and attestation gates do not apply — designed voices list
alongside your clones the same way.
2. Watermarking and consent posture
Cloning a real person’s voice implicates biometric-privacy law (BIPA in Illinois, CUBI in Texas, and the EU AI Act’s Article 50 transparency duty). Devotel Orbit gates every biometric clone on controls that live in your account, so the consent trail you build is yours:- Recording-consent receipt on the source call — active, not revoked, and no older than one year. Recollect consent before cloning from an old recording.
-
A voice-owner attestation you supply at create time. Either a
voice_owner_consent_evidence_url(anhttps://link to a consent record you store — a signed release, an envelope, an in-app form) or avoice_owner_consent_text(at least 50 characters, stored verbatim), plus:voice_owner_relationship— one ofself,employee,actor_with_release,customer_with_written_consent, orother.biometric_consent_acknowledged: true— your explicit acknowledgement of biometric-voiceprint obligations.
-
Watermarking the output. In the dashboard, open a ready clone and
choose Watermark; the dialog marks an audio clip with a provenance
credential bound to the exact bytes and to your tenant. Over the API:
POST /voice/clones/{id}/watermark— supplyaudio_base64(the raw clip) or a pre-computedaudio_sha256+audio_bytes. When raw audio is supplied, the mark is also embedded into the audio itself as a standard content credential any compatible verifier can read; when your AI-disclosure settings enable a spoken preamble, the configured audible disclaimer travels with the mark.POST /voice/clones/watermark/verify— verify a mark, with audio-in-hand binding: a valid mark re-stapled onto different audio reports a mismatch instead of passing.
status: readycan mark output; a clone still training or one that failed is refused. Whether marking satisfies a specific framework (EU AI Act Art 50, FCC synthetic-voice rules) depends on how you operate the account — the watermark is a control you own; the posture remains yours.
3. Provider tracking (provider + provider_voice_id)
Two fields connect a clone to the synthesis provider behind it:
provider— which synthesis provider hosts the trained voice (for example,elevenlabs).provider_voice_id— the voice’s identifier at that provider, once training succeeded. If you ever need to cross-reference a voice in the provider’s own console, this is the join key.
4. Pricing (price_cents)
The first clone per organization is free. Every clone after that costs
500 cents ($5.00) from your credit wallet:
- The charged amount is stored on the clone as
price_cents(the free clone stores0) and shown as a price badge next to the clone’s name in the dashboard. - If the wallet balance is too low, the create call returns
402withINSUFFICIENT_BALANCEbefore any work starts. - If provider training fails after a paid clone was charged, the credits
are refunded automatically and the clone is marked
failed.
5. List, create, and delete
In the dashboard, Voice → Voice clones (
/voice/voice-clones) shows
each clone with its status, provider, creation time, price badge, a playback
sample from the source call, a Watermark action once ready, and delete —
the same list the API returns.
6. Status and failure handling
A clone moves through three statuses:processing— the sample was accepted and is training at the provider. Most clones finish shortly; the dashboard refreshes the list in place.ready— training succeeded,provider_voice_idis set, and the clone can synthesize and watermark output.failed— training did not complete: the provider rejected the sample, the sample URL could not be fetched, or the provider call failed. Any charged credits are refunded when this happens. The dashboard shows a failed badge and surfaces the underlying reason as a readable toast — the failure is never silent. Delete the failed clone and re-enroll from a cleaner sample.
Errors you will hit and what they mean
Next steps
- AI agent rollout pipeline — put a new clone through offline comparison, canary, and regression stages before it answers production calls.
- Audit Log — clone creation, deletion, and watermark events each write an audit entry with the consent basis attached.
- Record a call — capture the enrollment call
with
record: trueso it is clone-eligible.