Voice Cloning
Create custom voice clones from audio samples, then use them with TTS.
Clone limits
| Free | Pro | Premium |
|---|---|---|
| 1 clone | 5 clones | 20 clones |
Typical workflow
Voice cloning is a two-step process: prepare a sample, then create the clone.
End-to-end example
const { sample, error: sampleErr } = await sonus.voices.prepareSample({
url: 'https://example.com/voice-sample.mp3',
})
if (sampleErr) throw sampleErr
const { voice, error: voiceErr } = await sonus.voices.create({
name: 'My Voice',
audio: sample.audio,
format: sample.format,
sampleRate: sample.sampleRate,
})
if (voiceErr) throw voiceErr
const { sound, error: ttsErr } = await sonus.tts.generate({
text: 'Hello in my cloned voice!',
voiceId: voice.id,
})
sample is { audio, format, sampleRate }. sound is { id, name, audioKey, audioUrl }.
sonus.voices.prepareSample({ url })
Download and normalize an audio sample for cloning.
| Name | Type | Required | Description |
|---|---|---|---|
url | string | yes | URL to an audio file (3–40 seconds) |
const { sample, error } = await sonus.voices.prepareSample({
url: 'https://example.com/voice-sample.mp3',
})
sonus.voices.create({ name, audio, format, sampleRate, ... })
Create a voice clone from a prepared sample.
| Name | Type | Required | Description |
|---|---|---|---|
name | string | yes | Name for the voice clone |
audio | string | yes | Base64-encoded audio from prepareSample |
format | string | yes | Audio format from prepareSample |
sampleRate | number | yes | Sample rate from prepareSample |
skipAsr | boolean | no | Skip automatic speech recognition (default: false) |
const { voice, error } = await sonus.voices.create({
name: 'My Custom Voice',
audio: sample.audio,
format: sample.format,
sampleRate: sample.sampleRate,
})
voice is { id, name }.
sonus.voices.list()
List all your voice clones.
const { voices, error } = await sonus.voices.list()
VoiceClone is { id, name, referenceText, createdAt }.
sonus.voices.delete(id)
Delete a voice clone by ID.
const { ok, error } = await sonus.voices.delete('voice_abc123')
