Trusted by over 500,000+ users
Powerful Voice Cloning API features
Everything you need to integrate professional voice cloning into your applicationsUnlimited
Unlimited Voice CloningCreate unlimited custom voices from audio samples. Upload audio in MP3, WAV, AAC, M4A, or FLAC format.Premium Quality
High-Quality AudioGenerate natural-sounding speech with advanced AI technology. Support for multiple audio formats and high-quality output.Developer Friendly
Easy IntegrationSimple REST API with comprehensive documentation. Integrate voice cloning into your applications with just a few API calls.Voice Cloning API workflow
Create custom voices with just a few simple API calls01
Upload Audio Sample
Get a presigned URL and upload your audio file in supported formats like MP3, WAV, AAC, M4A, or FLAC.API Request
curl -X GET "https://dubsmart.ai/api/v1/upload?region=EU&fileExtension=mp3" \
-H "Authorization: Bearer YOUR_API_KEY"
# Response:
{
"url": "https://storage.dubsmart.ai/voice-cloning/...",
"key": "voice-cloning/user_id/filename.mp3"
}
# Upload file
curl -X PUT -T your_audio_file.mp3 "https://storage.dubsmart.ai/voice-cloning/..."02
Create Custom Voice
Create a custom voice using the uploaded audio sample. Provide a name and the file key from the upload step.API Request
curl -X POST "https://dubsmart.ai/api/v1/custom-voices/create" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My Custom Voice",
"examplePath": "voice-cloning/user_id/filename.mp3"
}'
# Response:
{
"id": "67c123...",
"name": "My Custom Voice",
"examplePath": "https://...",
"createdAt": "2024-01-15T10:30:00Z"
}'03
Use in TTS and AI Dubbing Projects
Use your custom voice ID in TTS and AI Dubbing projects.API Request
curl -X POST "https://dubsmart.ai/api/v1/projects/tts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "My TTS Project",
"segments": [
{
"text": "Hello world!",
"voice": "67c123...",
"language": "en"
}
]
}'Voice Cloning API endpoints
Complete API reference with examples for all endpointsGET
/uploadGet upload file URL
Get presigned URL for file upload and return file keyRequest
JSON
Query Parameters:
- region: string (default: "EU")
- fileExtension: string (mp3, wav, aac, m4a, flac)Response
JSON
{
"url": "https://storage.dubsmart.ai/voice-cloning/...",
"key": "voice-cloning/user_id/filename.mp3"
}POST
/custom-voices/createCreate custom voice
Create a new custom voice using uploaded audio sampleRequest
JSON
{
"name": "My Custom Voice",
"examplePath": "voice-cloning/user_id/filename.mp3"
}Response
JSON
{
"id": "67c123...",
"name": "My Custom Voice",
"examplePath": "https://...",
"createdAt": "2024-01-15T10:30:00Z"
}POST
/custom-voices/listGet custom voices
Retrieve all your custom voices with paginationRequest
JSON
{
"limit": 10,
"cursor": "cursor_value"
}Response
JSON
{
"items": [
{
"id": "custom_voice_id",
"name": "My Custom Voice",
"examplePath": "https://...",
"createdAt": "2024-01-15T10:30:00Z"
}
],
"nextCursor": "next_cursor_value"
}DELETE
/custom-voices/{id}Delete custom voice
Remove a custom voice from your accountRequest
JSON
Path Parameters:
- id: string (voice ID)Response
JSON
{
"id": "custom_voice_id",
"success": true
}Voice Cloning API code examples
Ready-to-use code examples in multiple programming languagesJavaScript Example
// JavaScript/Node.js Example
const axios = require('axios');
const API_KEY = 'your_api_key_here';
const BASE_URL = 'https://dubsmart.ai/api/v1';
async function createCustomVoice() {
try {
// Step 1: Get upload URL
const uploadResponse = await axios.get(`${BASE_URL}/upload`, {
params: {
region: 'EU',
fileExtension: 'mp3'
},
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
console.log('Upload URL:', uploadResponse.data.url);
// Step 2: Upload audio file (you would use the presigned URL here)
// This is typically done with a PUT request to the presigned URL
// Step 3: Create custom voice
const voiceResponse = await axios.post(`${BASE_URL}/custom-voices/create`, {
name: 'My Custom Voice',
examplePath: uploadResponse.data.key
}, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
console.log('Custom voice created:', voiceResponse.data);
// Step 4: List custom voices
const voicesResponse = await axios.post(`${BASE_URL}/custom-voices/list`, {
limit: 10
}, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
console.log('Custom voices:', voicesResponse.data.items);
return voiceResponse.data;
} catch (error) {
console.error('Error:', error.response?.data || error.message);
}
}
// Usage
createCustomVoice();Python Example
# Python Example
import requests
import json
API_KEY = 'your_api_key_here'
BASE_URL = 'https://dubsmart.ai/api/v1'
def create_custom_voice():
headers = {'Authorization': f'Bearer {API_KEY}'}
try:
# Step 1: Get upload URL
upload_response = requests.get(f'{BASE_URL}/upload',
params={'region': 'EU', 'fileExtension': 'mp3'},
headers=headers
)
upload_data = upload_response.json()
print(f"Upload URL: {upload_data['url']}")
# Step 2: Upload audio file (you would use the presigned URL here)
# This is typically done with a PUT request to the presigned URL
# Step 3: Create custom voice
voice_data = {
'name': 'My Custom Voice',
'examplePath': upload_data['key']
}
voice_response = requests.post(f'{BASE_URL}/custom-voices/create',
json=voice_data,
headers=headers
)
voice_result = voice_response.json()
print(f"Custom voice created: {voice_result}")
# Step 4: List custom voices
list_data = {'limit': 10}
voices_response = requests.post(f'{BASE_URL}/custom-voices/list',
json=list_data,
headers=headers
)
voices_result = voices_response.json()
print(f"Custom voices: {voices_result['items']}")
return voice_result
except requests.exceptions.RequestException as e:
print(f"Error: {e}")
# Usage
create_custom_voice()cURL Example
# cURL Examples
# Step 1: Get upload URL
curl -X GET "https://dubsmart.ai/api/v1/upload?region=EU&fileExtension=mp3" \
-H "Authorization: Bearer YOUR_API_KEY"
# Response:
# {
# "url": "https://storage.dubsmart.ai/voice-cloning/...",
# "key": "voice-cloning/user_id/filename.mp3"
# }
# Step 2: Upload audio file
curl -X PUT -T your_audio_file.mp3 "https://storage.dubsmart.ai/voice-cloning/..."
# Step 3: Create custom voice
curl -X POST "https://dubsmart.ai/api/v1/custom-voices/create" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My Custom Voice",
"examplePath": "voice-cloning/user_id/filename.mp3"
}'
# Response:
# {
# "id": "67c123...",
# "name": "My Custom Voice",
# "examplePath": "https://...",
# "createdAt": "2024-01-15T10:30:00Z"
# }
# Step 4: List custom voices
curl -X POST "https://dubsmart.ai/api/v1/custom-voices/list" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"limit": 10}'
# Step 5: Delete custom voice
curl -X DELETE "https://dubsmart.ai/api/v1/custom-voices/VOICE_ID" \
-H "Authorization: Bearer YOUR_API_KEY"PHP Example
<?php
// PHP Example
$apiKey = 'your_api_key_here';
$baseUrl = 'https://dubsmart.ai/api/v1';
function createCustomVoice($apiKey, $baseUrl) {
$headers = [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json'
];
try {
// Step 1: Get upload URL
$uploadUrl = $baseUrl . '/upload?region=EU&fileExtension=mp3';
$uploadResponse = file_get_contents($uploadUrl, false, stream_context_create([
'http' => [
'method' => 'GET',
'header' => $headers
]
]));
$uploadData = json_decode($uploadResponse, true);
echo "Upload URL: " . $uploadData['url'] . "\n";
// Step 2: Upload audio file (you would use the presigned URL here)
// This is typically done with a PUT request to the presigned URL
// Step 3: Create custom voice
$voiceData = [
'name' => 'My Custom Voice',
'examplePath' => $uploadData['key']
];
$voiceContext = stream_context_create([
'http' => [
'method' => 'POST',
'header' => $headers,
'content' => json_encode($voiceData)
]
]);
$voiceResponse = file_get_contents($baseUrl . '/custom-voices/create', false, $voiceContext);
$voiceResult = json_decode($voiceResponse, true);
echo "Custom voice created: " . json_encode($voiceResult) . "\n";
// Step 4: List custom voices
$listData = ['limit' => 10];
$listContext = stream_context_create([
'http' => [
'method' => 'POST',
'header' => $headers,
'content' => json_encode($listData)
]
]);
$voicesResponse = file_get_contents($baseUrl . '/custom-voices/list', false, $listContext);
$voicesResult = json_decode($voicesResponse, true);
echo "Custom voices: " . json_encode($voicesResult['items']) . "\n";
return $voiceResult;
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
}
}
// Usage
createCustomVoice($apiKey, $baseUrl);
?>Voice Cloning API FAQ
What is the Voice Cloning API and how does it work?
Our Voice Cloning API allows you to create custom AI voices from audio samples. Simply upload an audio file, create a custom voice, and use it in your TTS and AI Dubbing projects.
What audio formats are supported for voice cloning?
We support MP3, WAV, AAC, M4A, and FLAC audio formats. The audio file should be from 20 seconds without background noise for optimal voice cloning results.
How many custom voices can I create?
On paid plans, you can create unlimited custom voices.
How long does it take to create a custom voice?
Voice cloning typically takes few seconds depending on the audio length and complexity.
Can I use custom voices in TTS projects?
Yes! Once created, your custom voices can be used in TTS projects by referencing the voice ID. They work seamlessly with our Text-to-Speech API for generating natural-sounding speech.
Can I use custom voices in AI Dubbing projects?
Yes! Once created, your custom voices can be used in AI Dubbing projects by referencing the voice ID. They work seamlessly with our AI Dubbing API for generating natural-sounding speech.
Is my audio data secure and private?
Absolutely. We take data privacy seriously. Your audio files are encrypted and stored securely. You can delete custom voices and their associated audio data at any time.
