Vertrouwd door meer dan 500.000+ gebruikers
Krachtige API-functies
Alles wat je nodig hebt om professionele AI-dubbing in je applicaties te integrerenWereldwijd bereik
33+ talen
Ondersteuning voor de populairste talen ter wereld, waaronder Engels, Portugees, Spaans, Frans, Duits, Chinees en Japans.Authentieke stemmen
Stem klonen
Behoud de originele stemmen van de spreker met de geavanceerde AI-stemkloontechnologie voor authentieke nasynchronisatieresultaten.Snel en betrouwbaar
Snelle verwerking
Voltooi je nasynchronisatieprojecten in minuten, niet in uren. Behaal snel resultaten met onze geoptimaliseerde AI-verwerkingspijplijn.99.9%
Uptime
<300ms
Reactietijd
24/7
Ondersteuning
AI nasynchronisatie API-workflow
Integreer AI nasynchronisatie in je applicatie met slechts een paar API-aanroepen01
URL voor upload ophalen en bestand uploaden
Verkrijg een vooraf ondertekende URL via API en upload vervolgens je videobestand met behulp van een PUT-verzoek. Ondersteuning voor MP4, MOV, AVI en meer formaten.API Request
# 1. Get upload URL
curl -X GET "https://dubsmart.ai/api/v1/upload" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"region": "EU",
"fileExtension": "mp4"
}'
# 2. Upload file using returned URL
curl -X PUT "PRESIGNED_URL_FROM_STEP_1" \
-H "Content-Type: video/mp4" \
--data-binary @video.mp402
Project maken
Maak een nasynchronisatieproject met doeltalen en steminstellingen. Ondersteuning voor meerdere talen in één aanvraag.API Request
curl -X POST "https://dubsmart.ai/api/v1/project" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {"path": "uploaded_file_key"},
"targetLanguages": ["es", "fr", "de"],
"voice": "voiceCloning"
}'03
Project bewerken
Wijzig projectinstellingen, titel, luidsprekers en achtergrondvolume als dat nodig is.API Request
curl --request PUT \
--url https://dubsmart.ai/api/v1/project \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"title": "Updated Project Title",
"speakers": [
"Speaker 1",
"Speaker 2"
],
"backgroundVolume": 0.5,
"id": "64f8a2b1c3d4e5f6a7b8c9d0"
}'04
Resultaten downloaden
Download je nagesynchroniseerde video- of audiobestanden. Ontvang afzonderlijke segmenten of volledige nagesynchroniseerde inhoud.API Request
curl -X GET "https://dubsmart.ai/api/v1/project/PROJECT_ID" \
-H "Authorization: Bearer YOUR_API_KEY"AI nasynchronisatie API-eindpunten
Volledige API-referentie met voorbeelden voor alle eindpuntenGET
/uploadURL voor uploadbestand opvragen
Verkrijg vooraf ondertekende URL voor bestandsupload en retourneer bestandssleutelRequest
JSON
{
"region": "EU",
"fileExtension": "mp4"
}Response
JSON
{
"url": "https://storage.dubsmart.ai/...",
"key": "uploads/user_id/filename.mp4"
}POST
/voicesStemmen krijgen
Beschikbare AI-stemmen ophalen met filteroptiesRequest
JSON
{
"limit": 50,
"filter": {
"language": "en",
"gender": "female",
"accent": "american"
}
}Response
JSON
{
"items": [
{
"id": "voice_id_1",
"name": "Anna",
"value": "anna_en_v2",
"language": "en",
"provider": "elevenlabs"
}
],
"nextCursor": "next_cursor_value"
}POST
/custom-voicesEigen stemmen ophalen
Door de gebruiker gemaakte stemmen ophalenRequest
JSON
{
"limit": 10,
"cursor": "cursor_value"
}Response
JSON
{
"items": [
{
"id": "custom_voice_id",
"name": "My Custom Voice",
"examplePath": "https://..."
}
],
"nextCursor": "next_cursor_value"
}POST
/projectProject maken
Een nieuw nasynchronisatieproject maken met videobestand en doeltalenRequest
JSON
{
"input": {
"path": "uploaded_file_key",
"type": "LOCAL_FILE",
"voice": "voiceCloning",
"textCheck": false
},
"targetLanguages": ["es", "fr", "de"],
"title": "My Dubbing Project",
"speakersAmount": 2
}Response
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d0",
"groupId": "64f8a2b1c3d4e5f6a7b8c9d1",
"base": {
"title": "My Dubbing Project",
"state": "Pending",
"progress": 0
},
"targetLanguage": "es",
"groupProjects": [
{"id": "64f8a2b1c3d4e5f6a7b8c9d0", "targetLanguage": "es"},
{"id": "64f8a2b1c3d4e5f6a7b8c9d2", "targetLanguage": "fr"},
{"id": "64f8a2b1c3d4e5f6a7b8c9d3", "targetLanguage": "de"}
]
}GET
/projectProjecten krijgen
Lijst ophalen van alle nasynchronisatieprojecten met pagineringRequest
JSON
{
"cursor": "64f8a2b1c3d4e5f6a7b8c9d0",
"limit": 10
}Response
JSON
{
"items": [
{
"id": "64f8a2b1c3d4e5f6a7b8c9d0",
"base": {
"title": "My Dubbing Project",
"state": "Done",
"progress": 100
},
"targetLanguage": "es",
"createdAt": "2024-01-15T10:30:00Z"
}
],
"nextCursor": "64f8a2b1c3d4e5f6a7b8c9d4"
}PUT
/projectProject bewerken
Projectinstellingen, titel, luidsprekers en achtergrondvolume bijwerkenRequest
JSON
{
"title": "Updated Project Title",
"speakers": [
"Speaker 1",
"Speaker 2"
],
"backgroundVolume": 0.5,
"id": "64f8a2b1c3d4e5f6a7b8c9d0"
}Response
JSON
trueDELETE
/projectProject verwijderen
Een nasynchronisatieproject permanent verwijderenRequest
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d0"
}Response
JSON
trueGET
/project/{id}Project ophalen op ID
Gedetailleerde informatie krijgen over een specifiek project, inclusief segmentenRequest
JSON
GET /project/64f8a2b1c3d4e5f6a7b8c9d0Response
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d0",
"base": {
"title": "My Dubbing Project",
"state": "Done",
"progress": 100
},
"segments": [
{
"id": "64f8a2b1c3d4e5f6a7b8c9d5",
"text": "Hello world",
"translatedText": "Hola mundo",
"start": 0.0,
"end": 1.5,
"speakerId": 0,
"resultUrl": "https://..."
}
],
"videoResult": {
"value": "https://...",
"state": "Done"
}
}POST
/project/regenerateRegenereren project
Audio opnieuw genereren voor het hele project of voor specifieke segmentenRequest
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d0",
"segmentsForRegenerating": ["segment_id_1", "segment_id_2"],
"cloneVoice": true
}Response
JSON
truePOST
/project/speakerLuidspreker toevoegen
Een nieuwe spreker aan het project toevoegenRequest
JSON
{
"projectId": "64f8a2b1c3d4e5f6a7b8c9d0",
"voice": "voice_id"
}Response
JSON
200 OKDELETE
/project/speakerLuidspreker verwijderen
Een luidspreker uit het project verwijderenRequest
JSON
{
"projectId": "64f8a2b1c3d4e5f6a7b8c9d0",
"speakerId": 0
}Response
JSON
200 OKPOST
/segmentSegment maken
Een nieuw spraaksegment toevoegen aan een bestaand projectRequest
JSON
{
"projectId": "64f8a2b1c3d4e5f6a7b8c9d0",
"text": "New segment text",
"translatedText": "Texto del nuevo segmento",
"start": 10.5,
"end": 12.0,
"speakerId": 0,
"voice": "voiceCloning"
}Response
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d6",
"projectId": "64f8a2b1c3d4e5f6a7b8c9d0",
"text": "New segment text",
"translatedText": "Texto del nuevo segmento",
"start": 10.5,
"end": 12.0,
"speakerId": 0,
"state": "Pending"
}PUT
/segmentSegment bewerken
Segmenttekst, timing of spraakparameters bijwerkenRequest
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d6",
"projectId": "64f8a2b1c3d4e5f6a7b8c9d0",
"text": "Updated segment text",
"translatedText": "Texto actualizado del segmento",
"start": 10.0,
"end": 12.5,
"speakerId": 0,
"voice": "voiceCloning"
}Response
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d6",
"text": "Updated segment text",
"translatedText": "Texto actualizado del segmento",
"start": 10.0,
"end": 12.5,
"speakerId": 0,
"state": "Pending"
}DELETE
/segmentSegment verwijderen
Een spraaksegment verwijderen uit een project op IDRequest
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d6",
"projectId": "64f8a2b1c3d4e5f6a7b8c9d0"
}Response
JSON
trueAI nasynchronisatie API-codevoorbeelden
Gebruiksklare codevoorbeelden in meerdere programmeertalenJavaScript Example
// JavaScript/Node.js Example
const axios = require('axios');
const fs = require('fs');
const API_KEY = 'your_api_key_here';
const BASE_URL = 'https://dubsmart.ai/api/v1';
async function createDubbingProject() {
try {
// 1. Get upload URL
const uploadResponse = await axios.get(`${BASE_URL}/upload`, {
params: {
region: 'EU',
fileExtension: 'mp4'
},
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
// 2. Upload file using presigned URL
const fileBuffer = fs.readFileSync('video.mp4');
await axios.put(uploadResponse.data.url, fileBuffer, {
headers: {
'Content-Type': 'video/mp4'
}
});
// 3. Create dubbing project
const projectResponse = await axios.post(`${BASE_URL}/project`, {
input: {
path: uploadResponse.data.key,
type: 'LOCAL_FILE',
voice: 'voiceCloning',
textCheck: false
},
targetLanguages: ['es', 'fr', 'de'],
title: 'My Multilingual Video'
}, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
console.log('Project created:', projectResponse.data);
return projectResponse.data;
} catch (error) {
console.error('Error:', error.response?.data || error.message);
}
}
// Monitor project status
async function checkProjectStatus(projectId) {
const response = await axios.get(`${BASE_URL}/project/${projectId}`, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
return response.data;
}Python Example
# Python Example
import requests
import time
API_KEY = 'your_api_key_here'
BASE_URL = 'https://dubsmart.ai/api/v1'
def create_dubbing_project():
headers = {'Authorization': f'Bearer {API_KEY}'}
try:
# 1. Get upload URL
upload_params = {
'region': 'EU',
'fileExtension': 'mp4'
}
upload_response = requests.get(
f'{BASE_URL}/upload',
params=upload_params,
headers=headers
)
upload_response.raise_for_status()
# 2. Upload file using presigned URL
with open('video.mp4', 'rb') as file:
upload_file_response = requests.put(
upload_response.json()['url'],
data=file,
headers={'Content-Type': 'video/mp4'}
)
upload_file_response.raise_for_status()
# 3. Create dubbing project
project_data = {
'input': {
'path': upload_response.json()['key'],
'type': 'LOCAL_FILE',
'voice': 'voiceCloning',
'textCheck': False
},
'targetLanguages': ['es', 'fr', 'de'],
'title': 'My Multilingual Video'
}
project_response = requests.post(
f'{BASE_URL}/project',
json=project_data,
headers=headers
)
project_response.raise_for_status()
print('Project created:', project_response.json())
return project_response.json()
except requests.exceptions.RequestException as e:
print(f'Error: {e}')
return None
def monitor_project(project_id):
headers = {'Authorization': f'Bearer {API_KEY}'}
while True:
response = requests.get(
f'{BASE_URL}/project/{project_id}',
headers=headers
)
response.raise_for_status()
project = response.json()
status = project['base']['state']
print(f'Project status: {status}')
if status == 'Done':
print('Project completed!')
return project
elif status == 'Error':
print('Project failed!')
return None
time.sleep(30) # Check every 30 secondscURL Example
# cURL Examples
# 1. Get upload URL
curl -X GET "https://dubsmart.ai/api/v1/upload?region=EU&fileExtension=mp4" \
-H "Authorization: Bearer YOUR_API_KEY"
# 2. Upload file using presigned URL
curl -X PUT "PRESIGNED_URL_FROM_STEP_1" \
-H "Content-Type: video/mp4" \
--data-binary @video.mp4
# 3. Create dubbing project
curl -X POST "https://dubsmart.ai/api/v1/project" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"path": "uploaded_file_key",
"type": "LOCAL_FILE",
"voice": "voiceCloning",
"textCheck": false
},
"targetLanguages": ["es", "fr", "de"],
"title": "My Multilingual Video"
}'
# 4. Check project status
curl -X GET "https://dubsmart.ai/api/v1/project/PROJECT_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
# 5. Download results
curl -X GET "https://dubsmart.ai/api/v1/project/PROJECT_ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-o "dubbed_video.mp4"PHP Example
<?php
// PHP Example
$apiKey = 'your_api_key_here';
$baseUrl = 'https://dubsmart.ai/api/v1';
function createDubbingProject() {
global $apiKey, $baseUrl;
$headers = [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json'
];
try {
// 1. Get upload URL
$uploadParams = [
'region' => 'EU',
'fileExtension' => 'mp4'
];
$uploadResponse = httpRequest(
$baseUrl . '/upload?' . http_build_query($uploadParams),
'GET',
null,
$headers
);
// 2. Upload file using presigned URL
$fileContent = file_get_contents('video.mp4');
$uploadFileResponse = httpRequest(
$uploadResponse['url'],
'PUT',
$fileContent,
['Content-Type: video/mp4']
);
// 3. Create dubbing project
$projectData = [
'input' => [
'path' => $uploadResponse['key'],
'type' => 'LOCAL_FILE',
'voice' => 'voiceCloning',
'textCheck' => false
],
'targetLanguages' => ['es', 'fr', 'de'],
'title' => 'My Multilingual Video'
];
$projectResponse = httpRequest(
$baseUrl . '/project',
'POST',
$projectData,
$headers
);
echo "Project created: " . json_encode($projectResponse);
return $projectResponse;
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
return null;
}
}
function httpRequest($url, $method, $data, $headers) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
if ($method === 'POST') {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
} elseif ($method === 'PUT') {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode >= 200 && $httpCode < 300) {
return json_decode($response, true);
} else {
throw new Exception("HTTP Error: " . $httpCode);
}
}
// Usage
$project = createDubbingProject();
?>FAQ
Welke bestandsindelingen ondersteunt de API?
De API ondersteunt alle belangrijke videoformaten, waaronder MP4, MOV, AVI, MKV en WebM. Voor audiobestanden ondersteunen we MP3, WAV, AAC en andere gangbare formaten. De maximale bestandsgrootte is 5GB.
Hoe lang duurt nasynchronisatie?
De verwerkingstijd hangt af van de lengte van de video en de bestandsgrootte. Het verwerken van een video van 5 minuten duurt meestal 1 minuut. Enterprise-klanten krijgen voorrang bij de verwerking met snellere doorlooptijden.
Welke talen worden ondersteund?
We ondersteunen 33+ doeltalen, waaronder Engels, Portugees, Spaans, Frans, Duits, Chinees, Japans, Koreaans, Russisch, Arabisch, Hindi en nog veel meer. We kunnen ook inhoud van 99+ brontalen detecteren en verwerken.
Hoe werkt stem klonen?
Onze geavanceerde AI analyseert de stemkenmerken van de oorspronkelijke spreker, zoals toon, toonhoogte, accent en spreekstijl. Vervolgens wordt er synthetische spraak gegenereerd die deze unieke eigenschappen behoudt terwijl er in de doeltaal wordt gesproken.
Kan ik de nagesynchroniseerde inhoud bewerken?
Ja! De API biedt volledige bewerkingsmogelijkheden. Je kunt vertaalde tekst wijzigen, timing aanpassen, stemmen veranderen en specifieke segmenten opnieuw genereren.
Kan ik de API gebruiken voor commerciële projecten?
Ja! Alle plannen staan commercieel gebruik toe. De API is ontworpen voor productieomgevingen en wordt wereldwijd gebruikt door grote contentmakers, bedrijven en mediabedrijven.
