Docs / Products

Voice cloning

POST /v1/voices/clone creates a custom voice from recordings of one real person. We only create a voice when that person has given verified consent. No consent, no voice.

Consent requirements

Every clone request must include:

  1. A consent recording. The voice owner reads our consent statement aloud, in their own voice, in Swahili or English. We check that it is the same speaker as the samples.
  2. The voice owner's details. Full name and an email address. We email them a copy of what they agreed to and a link to withdraw.
  3. A stated use. One or two sentences on where the voice will be used, for example "IVR prompts for our customer line".

The Swahili consent statement:

"Mimi, [jina lako kamili], nakubali nakala ya kidijitali ya sauti yangu itengenezwe na kutumiwa na [jina la shirika] kupitia Waridi, kwa matumizi yaliyoelezwa. Ninaelewa kwamba ninaweza kusitisha ruhusa hii wakati wowote."

The English version:

"I, [your full name], agree that a digital copy of my voice may be created and used by [organisation name] through Waridi, for the use described. I understand I can withdraw this permission at any time."

We do not clone voices of public figures, politicians or anyone who has not personally recorded the statement. Attempts to get around these checks end in account suspension.

Recording samples

  • 1 to 5 files, 1 to 5 minutes of speech in total.
  • One speaker only, no music, quiet room, consistent microphone.
  • Speak the way the voice will be used: calm and clear for a support line, livelier for ads.
  • WAV or FLAC at 16 kHz or higher is best. MP3 at 128 kbps or more is accepted.

Request

from waridi import Waridi

client = Waridi()

voice = client.voices.clone(
    name="Neema - support line",
    language="sw-TZ",
    samples=[open("neema_01.wav", "rb"), open("neema_02.wav", "rb")],
    consent_recording=open("neema_consent.wav", "rb"),
    owner_name="[Full name]",
    owner_email="owner@example.com",
    intended_use="Recorded prompts and agent replies for our customer support line.",
)
print(voice.id, voice.status)  # vc_01J... pending_verification
import { Waridi } from "@waridi/sdk";
import { createReadStream } from "node:fs";

const client = new Waridi();

const voice = await client.voices.clone({
  name: "Neema - support line",
  language: "sw-TZ",
  samples: [createReadStream("neema_01.wav"), createReadStream("neema_02.wav")],
  consentRecording: createReadStream("neema_consent.wav"),
  ownerName: "[Full name]",
  ownerEmail: "owner@example.com",
  intendedUse: "Recorded prompts and agent replies for our customer support line.",
});
console.log(voice.id, voice.status);
curl https://api.waridi.io/v1/voices/clone \
  -H "Authorization: Bearer $WARIDI_API_KEY" \
  -F name="Neema - support line" \
  -F language=sw-TZ \
  -F samples=@neema_01.wav \
  -F samples=@neema_02.wav \
  -F consent_recording=@neema_consent.wav \
  -F owner_name="[Full name]" \
  -F owner_email=owner@example.com \
  -F intended_use="Recorded prompts and agent replies for our customer support line."

Response (202 Accepted):

{
  "id": "vc_01J9ZD7Y3K",
  "object": "voice",
  "name": "Neema - support line",
  "status": "pending_verification",
  "language": "sw-TZ",
  "created_at": "2026-10-14T11:02:00Z"
}

Voice status

Status Meaning
pending_verification We are checking the consent recording against the samples. During early access a person on our team reviews every request
training Consent verified. The voice is being built
ready Use the id as voice in TTS, streaming or agents
rejected Consent could not be verified. The reason is in status_reason
revoked The owner withdrew consent. The voice can no longer be used

Withdrawal and deletion

The voice owner can withdraw consent at any time from the link in their email, or by writing to hello@waridi.io. When that happens we stop generating with the voice within 24 hours and delete the samples and the model within 30 days. You can also delete a voice yourself from Studio.

Plan availability

Voice cloning is available on Builder, Business and Enterprise plans. It is not available in the Free sandbox.