Vertaling starten
curl --request POST \
--url https://api.voicecheap.ai/v1/translate \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"targetLanguage": "<string>",
"originalLanguage": "<string>",
"projectName": "<string>",
"webhookUrl": "<string>",
"numberOfSpeakers": "<string>",
"brandVocabulary": "<string>",
"removeFillerWords": true,
"sourceSrt": "<string>",
"keepBackgroundMusic": true,
"keepOriginalVoice": true,
"originalVoiceVolume": 123,
"voiceIsolatorOption": "<string>",
"subtitles": true,
"subtitlesSource": "<string>",
"lipSyncMode": "<string>",
"activeSpeakerDetectionEnabled": true,
"lipsyncPro": true,
"voiceMode": "<string>",
"voiceId": "<string>",
"voiceCloningSettings": {
"stability": 123,
"similarity": 123,
"speakerBoost": 123
},
"translationTimeSkips": "<string>"
}
'import requests
url = "https://api.voicecheap.ai/v1/translate"
payload = {
"targetLanguage": "<string>",
"originalLanguage": "<string>",
"projectName": "<string>",
"webhookUrl": "<string>",
"numberOfSpeakers": "<string>",
"brandVocabulary": "<string>",
"removeFillerWords": True,
"sourceSrt": "<string>",
"keepBackgroundMusic": True,
"keepOriginalVoice": True,
"originalVoiceVolume": 123,
"voiceIsolatorOption": "<string>",
"subtitles": True,
"subtitlesSource": "<string>",
"lipSyncMode": "<string>",
"activeSpeakerDetectionEnabled": True,
"lipsyncPro": True,
"voiceMode": "<string>",
"voiceId": "<string>",
"voiceCloningSettings": {
"stability": 123,
"similarity": 123,
"speakerBoost": 123
},
"translationTimeSkips": "<string>"
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
targetLanguage: '<string>',
originalLanguage: '<string>',
projectName: '<string>',
webhookUrl: '<string>',
numberOfSpeakers: '<string>',
brandVocabulary: '<string>',
removeFillerWords: true,
sourceSrt: '<string>',
keepBackgroundMusic: true,
keepOriginalVoice: true,
originalVoiceVolume: 123,
voiceIsolatorOption: '<string>',
subtitles: true,
subtitlesSource: '<string>',
lipSyncMode: '<string>',
activeSpeakerDetectionEnabled: true,
lipsyncPro: true,
voiceMode: '<string>',
voiceId: '<string>',
voiceCloningSettings: {stability: 123, similarity: 123, speakerBoost: 123},
translationTimeSkips: '<string>'
})
};
fetch('https://api.voicecheap.ai/v1/translate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.voicecheap.ai/v1/translate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'targetLanguage' => '<string>',
'originalLanguage' => '<string>',
'projectName' => '<string>',
'webhookUrl' => '<string>',
'numberOfSpeakers' => '<string>',
'brandVocabulary' => '<string>',
'removeFillerWords' => true,
'sourceSrt' => '<string>',
'keepBackgroundMusic' => true,
'keepOriginalVoice' => true,
'originalVoiceVolume' => 123,
'voiceIsolatorOption' => '<string>',
'subtitles' => true,
'subtitlesSource' => '<string>',
'lipSyncMode' => '<string>',
'activeSpeakerDetectionEnabled' => true,
'lipsyncPro' => true,
'voiceMode' => '<string>',
'voiceId' => '<string>',
'voiceCloningSettings' => [
'stability' => 123,
'similarity' => 123,
'speakerBoost' => 123
],
'translationTimeSkips' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.voicecheap.ai/v1/translate"
payload := strings.NewReader("{\n \"targetLanguage\": \"<string>\",\n \"originalLanguage\": \"<string>\",\n \"projectName\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"numberOfSpeakers\": \"<string>\",\n \"brandVocabulary\": \"<string>\",\n \"removeFillerWords\": true,\n \"sourceSrt\": \"<string>\",\n \"keepBackgroundMusic\": true,\n \"keepOriginalVoice\": true,\n \"originalVoiceVolume\": 123,\n \"voiceIsolatorOption\": \"<string>\",\n \"subtitles\": true,\n \"subtitlesSource\": \"<string>\",\n \"lipSyncMode\": \"<string>\",\n \"activeSpeakerDetectionEnabled\": true,\n \"lipsyncPro\": true,\n \"voiceMode\": \"<string>\",\n \"voiceId\": \"<string>\",\n \"voiceCloningSettings\": {\n \"stability\": 123,\n \"similarity\": 123,\n \"speakerBoost\": 123\n },\n \"translationTimeSkips\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.voicecheap.ai/v1/translate")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"targetLanguage\": \"<string>\",\n \"originalLanguage\": \"<string>\",\n \"projectName\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"numberOfSpeakers\": \"<string>\",\n \"brandVocabulary\": \"<string>\",\n \"removeFillerWords\": true,\n \"sourceSrt\": \"<string>\",\n \"keepBackgroundMusic\": true,\n \"keepOriginalVoice\": true,\n \"originalVoiceVolume\": 123,\n \"voiceIsolatorOption\": \"<string>\",\n \"subtitles\": true,\n \"subtitlesSource\": \"<string>\",\n \"lipSyncMode\": \"<string>\",\n \"activeSpeakerDetectionEnabled\": true,\n \"lipsyncPro\": true,\n \"voiceMode\": \"<string>\",\n \"voiceId\": \"<string>\",\n \"voiceCloningSettings\": {\n \"stability\": 123,\n \"similarity\": 123,\n \"speakerBoost\": 123\n },\n \"translationTimeSkips\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.voicecheap.ai/v1/translate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"targetLanguage\": \"<string>\",\n \"originalLanguage\": \"<string>\",\n \"projectName\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"numberOfSpeakers\": \"<string>\",\n \"brandVocabulary\": \"<string>\",\n \"removeFillerWords\": true,\n \"sourceSrt\": \"<string>\",\n \"keepBackgroundMusic\": true,\n \"keepOriginalVoice\": true,\n \"originalVoiceVolume\": 123,\n \"voiceIsolatorOption\": \"<string>\",\n \"subtitles\": true,\n \"subtitlesSource\": \"<string>\",\n \"lipSyncMode\": \"<string>\",\n \"activeSpeakerDetectionEnabled\": true,\n \"lipsyncPro\": true,\n \"voiceMode\": \"<string>\",\n \"voiceId\": \"<string>\",\n \"voiceCloningSettings\": {\n \"stability\": 123,\n \"similarity\": 123,\n \"speakerBoost\": 123\n },\n \"translationTimeSkips\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"projectId": "<string>",
"estimatedDuration": 123
}Vertaling
Vertaling starten
Upload een video- of audiobestand en start een nieuw vertaalproject
Vertaling starten
curl --request POST \
--url https://api.voicecheap.ai/v1/translate \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"targetLanguage": "<string>",
"originalLanguage": "<string>",
"projectName": "<string>",
"webhookUrl": "<string>",
"numberOfSpeakers": "<string>",
"brandVocabulary": "<string>",
"removeFillerWords": true,
"sourceSrt": "<string>",
"keepBackgroundMusic": true,
"keepOriginalVoice": true,
"originalVoiceVolume": 123,
"voiceIsolatorOption": "<string>",
"subtitles": true,
"subtitlesSource": "<string>",
"lipSyncMode": "<string>",
"activeSpeakerDetectionEnabled": true,
"lipsyncPro": true,
"voiceMode": "<string>",
"voiceId": "<string>",
"voiceCloningSettings": {
"stability": 123,
"similarity": 123,
"speakerBoost": 123
},
"translationTimeSkips": "<string>"
}
'import requests
url = "https://api.voicecheap.ai/v1/translate"
payload = {
"targetLanguage": "<string>",
"originalLanguage": "<string>",
"projectName": "<string>",
"webhookUrl": "<string>",
"numberOfSpeakers": "<string>",
"brandVocabulary": "<string>",
"removeFillerWords": True,
"sourceSrt": "<string>",
"keepBackgroundMusic": True,
"keepOriginalVoice": True,
"originalVoiceVolume": 123,
"voiceIsolatorOption": "<string>",
"subtitles": True,
"subtitlesSource": "<string>",
"lipSyncMode": "<string>",
"activeSpeakerDetectionEnabled": True,
"lipsyncPro": True,
"voiceMode": "<string>",
"voiceId": "<string>",
"voiceCloningSettings": {
"stability": 123,
"similarity": 123,
"speakerBoost": 123
},
"translationTimeSkips": "<string>"
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
targetLanguage: '<string>',
originalLanguage: '<string>',
projectName: '<string>',
webhookUrl: '<string>',
numberOfSpeakers: '<string>',
brandVocabulary: '<string>',
removeFillerWords: true,
sourceSrt: '<string>',
keepBackgroundMusic: true,
keepOriginalVoice: true,
originalVoiceVolume: 123,
voiceIsolatorOption: '<string>',
subtitles: true,
subtitlesSource: '<string>',
lipSyncMode: '<string>',
activeSpeakerDetectionEnabled: true,
lipsyncPro: true,
voiceMode: '<string>',
voiceId: '<string>',
voiceCloningSettings: {stability: 123, similarity: 123, speakerBoost: 123},
translationTimeSkips: '<string>'
})
};
fetch('https://api.voicecheap.ai/v1/translate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.voicecheap.ai/v1/translate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'targetLanguage' => '<string>',
'originalLanguage' => '<string>',
'projectName' => '<string>',
'webhookUrl' => '<string>',
'numberOfSpeakers' => '<string>',
'brandVocabulary' => '<string>',
'removeFillerWords' => true,
'sourceSrt' => '<string>',
'keepBackgroundMusic' => true,
'keepOriginalVoice' => true,
'originalVoiceVolume' => 123,
'voiceIsolatorOption' => '<string>',
'subtitles' => true,
'subtitlesSource' => '<string>',
'lipSyncMode' => '<string>',
'activeSpeakerDetectionEnabled' => true,
'lipsyncPro' => true,
'voiceMode' => '<string>',
'voiceId' => '<string>',
'voiceCloningSettings' => [
'stability' => 123,
'similarity' => 123,
'speakerBoost' => 123
],
'translationTimeSkips' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.voicecheap.ai/v1/translate"
payload := strings.NewReader("{\n \"targetLanguage\": \"<string>\",\n \"originalLanguage\": \"<string>\",\n \"projectName\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"numberOfSpeakers\": \"<string>\",\n \"brandVocabulary\": \"<string>\",\n \"removeFillerWords\": true,\n \"sourceSrt\": \"<string>\",\n \"keepBackgroundMusic\": true,\n \"keepOriginalVoice\": true,\n \"originalVoiceVolume\": 123,\n \"voiceIsolatorOption\": \"<string>\",\n \"subtitles\": true,\n \"subtitlesSource\": \"<string>\",\n \"lipSyncMode\": \"<string>\",\n \"activeSpeakerDetectionEnabled\": true,\n \"lipsyncPro\": true,\n \"voiceMode\": \"<string>\",\n \"voiceId\": \"<string>\",\n \"voiceCloningSettings\": {\n \"stability\": 123,\n \"similarity\": 123,\n \"speakerBoost\": 123\n },\n \"translationTimeSkips\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.voicecheap.ai/v1/translate")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"targetLanguage\": \"<string>\",\n \"originalLanguage\": \"<string>\",\n \"projectName\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"numberOfSpeakers\": \"<string>\",\n \"brandVocabulary\": \"<string>\",\n \"removeFillerWords\": true,\n \"sourceSrt\": \"<string>\",\n \"keepBackgroundMusic\": true,\n \"keepOriginalVoice\": true,\n \"originalVoiceVolume\": 123,\n \"voiceIsolatorOption\": \"<string>\",\n \"subtitles\": true,\n \"subtitlesSource\": \"<string>\",\n \"lipSyncMode\": \"<string>\",\n \"activeSpeakerDetectionEnabled\": true,\n \"lipsyncPro\": true,\n \"voiceMode\": \"<string>\",\n \"voiceId\": \"<string>\",\n \"voiceCloningSettings\": {\n \"stability\": 123,\n \"similarity\": 123,\n \"speakerBoost\": 123\n },\n \"translationTimeSkips\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.voicecheap.ai/v1/translate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"targetLanguage\": \"<string>\",\n \"originalLanguage\": \"<string>\",\n \"projectName\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"numberOfSpeakers\": \"<string>\",\n \"brandVocabulary\": \"<string>\",\n \"removeFillerWords\": true,\n \"sourceSrt\": \"<string>\",\n \"keepBackgroundMusic\": true,\n \"keepOriginalVoice\": true,\n \"originalVoiceVolume\": 123,\n \"voiceIsolatorOption\": \"<string>\",\n \"subtitles\": true,\n \"subtitlesSource\": \"<string>\",\n \"lipSyncMode\": \"<string>\",\n \"activeSpeakerDetectionEnabled\": true,\n \"lipsyncPro\": true,\n \"voiceMode\": \"<string>\",\n \"voiceId\": \"<string>\",\n \"voiceCloningSettings\": {\n \"stability\": 123,\n \"similarity\": 123,\n \"speakerBoost\": 123\n },\n \"translationTimeSkips\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"projectId": "<string>",
"estimatedDuration": 123
}Vertaling starten
Maak een nieuw vertaalproject aan door een video- of audiobestand te uploaden. Het vertaalproces draait asynchroon op de achtergrond. Gebruik het status-eindpunt om de voortgang te volgen en resultaten op te halen. Gebruik Projectdetails ophalen wanneer u vertaalde versiegeschiedenis of lipsynchronisatie-geschiedenis nodig heeft.Gelijktijdigheidslimiet
U kunt maximaal 10 vertalingen tegelijk uitvoeren per account. Als er al 10 vertalingen bezig zijn, retourneren nieuwe verzoekenCONCURRENT_TRANSLATION_LIMIT_REACHED (HTTP 429).
Verzoek
Dit eindpunt accepteertmultipart/form-data met een bestandsupload.
Headers
string
vereist
Uw VoiceCheap API-sleutel. Verkrijg er een via app.voicecheap.ai/page-api.
Body-parameters
file
vereist
Het video- of audiobestand dat moet worden vertaald.Ondersteunde videoformaten:
video/mp4, video/quicktime, video/x-matroska, video/webm, video/mpegOndersteunde audioformaten: audio/mpeg, audio/wav, audio/mp4, audio/x-m4a, audio/flac, audio/ogg, audio/aac, audio/webmMaximale bestandsgrootte per abonnement: Beginner 5 GB, Starter 10 GB, Creator 20 GB, Pro 30 GB, Scale 40 GB en Enterprise 60 GB.string
vereist
De taal waarin de inhoud moet worden vertaald. Moet in kleine letters zijn.Toegestane waarden (70+):
afrikaans, albanian, amharic, arabic, armenian, assamese, azerbaijani, basque, belarusian, bengali, bosnian, bulgarian, catalan, croatian, czech, danish, dutch, english, british english, estonian, finnish, french, french canadian, galician, german, greek, gujarati, hebrew, hindi, hungarian, icelandic, indonesian, irish, italian, japanese, kannada, kazakh, khmer, korean, lao, latvian, lithuanian, macedonian, malay, malayalam, mandarin, marathi, mongolian, nepali, norwegian, persian, polish, portuguese, brazilian portuguese, punjabi, romanian, russian, serbian, slovak, slovenian, spanish, swahili, swedish, tagalog, tamil, telugu, thai, turkish, ukrainian, urdu, vietnamese, welsh, yoruba, zulustring
De brontaal van de inhoud met behulp van ISO-taalcodes (bijv. Standaard:
en, es, fr, de, ja, zh).Sterk aanbevolen: laat dit leeg voor automatische detectie.Geef deze parameter alleen op als u 100% zeker weet dat de taalcode correct is en in het juiste ISO-formaat staat. Onjuiste taalcodes leiden tot transcriptiefouten. Onze automatische detectie ondersteunt 80+ talen en is zeer nauwkeurig.
auto-detectstring
Een aangepaste naam voor het project. Handig voor het identificeren van projecten in uw dashboard.Standaard: De project-ID wordt gebruikt als er geen naam is opgegeven.
string
Een https-eindpunt dat de webhook-gebeurtenissen voor dit project ontvangt,
waarbij het eindpunt dat op uw account is geconfigureerd wordt overschreven.Standaard: Het webhook-eindpunt van het account, indien geconfigureerd.
string
auto-detect of een geheel getal van 1 tot 32. Een bekend aantal sprekers kan de diarizatie verbeteren.Standaard: auto-detectstring
Een JSON-stringarray van verzoekspecifieke namen, merken, acroniemen of specialistische termen. Deze termen worden samengevoegd met de opgeslagen woordenlijst van het account of team.
boolean
Verwijder veelvoorkomende stopwoorden uit de brontranscriptie vóór vertaling.Standaard:
truestring
Een bestaande SRT-transcriptie in de brontaal.
originalLanguage moet expliciet zijn wanneer dit veld wordt verstrekt.boolean
Of achtergrondaudio in de uitvoer moet worden behouden.Indien ingeschakeld, blijft achtergrondmuziek, ambiance, gelach, applaus en omgevingsgeluid behouden terwijl alleen de originele stem wordt verwijderd (stem-scheiding). Schakel dit uit als uw bron geen achtergrondaudio bevat.Standaard:
trueboolean
Houd de originele spreker zachtjes hoorbaar onder de vertaalde stem.Standaard:
falsenumber
Volume van de originele stem van
1 tot 70 wanneer keepOriginalVoice is ingeschakeld.Standaard: 30string
Stemisolatiemodus wanneer
Toegestane waarden:
keepBackgroundMusic is ingeschakeld. Regelt de kwaliteit en kenmerken van de stem-scheiding.Studio (Aanbevolen)
Studio (Aanbevolen)
Onze standaard stemverwerking, ontworpen voor professionele audiokwaliteit:
- Verwijdert echo’s en galm
- Reinigt technische onvolkomenheden
- Produceert een heldere en scherpe stem
Realistisch
Realistisch
Behoudt de natuurlijke kenmerken van de opnameomgeving:
- Behoudt een geluid dat dichter bij de originele opname ligt
- Behoudt omgevingskenmerken
Deze optie kan in sommige gevallen artefacten of onverwachte effecten creëren vanwege het behoud van achtergrondelementen.
studio, realisticStandaard: studioboolean
Of er ondertitels moeten worden gegenereerd voor de vertaalde video.Indien ingeschakeld, worden er strakke zwart-witte ondertitels in Netflix-stijl toegevoegd. Gebruik
subtitlesSource om te kiezen voor originele (brontaal) of vertaalde (doeltaal) tekst. Ondertitels worden automatisch gesynchroniseerd voor optimale leesbaarheid.Opmerking: Voor ingebrande ondertitels is FFmpeg met het subtitles-filter (libass) vereist. Indien niet beschikbaar, valt de API terug op het insluiten van een ondertiteltrack in plaats van hard-burned styling.Standaard: falsestring
Kies de bron voor de ondertitels wanneer
subtitles is ingeschakeld.Toegestane waarden: translated, originalStandaard: translatedOpmerking: Als original is geselecteerd maar de originele transcriptie niet beschikbaar is, vallen de ondertitels terug op translated.string
Activeer lipsynchronisatie-verwerking nadat de vertaling is voltooid.
standard= Lip Syncpro= Lip Sync Prostudio= Lip Sync Studio
boolean
Schakel detectie van de actieve spreker in voor de aangevraagde lipsynchronisatie.Standaard:
falseboolean
Verouderde lipsynchronisatie-selector behouden voor achterwaartse compatibiliteit.Standaard: niet ingeschakeld (laat het veld leeg om lipsynchronisatie over te slaan)Form-data: Verstuur booleaanse waarden als
false= Standaard lipsynchronisatie (4 minuten aan credits per 1 minuut video)true= Lip Sync Pro (9 minuten aan credits per 1 minuut video)
Maximale duur: 30 minuten per video.Latentie: Lipsynchronisatie-verwerking voegt doorgaans 2x-4x de oorspronkelijke videoduur toe.
E-mails over voltooiing en mislukking van lipsynchronisatie worden niet verzonden voor via de API geactiveerde verzoeken. Gebruik het status-endpoint om
de voortgang te volgen.
true of false strings (bijv. -F "lipsyncPro=false").Combineer
lipsyncPro niet met een tegenstrijdige lipSyncMode.string
Stemstrategie:
cloning of custom.Standaard: cloningstring
Vereist wanneer
voiceMode gelijk is aan custom. De stem moet toebehoren aan de effectieve projecteigenaar. Willekeurige of niet-toegekende stem-ID’s worden geweigerd.object
Verfijn de parameters voor stemklonen voor geavanceerde controle over de gegenereerde stem. Geef door als een JSON-string bij gebruik van form-data. Alle waarden moeten tussen 0 en 1 liggen (met een stap van 0,01).
Standaardwaarden (gebalanceerd):Aanbevolen om accentreproductie te vermijden:
Deze instellingen zijn alleen van toepassing wanneer
voiceMode gelijk is aan cloning.Tonen eigenschappen van voiceCloningSettings
Tonen eigenschappen van voiceCloningSettings
number
standaard:"0.60"
Stemstabiliteit (0,00 - 1,00)Bepaalt hoe stabiel de stem is en de willekeur tussen elke generatie.
- Lagere waarden staan een breder emotioneel bereik toe, maar kunnen vreemde of gehaaste spraak veroorzaken
- Hogere waarden produceren een consistentere output, maar kunnen monotoon klinken
0.60Tip: Gebruik 0.80 om accentreproductie te vermijdennumber
standaard:"0.85"
Stemgelijkenis (0,00 - 1,00)Bepaalt hoe nauw de AI de originele stem volgt.
- Hogere waarden maken de gekloonde stem meer gelijk aan het origineel
- Als de originele audio ruis bevat en de gelijkenis te hoog is, kunnen artefacten of achtergrondruis in de gegenereerde stem terechtkomen
0.85Tip: Gebruik 0.20 om accentreproductie te vermijdennumber
standaard:"0.60"
Speaker Boost (0,00 - 1,00)Verhoogt de gelijkenis met de oorspronkelijke spreker. Dit is een subtiele verbetering die de gelijkenis met de bronstem vergroot.Opmerking: Hogere waarden verhogen de rekentijd en latentie.Standaard:
0.60Tip: Gebruik 0.00 om accentreproductie te vermijden{
"stability": 0.6,
"similarity": 0.85,
"speakerBoost": 0.6
}
{
"stability": 0.8,
"similarity": 0.2,
"speakerBoost": 0.0
}
string
Een JSON-array van bron-tijdbereiken die in de oorspronkelijke taal moeten blijven.Tijdoverslaan vereist video-input en
[
{ "startTime": 10.2, "endTime": 12.8 }
]
keepBackgroundMusic=true. Ze kunnen niet worden gecombineerd met keepOriginalVoice en kunnen niet overlappen met transcriptsegmenten.Antwoord
boolean
vereist
Altijd
true voor succesvolle verzoekenstring
vereist
Een voor mensen leesbaar bericht dat het resultaat beschrijft
string
vereist
De unieke identificatiecode voor het gemaakte vertaalproject. Gebruik deze ID om de status te controleren.
number
vereist
Ruwe schatting van de verwerkingstijd in minuten. De huidige schatting is vijf minuten verwerkingstijd per gestarte minuut aan bronmedia.
Voorbeelden
Opgeslagen woordenlijst-regels en aangepaste vertaalinstructies van het actieve account of team worden automatisch toegepast.
curl -X POST https://api.voicecheap.ai/v1/translate \
-H "x-api-key: vc_your-api-key" \
-F "file=@video.mp4" \
-F "targetLanguage=spanish" \
-F "projectName=My Spanish Translation" \
-F "numberOfSpeakers=2" \
-F 'brandVocabulary=["VoiceCheap","SmartSync"]' \
-F "removeFillerWords=true" \
-F "keepBackgroundMusic=true" \
-F "keepOriginalVoice=false" \
-F "voiceIsolatorOption=studio" \
-F "subtitles=true" \
-F "subtitlesSource=translated" \
-F "lipSyncMode=standard" \
-F "activeSpeakerDetectionEnabled=true"
interface StartTranslationResponse {
success: boolean;
message: string;
projectId: string;
estimatedDuration: number;
}
interface VoiceCloningSettings {
stability: number; // 0.00 - 1.00
similarity: number; // 0.00 - 1.00
speakerBoost: number; // 0.00 - 1.00
}
interface StartTranslationRequest {
targetLanguage: string;
originalLanguage?: string;
projectName?: string;
numberOfSpeakers?: 'auto-detect' | string;
brandVocabulary?: string[];
removeFillerWords?: boolean;
keepBackgroundMusic?: boolean;
keepOriginalVoice?: boolean;
originalVoiceVolume?: number;
voiceMode?: 'cloning' | 'custom';
voiceId?: string;
voiceIsolatorOption?: 'studio' | 'realistic';
subtitles?: boolean;
subtitlesSource?: 'translated' | 'original';
lipSyncMode?: 'standard' | 'pro' | 'studio';
activeSpeakerDetectionEnabled?: boolean;
voiceCloningSettings?: VoiceCloningSettings;
translationTimeSkips?: Array<{ startTime: number; endTime: number }>;
}
async function startTranslation(
file: File,
targetLanguage: string,
options?: {
originalLanguage?: string;
projectName?: string;
numberOfSpeakers?: 'auto-detect' | string;
brandVocabulary?: string[];
removeFillerWords?: boolean;
keepBackgroundMusic?: boolean;
keepOriginalVoice?: boolean;
originalVoiceVolume?: number;
voiceMode?: 'cloning' | 'custom';
voiceId?: string;
voiceIsolatorOption?: 'studio' | 'realistic';
subtitles?: boolean;
subtitlesSource?: 'translated' | 'original';
lipSyncMode?: 'standard' | 'pro' | 'studio';
activeSpeakerDetectionEnabled?: boolean;
voiceCloningSettings?: VoiceCloningSettings;
translationTimeSkips?: Array<{ startTime: number; endTime: number }>;
},
): Promise<StartTranslationResponse> {
const formData = new FormData();
formData.append('file', file);
formData.append('targetLanguage', targetLanguage);
if (options?.projectName) {
formData.append('projectName', options.projectName);
}
if (options?.originalLanguage) {
formData.append('originalLanguage', options.originalLanguage);
}
if (options?.numberOfSpeakers) {
formData.append('numberOfSpeakers', options.numberOfSpeakers);
}
if (options?.brandVocabulary) {
formData.append('brandVocabulary', JSON.stringify(options.brandVocabulary));
}
if (options?.removeFillerWords !== undefined) {
formData.append('removeFillerWords', String(options.removeFillerWords));
}
if (options?.keepBackgroundMusic !== undefined) {
formData.append('keepBackgroundMusic', String(options.keepBackgroundMusic));
}
if (options?.keepOriginalVoice !== undefined) {
formData.append('keepOriginalVoice', String(options.keepOriginalVoice));
}
if (options?.originalVoiceVolume !== undefined) {
formData.append('originalVoiceVolume', String(options.originalVoiceVolume));
}
if (options?.voiceMode) {
formData.append('voiceMode', options.voiceMode);
}
if (options?.voiceId) {
formData.append('voiceId', options.voiceId);
}
if (options?.voiceIsolatorOption) {
formData.append('voiceIsolatorOption', options.voiceIsolatorOption);
}
if (options?.subtitles !== undefined) {
formData.append('subtitles', String(options.subtitles));
}
if (options?.subtitlesSource) {
formData.append('subtitlesSource', options.subtitlesSource);
}
if (options?.lipSyncMode) {
formData.append('lipSyncMode', options.lipSyncMode);
}
if (options?.activeSpeakerDetectionEnabled !== undefined) {
formData.append('activeSpeakerDetectionEnabled', String(options.activeSpeakerDetectionEnabled));
}
if (options?.voiceCloningSettings) {
formData.append('voiceCloningSettings', JSON.stringify(options.voiceCloningSettings));
}
if (options?.translationTimeSkips) {
formData.append('translationTimeSkips', JSON.stringify(options.translationTimeSkips));
}
const response = await fetch('https://api.voicecheap.ai/v1/translate', {
method: 'POST',
headers: {
'x-api-key': 'vc_your-api-key',
},
body: formData,
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.message || 'Translation failed');
}
return response.json();
}
// Usage example
const file = document.querySelector<HTMLInputElement>('#fileInput')?.files?.[0];
if (file) {
const result = await startTranslation(file, 'spanish', {
projectName: 'My Spanish Translation',
keepBackgroundMusic: true,
voiceIsolatorOption: 'studio',
subtitles: true,
subtitlesSource: 'translated',
voiceCloningSettings: {
stability: 0.6,
similarity: 0.85,
speakerBoost: 0.6,
},
});
console.log('Project ID:', result.projectId);
}
const formData = new FormData();
formData.append('file', videoFile);
formData.append('targetLanguage', 'spanish');
formData.append('projectName', 'My Spanish Translation');
formData.append('keepBackgroundMusic', 'true');
formData.append('voiceIsolatorOption', 'studio');
formData.append('subtitles', 'true');
formData.append('subtitlesSource', 'translated');
formData.append(
'voiceCloningSettings',
JSON.stringify({
stability: 0.6,
similarity: 0.85,
speakerBoost: 0.6,
}),
);
const response = await fetch('https://api.voicecheap.ai/v1/translate', {
method: 'POST',
headers: {
'x-api-key': 'vc_your-api-key',
},
body: formData,
});
const data = await response.json();
console.log('Project ID:', data.projectId);
import requests
import json
files = {'file': open('video.mp4', 'rb')}
data = {
'targetLanguage': 'spanish',
'projectName': 'My Spanish Translation',
'keepBackgroundMusic': 'true',
'voiceIsolatorOption': 'studio',
'subtitles': 'true',
'subtitlesSource': 'translated',
'voiceCloningSettings': json.dumps({
'stability': 0.60,
'similarity': 0.85,
'speakerBoost': 0.60
})
}
headers = {'x-api-key': 'vc_your-api-key'}
response = requests.post(
'https://api.voicecheap.ai/v1/translate',
headers=headers,
files=files,
data=data
)
result = response.json()
print(f"Project ID: {result['projectId']}")
<?php
$curl = curl_init();
$voiceCloningSettings = json_encode([
'stability' => 0.60,
'similarity' => 0.85,
'speakerBoost' => 0.60
]);
$postFields = [
'file' => new CURLFile('video.mp4'),
'targetLanguage' => 'spanish',
'projectName' => 'My Spanish Translation',
'keepBackgroundMusic' => 'true',
'voiceIsolatorOption' => 'studio',
'subtitles' => 'true',
'subtitlesSource' => 'translated',
'voiceCloningSettings' => $voiceCloningSettings
];
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.voicecheap.ai/v1/translate',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postFields,
CURLOPT_HTTPHEADER => [
'x-api-key: vc_your-api-key'
]
]);
$response = curl_exec($curl);
$result = json_decode($response, true);
echo "Project ID: " . $result['projectId'];
Reactievoorbeeld
{
"success": true,
"message": "Translation started successfully. Use the status endpoint to track progress.",
"projectId": "abc123-def456-ghi789",
"estimatedDuration": 15
}
Fouten
| Status | Code | Beschrijving |
|---|---|---|
| 400 | FILE_REQUIRED | Er is geen bestand geüpload bij het verzoek |
| 400 | INVALID_FILE_TYPE | Het geüploade bestandstype wordt niet ondersteund |
| 400 | DURATION_DETECTION_FAILED | Kon de duur van het geüploade bestand niet detecteren |
| 400 | INVALID_MULTIPART_REQUEST | Multipart form data is onjuist geformatteerd of overschrijdt de veldlimieten |
| 400 | INVALID_BOOLEAN_VALUE | Een booleaanse parameter heeft een ongeldige waarde (gebruik “true” of “false”) |
| 400 | INVALID_JSON_FORMAT | De voiceCloningSettings JSON is onjuist geformatteerd |
| 400 | INVALID_BRAND_VOCABULARY | Een verzoekspecifieke woordenlijst-invoer is ongeldig |
| 400 | INVALID_SOURCE_SRT | De aangeleverde bron-SRT is onjuist geformatteerd |
| 400 | SOURCE_LANGUAGE_REQUIRED_FOR_SRT | sourceSrt vereist een expliciete originalLanguage |
| 400 | VOICE_ID_REQUIRED | De modus voor aangepaste stemmen werd geselecteerd zonder een stem-ID |
| 400 | VOICE_ID_NOT_ALLOWED_WITH_CLONING | Een stem-ID werd gecombineerd met stemklonen |
| 400 | VOICE_CLONING_SETTINGS_NOT_ALLOWED | Klooninstellingen werden gecombineerd met de modus voor aangepaste stemmen |
| 400 | CONFLICTING_LIPSYNC_OPTIONS | lipSyncMode conflicteert met de verouderde lipsyncPro |
| 400 | TRANSLATION_TIME_SKIP_CONFLICT | Tijdoverslaan conflicteert met een andere audio-optie |
| 400 | TRANSLATION_TIME_SKIP_REQUIRES_BACKGROUND | Tijdoverslaan vereist achtergrondaudio |
| 400 | TRANSLATION_TIME_SKIP_OUT_OF_RANGE | Een tijdoverslag valt buiten de mediaduur |
| 400 | INVALID_TRANSLATION_TIME_SKIPS | Een tijdoverslag overlapt een transcriptiesegment |
| 400 | SUBTITLES_NOT_AVAILABLE_FOR_AUDIO | Ingebrande ondertitels werden aangevraagd voor audio-input |
| 400 | LIPSYNC_NOT_AVAILABLE_FOR_AUDIO | Lipsynchronisatie werd aangevraagd voor audio-input |
| 400 | TRANSLATION_TIME_SKIP_NOT_AVAILABLE_FOR_AUDIO | Tijdoverslaan werd aangevraagd voor audio-input |
| 400 | LIPSYNC_VIDEO_TOO_LONG | Lipsynchronisatie werd aangevraagd voor media die langer is dan de ondersteunde duur |
| 413 | FILE_TOO_LARGE | Het geüploade bestand overschrijdt de limiet van het abonnement van de gebruiker |
| 401 | MISSING_API_KEY | API-sleutel is vereist |
| 401 | INVALID_API_KEY_FORMAT | API-sleutel moet beginnen met vc_ |
| 401 | INVALID_API_KEY | De verstrekte API-sleutel is ongeldig |
| 403 | API_ACCESS_REQUIRED | API-toegang is vereist voor dit account |
| 403 | SUBSCRIPTION_REQUIRED | API-toegang vereist een betaald abonnement |
| 403 | INSUFFICIENT_CREDITS | Niet genoeg credits om dit bestand te verwerken |
| 403 | CUSTOM_VOICE_ACCESS_DENIED | De aangepaste stem is niet eigendom van de effectieve projecteigenaar |
| 403 | LIPSYNC_MODE_ACCESS_DENIED | De premium lipsynchronisatie-modus is niet beschikbaar in het huidige abonnement |
| 429 | RATE_LIMIT_EXCEEDED | Te veel verzoeken (limiet: 10 verzoeken per minuut) |
| 429 | CONCURRENT_TRANSLATION_LIMIT_REACHED | Te veel vertalingen in uitvoering (limiet: 10 gelijktijdige vertalingen) |
Was deze pagina nuttig?

