AI nasynchronisatie-API

Vertaal en nasynchroniseer je video's met AI nasynchronisatie-API. Videos automatisch nasynchroniseren in 33+ talen met stem klonen
33+ Talen
Stem klonen
REST API
AI Dubbing Voice Tracks
NL
PT
ES
33+ Talen
99.9%
Uptime
Vertrouwd door meer dan 500.000+ gebruikers

Krachtige API-functies

Alles wat je nodig hebt om professionele AI-dubbing in je applicaties te integreren
Wereldwijd 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-aanroepen
01

URL voor upload ophalen &amp; 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.mp4
02

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 eindpunten
GET
/upload

URL voor uploadbestand opvragen

Verkrijg vooraf ondertekende URL voor bestandsupload en retourneer bestandssleutel
Request
JSON
{
  "region": "EU",
  "fileExtension": "mp4"
}
Response
JSON
{
  "url": "https://storage.dubsmart.ai/...",
  "key": "uploads/user_id/filename.mp4"
}
POST
/voices

Stemmen krijgen

Beschikbare AI-stemmen ophalen met filteropties
Request
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-voices

Aangepaste stemmen krijgen

Door de gebruiker gemaakte aangepaste stemmen ophalen
Request
JSON
{
  "limit": 10,
  "cursor": "cursor_value"
}
Response
JSON
{
  "items": [
    {
      "id": "custom_voice_id",
      "name": "My Custom Voice",
      "examplePath": "https://..."
    }
  ],
  "nextCursor": "next_cursor_value"
}
POST
/project

Project maken

Een nieuw nasynchronisatieproject maken met videobestand en doeltalen
Request
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
/project

Projecten krijgen

Lijst ophalen van alle nasynchronisatieprojecten met paginering
Request
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
/project

Project bewerken

Projectinstellingen, titel, luidsprekers en achtergrondvolume bijwerken
Request
JSON
{
  "title": "Updated Project Title",
  "speakers": [
    "Speaker 1",
    "Speaker 2"
  ],
  "backgroundVolume": 0.5,
  "id": "64f8a2b1c3d4e5f6a7b8c9d0"
}
Response
JSON
true
DELETE
/project

Project verwijderen

Een nasynchronisatieproject permanent verwijderen
Request
JSON
{
  "id": "64f8a2b1c3d4e5f6a7b8c9d0"
}
Response
JSON
true
GET
/project/{id}

Project ophalen op ID

Gedetailleerde informatie krijgen over een specifiek project, inclusief segmenten
Request
JSON
GET /project/64f8a2b1c3d4e5f6a7b8c9d0
Response
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/regenerate

Regenereren project

Audio opnieuw genereren voor het hele project of voor specifieke segmenten
Request
JSON
{
  "id": "64f8a2b1c3d4e5f6a7b8c9d0",
  "segmentsForRegenerating": ["segment_id_1", "segment_id_2"],
  "cloneVoice": true
}
Response
JSON
true
POST
/project/speaker

Luidspreker toevoegen

Een nieuwe spreker aan het project toevoegen
Request
JSON
{
  "projectId": "64f8a2b1c3d4e5f6a7b8c9d0",
  "voice": "voice_id"
}
Response
JSON
200 OK
DELETE
/project/speaker

Luidspreker verwijderen

Een luidspreker uit het project verwijderen
Request
JSON
{
  "projectId": "64f8a2b1c3d4e5f6a7b8c9d0",
  "speakerId": 0
}
Response
JSON
200 OK
POST
/segment

Segment maken

Een nieuw spraaksegment toevoegen aan een bestaand project
Request
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
/segment

Segment bewerken

Segmenttekst, timing of spraakparameters bijwerken
Request
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
/segment

Segment verwijderen

Een spraaksegment verwijderen uit een project op ID
Request
JSON
{
  "id": "64f8a2b1c3d4e5f6a7b8c9d6",
  "projectId": "64f8a2b1c3d4e5f6a7b8c9d0"
}
Response
JSON
true

AI nasynchronisatie API-codevoorbeelden

Gebruiksklare codevoorbeelden in meerdere programmeertalen
JavaScript 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 seconds
cURL 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.
© DubSmart LLC | Alle rechten voorbehouden.[email protected]