Text to Speech Voice cloning

Voice cloning

Create custom Arabic voices from audio samples. Preview a voice first, then commit the clone — the returned voice_id works everywhere a stock voice does.

1

What voice cloning gives you

Voice cloning lets you create lifelike custom voices from short audio samples, clone voices across different Arabic dialects, use them in text-to-speech generation, and manage your own voice library — all with the same API key.

CapabilityWhat it means
High-quality cloningCreate lifelike voice clones from short audio samples.
Multi-dialect supportClone voices across different Arabic dialects.
Voice libraryManage and organize your custom voices alongside stock ones.
Easy integrationUse cloned voices seamlessly with the TTS API — just pass the voice_id.
2

The preview-first flow

Cloning is a two-step process. You first generate a preview with the Voice Preview API, listen to it, and only then commit the clone. The clone request needs both files: the preview audio and the original sample it was built from.

StepWhat happens
1 · Upload a sampleProvide a high-quality audio sample of the voice you want to clone.
2 · PreviewMunsit processes the sample and returns a generated preview audio file.
3 · CloneSend the preview file, the original file and the preview text to /voices/clone. A unique voice_id is assigned automatically.
4 · Use in TTSPass the voice_id to any text-to-speech request. The voice is available immediately after creation.
Sample quality matters. Use high-quality audio (minimum 1 minute recommended) with clear, natural speech, recorded in a quiet environment with minimal background noise. Multiple samples produce better voice quality.
3

Endpoint

POST /api/v1/voices/clone

Authenticated with the x-api-key header. The body is multipart/form-data; the content type is set automatically when you use FormData or file uploads.

FieldTypeRequiredDescription
voice_fileFileYesThe generated preview audio file from the preview API.
reference_audio_fileFileYesThe original audio file used for the preview.
textstringYesThe text used in preview generation — must match what you sent to the preview API.
stabilitynumberYesVoice stability (0.0 to 1.0). Higher values produce more consistent output.
namestringYesName for the cloned voice.
modelstringYesModel identifier to use for voice cloning.
descriptionstringNoDescription of the voice.
genderstringNoGender of the voice (e.g., male, female).
agestringNoAge category of the voice (e.g., middle, elderly).
languagesstringNoComma-separated list of language codes (e.g., ar,en).
dialectsstringNoComma-separated list of dialects (e.g., najdi,hijazi).
avatar_urlstringNoURL to an avatar image for the voice.
4

Clone a voice

Same request in three languages. voice_file is the preview output; reference_audio_file is the original recording; text matches the preview text.

curl
curl -X POST "https://api.munsit.com/api/v1/voices/clone" \ -H "x-api-key: YOUR_API_KEY" \ -F "voice_file=@voice_sample.wav" \ -F "reference_audio_file=@reference_audio.wav" \ -F "text=مرحبا بك في فصيح، هذا صوتي المستنسخ" \ -F "stability=0.8" \ -F "name=My Cloned Voice" \ -F "model=faseeh-v1-preview" \ -F "description=A custom cloned voice" \ -F "gender=male" \ -F "languages=ar,en" \ -F "dialects=najdi"
5

Response

200 OK, application/json. The clone is available immediately — use voice_id in any TTS request.

200 OK — application/json
{ "id": "123e4567-e89b-12d3-a456-426614174000", "voice_id": "ar-cloned-voice-1", "name": "My Cloned Voice", "description": "A custom cloned voice", "gender": "male", "age": "middle", "languages": ["ar", "en"], "dialect": ["najdi"], "type": "neural", "sample_url": "https://example.com/voices/user123/ar-cloned-voice-1.wav", "avatar_url": null, "stability": 0.8}
FieldTypeDescription
idstring (UUID)Unique identifier for the voice record.
voice_idstringVoice identifier used in API calls.
namestringName of the cloned voice.
descriptionstring | nullDescription of the voice.
genderstring | nullGender of the voice.
agestring | nullAge category of the voice.
languagesstring[]List of language codes supported by the voice.
dialectstring[]List of dialects supported by the voice.
typestring | nullVoice type.
sample_urlstringURL to the sample audio file.
avatar_urlstring | nullURL to the avatar image.
stabilitynumberVoice stability value.
6

Errors

Validation failures come back as 400 with a specific errorMessage; auth and processing failures use the shared error shape.

StatuserrorCodeerrorMessage
400400xxvoice_file is required and must be a file
400400xxreference_audio_file is required and must be a file
400400xxname is required · text is required · model is required
400400xxstability must be a number between 0 and 1
40140101Invalid or missing API key
50050001Failed to process voice file · Failed to upload voice file
7

Go further

The clone is just a voice_id. Everything downstream is regular TTS.

Working with an AI assistant? Every page is available as Markdown: add .md to the URL, or send an Accept: text/markdown header. For the whole documentation in one request, point it at llms-full.txt; the page index is llms.txt. Or use Copy Page, top right.