Create a new AI voice clone from audio samples. Upload high-quality audio files to train a custom voice model that can be used for LinkedIn voice messages and other voice synthesis applications.
Requires the voice:create
permission. Maximum 5 voice clones per user.
Request
Bearer token with your API key that has voice:create
permission (e.g.,
“Bearer bna-your-api-key”)
Must be multipart/form-data
for file uploads
Body Parameters
Descriptive name for the voice clone (e.g., “Professional Voice”, “Sales
Persona”)
Optional description of the voice clone and its intended use
Audio files for voice training. Upload 1-10 high-quality audio files (WAV,
MP3, M4A, FLAC). Each file must be under 50MB.
Voice generation settings Voice stability (0.0-1.0). Higher values = more consistent but less
expressive
Voice clarity and similarity boost (0.0-1.0)
Enhance speaker similarity using speaker boost
Examples
Basic Voice Clone Creation
curl -X POST "https://api.buena.ai/api/v2/voice-clones" \
-H "Authorization: Bearer bna-your-api-key" \
-F "name=Professional Voice" \
-F "description=Professional outreach voice for LinkedIn" \
-F "files=@sample1.wav" \
-F "files=@sample2.wav" \
-F "files=@sample3.wav"
Advanced Voice Clone with Custom Settings
curl -X POST "https://api.buena.ai/api/v2/voice-clones" \
-H "Authorization: Bearer bna-your-api-key" \
-F "name=Sales Voice" \
-F "description=Energetic sales voice for cold outreach" \
-F "files=@recording1.wav" \
-F "files=@recording2.wav"
Response
Always true
for successful requests
The created voice clone information Unique voice clone identifier (e.g., “pNInz6obpgDQGcFmaJgB”)
User-defined name for the voice clone
Description of the voice clone
Number of audio samples uploaded for training
ISO 8601 timestamp when the voice clone was created
{
"success" : true ,
"data" : {
"voiceId" : "pNInz6obpgDQGcFmaJgB" ,
"name" : "Professional Voice" ,
"description" : "Professional outreach voice for LinkedIn" ,
"sampleCount" : 3 ,
"createdAt" : "2024-01-20T15:30:00.000Z"
},
"message" : "Voice clone created successfully"
}
Voice Training Requirements
Audio Quality Guidelines
Audio Format Requirements
Environment : Record in a quiet room with minimal echo - Microphone :
Use a quality microphone, avoid phone recordings - Speaking style :
Natural, conversational tone - Content variety : Include different emotions
and sentence structures - Consistency : Same speaker, similar recording
conditions
Language : Clear pronunciation and articulation
Variety : Mix of short and long sentences
Emotions : Include various emotional tones if desired
Avoid : Background noise, music, multiple speakers
Minimum : At least 1 minute of total audio recommended
Voice Clone Limits
Limit Type Value Notes Max voice clones per user 5 Contact support for higher limits Max files per upload 10 Multiple uploads allowed Max file size 50MB Per individual file Training time 2-5 minutes Depends on audio length and quality Supported languages 29+ Supported languages by Buena AI
Error Responses
{
"error" : true ,
"code" : "INVALID_FILE_FORMAT" ,
"message" : "Unsupported audio format. Please use WAV, MP3, M4A, or FLAC files." ,
"version" : "2.0" ,
"timestamp" : "2024-01-20T15:30:00Z" ,
"details" : {
"supported_formats" : [ "wav" , "mp3" , "m4a" , "flac" ],
"rejected_files" : [ "recording.txt" ]
}
}
Voice Clone Limit Exceeded (429)
{
"error" : true ,
"code" : "VOICE_CLONE_LIMIT_EXCEEDED" ,
"message" : "Maximum voice clones reached (5). Delete existing clones or upgrade your plan." ,
"version" : "2.0" ,
"timestamp" : "2024-01-20T15:30:00Z" ,
"details" : {
"current_count" : 5 ,
"max_allowed" : 5 ,
"upgrade_url" : "https://app.buena.ai/billing"
}
}
File Size Too Large (413)
{
"error" : true ,
"code" : "FILE_TOO_LARGE" ,
"message" : "File size exceeds maximum limit of 50MB" ,
"version" : "2.0" ,
"timestamp" : "2024-01-20T15:30:00Z" ,
"details" : {
"max_size_mb" : 50 ,
"rejected_files" : [
{
"filename" : "large_recording.wav" ,
"size_mb" : 75
}
]
}
}
Training Status Updates
Voice clone training is asynchronous. Monitor progress using:
// Poll for status updates
async function checkTrainingStatus ( voiceId ) {
const response = await fetch ( `https://api.buena.ai/api/v2/voice-clones` , {
headers: { Authorization: "Bearer bna-your-api-key" },
});
const { data } = await response . json ();
switch ( data . status ) {
case "processing" :
console . log ( `Training progress: ${ data . training_progress } %` );
break ;
case "ready" :
console . log ( "Voice clone ready for use!" );
break ;
case "failed" :
console . log ( "Training failed:" , data . error_message );
break ;
}
return data ;
}
Next Steps