Übersetzung 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
}Übersetzung
Übersetzung starten
Laden Sie eine Video- oder Audiodatei hoch und starten Sie ein neues Übersetzungsprojekt
Übersetzung 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
}Übersetzung starten
Erstellen Sie ein neues Übersetzungsprojekt durch Hochladen einer Video- oder Audiodatei. Der Übersetzungsprozess läuft asynchron im Hintergrund. Verwenden Sie den Status-Endpunkt, um den Fortschritt zu verfolgen und Ergebnisse abzurufen. Verwenden Sie Projektdetails abrufen, wenn Sie eine übersetzte Versionshistorie oder Lippensynchronisationshistorie benötigen.Gleichzeitige Ausführungsgrenze
Sie können bis zu 10 Übersetzungen gleichzeitig pro Konto ausführen. Wenn bereits 10 Übersetzungen laufen, geben neue AnfragenCONCURRENT_TRANSLATION_LIMIT_REACHED (HTTP 429) zurück.
Anfrage
Dieser Endpunkt akzeptiertmultipart/form-data mit einem Datei-Upload.
Header
string
erforderlich
Ihr VoiceCheap API-Schlüssel. Erhalten Sie einen von app.voicecheap.ai/page-api.
Body-Parameter
file
erforderlich
Die zu übersetzende Video- oder Audiodatei.Unterstützte Videoformate:
video/mp4, video/quicktime, video/x-matroska, video/webm, video/mpegUnterstützte Audioformate: audio/mpeg, audio/wav, audio/mp4, audio/x-m4a, audio/flac, audio/ogg, audio/aac, audio/webmMaximale Dateigröße nach Plan: Beginner 5 GB, Starter 10 GB, Creator 20 GB, Pro 30 GB, Scale 40 GB und Enterprise 60 GB.string
erforderlich
Die Sprache, in die der Inhalt übersetzt werden soll. Muss kleingeschrieben sein.Zulässige Werte (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
Die Quellsprache des Inhalts unter Verwendung von ISO-Sprachcodes (z. B. Standard:
en, es, fr, de, ja, zh).Dringend empfohlen: Lassen Sie dies für die automatische Erkennung leer.Geben Sie diesen Parameter nur an, wenn Sie zu 100 % sicher sind, dass der Sprachcode korrekt ist und im gültigen ISO-Format vorliegt. Falsche Sprachcodes führen zu Transkriptionsfehlern. Unsere automatische Erkennung unterstützt über 80 Sprachen und ist hochpräzise.
auto-detectstring
Ein benutzerdefinierter Name für das Projekt. Nützlich zur Identifizierung von Projekten in Ihrem Dashboard.Standard: Die Projekt-ID wird verwendet, falls keine Angabe gemacht wird.
string
Ein https-Endpunkt, der die Webhook-Ereignisse für dieses Projekt empfängt,
und den für Ihr Konto konfigurierten Endpunkt überschreibt.Standard: Der Webhook-Endpunkt des Kontos, sofern einer konfiguriert ist.
string
auto-detect oder eine Ganzzahl von 1 bis 32. Eine bekannte Sprecheranzahl kann die Diarisierung verbessern.Standard: auto-detectstring
Ein JSON-String-Array von anfragespezifischen Namen, Marken, Akronymen oder Fachbegriffen. Diese Begriffe werden mit dem gespeicherten Konto- oder Team-Glossar zusammengeführt.
boolean
Entfernen Sie häufige Füllwörter aus dem Quelltranskript vor der Übersetzung.Standard:
truestring
Ein vorhandenes SRT-Transkript in der Quellsprache.
originalLanguage muss explizit angegeben werden, wenn dieses Feld bereitgestellt wird.boolean
Ob das Hintergrundaudio in der Ausgabe beibehalten werden soll.Wenn aktiviert, bleiben Hintergrundmusik, Umgebungsgeräusche, Lachen, Klatschen und Publikumsgeräusche erhalten, während nur die Originalstimme entfernt wird (Stems-Trennung). Deaktivieren Sie dies, wenn Ihre Quelle kein Hintergrundaudio enthält.Standard:
trueboolean
Behalten Sie den ursprünglichen Sprecher leise unter der übersetzten Stimme bei.Standard:
falsenumber
Lautstärke der Originalstimme von
1 bis 70, wenn keepOriginalVoice aktiviert ist.Standard: 30string
Stimmisolationsmodus, wenn
Zulässige Werte:
keepBackgroundMusic aktiviert ist. Steuert die Qualität und Eigenschaften der Stimmtrennung.Studio (Empfohlen)
Studio (Empfohlen)
Unsere Standard-Stimmverarbeitung, entwickelt für professionelle Audioqualität:
- Entfernt Echos und Nachhall
- Bereinigt technische Unvollkommenheiten
- Erzeugt eine klare und deutliche Stimme
Realistisch
Realistisch
Bewahrt die natürlichen Eigenschaften der Aufnahmeumgebung:
- Behält einen Klang bei, der der Originalaufnahme näher kommt
- Bewahrt Umgebungseigenschaften
Diese Option kann in einigen Fällen aufgrund der Bewahrung von Hintergrundelementen Artefakte oder unerwartete Effekte erzeugen.
studio, realisticStandard: studioboolean
Ob Untertitel für das übersetzte Video generiert werden sollen.Wenn aktiviert, werden saubere Untertitel im Netflix-Stil in Schwarz-Weiß hinzugefügt. Verwenden Sie
subtitlesSource, um zwischen Originaltext (Quellsprache) oder übersetztem Text (Zielsprache) zu wählen. Untertitel werden automatisch für optimale Lesbarkeit synchronisiert.Hinweis: Eingebrannte Untertitel erfordern FFmpeg mit dem subtitles-Filter (libass). Falls nicht verfügbar, greift die API stattdessen auf das Einbetten einer Untertitelspur zurück, anstatt ein fest eingebranntes Styling zu verwenden.Standard: falsestring
Wählen Sie die Untertitel-Textquelle, wenn
subtitles aktiviert ist.Zulässige Werte: translated, originalStandard: translatedHinweis: Wenn original ausgewählt ist, aber die ursprüngliche Transkription nicht verfügbar ist, greifen die Untertitel auf translated zurück.string
Löst die Lippensynchronisation-Verarbeitung nach Abschluss der Synchronisation aus.
standard= Lip Syncpro= Lip Sync Prostudio= Lip Sync Studio
boolean
Aktivieren Sie die Erkennung aktiver Sprecher für den angeforderten Lippensynchronisation-Durchlauf.Standard:
falseboolean
Legacy-Lippensynchronisation-Auswahl für Abwärtskompatibilität beibehalten.Standard: nicht aktiviert (lassen Sie das Feld weg, um die Lippensynchronisation zu überspringen)Form-data: Senden Sie boolesche Werte als
false= Standard-Lippensynchronisation (4 Minuten Guthaben pro 1 Minute Video)true= Lip Sync Pro (9 Minuten Guthaben pro 1 Minute Video)
Maximale Dauer: 30 Minuten pro Video.Latenz: Die Lippensynchronisation-Verarbeitung fügt normalerweise das 2- bis 4-fache der ursprünglichen Videodauer hinzu.
E-Mails zum Abschluss oder Fehler der Lippensynchronisation werden für API-ausgelöste Anfragen nicht gesendet. Verwenden Sie den Status-Endpunkt, um
den Fortschritt zu verfolgen.
true- oder false-Strings (z. B. -F "lipsyncPro=false").Kombinieren Sie
lipsyncPro nicht mit einem widersprüchlichen lipSyncMode.string
Sprachstrategie:
cloning oder custom.Standard: cloningstring
Erforderlich, wenn
voiceMode auf custom gesetzt ist. Die Stimme muss dem effektiven Projektinhaber gehören. Beliebige oder nicht zugeordnete Sprach-IDs werden abgelehnt.object
Feinabstimmung der Parameter für das Stimmklonen für eine erweiterte Kontrolle über die generierte Stimme. Übergeben Sie dies als JSON-String bei Verwendung von form-data. Alle Werte müssen zwischen 0 und 1 liegen (mit einer Schrittweite von 0,01).
Standardwerte (ausgewogen):Empfohlen zur Vermeidung der Wiedergabe von Akzenten:
Diese Einstellungen gelten nur, wenn
voiceMode auf cloning gesetzt ist.Anzeigen Eigenschaften der Stimmklonen-Einstellungen
Anzeigen Eigenschaften der Stimmklonen-Einstellungen
number
Standard:"0.60"
Stimmstabilität (0,00 - 1,00)Bestimmt, wie stabil die Stimme ist und die Zufälligkeit zwischen jeder Generierung.
- Niedrigere Werte ermöglichen eine größere emotionale Bandbreite, können aber zu seltsamer oder gehetzter Sprache führen
- Höhere Werte erzeugen ein konsistenteres Ergebnis, können aber monoton klingen
0.60Tipp: Um die Wiedergabe von Akzenten zu vermeiden, verwenden Sie 0.80number
Standard:"0.85"
Stimmähnlichkeit (0,00 - 1,00)Steuert, wie genau die KI an der Originalstimme festhält.
- Höhere Werte machen die geklonte Stimme ähnlicher zum Original
- Wenn das Originalaudio verrauscht ist und die Ähnlichkeit zu hoch eingestellt ist, können Artefakte oder Hintergrundgeräusche in die generierte Stimme übertragen werden
0.85Tipp: Um die Wiedergabe von Akzenten zu vermeiden, verwenden Sie 0.20number
Standard:"0.60"
Sprecherverstärkung (0,00 - 1,00)Verstärkt die Ähnlichkeit zum ursprünglichen Sprecher. Dies ist eine subtile Verbesserung, die die Ähnlichkeit zur Quellstimme erhöht.Hinweis: Höhere Werte erhöhen die Rechenzeit und Latenz.Standard:
0.60Tipp: Um die Wiedergabe von Akzenten zu vermeiden, verwenden Sie 0.00{
"stability": 0.6,
"similarity": 0.85,
"speakerBoost": 0.6
}
{
"stability": 0.8,
"similarity": 0.2,
"speakerBoost": 0.0
}
string
Ein JSON-Array von Quellzeitbereichen, die in der Originalsprache verbleiben sollten.Zeitübersprünge erfordern Videoeingabe und
[
{ "startTime": 10.2, "endTime": 12.8 }
]
keepBackgroundMusic=true. Sie können nicht mit keepOriginalVoice kombiniert werden und dürfen sich nicht mit Transkriptsegmenten überschneiden.Antwort
boolean
erforderlich
Immer
true bei erfolgreichen Anfragenstring
erforderlich
Eine für Menschen lesbare Nachricht, die das Ergebnis beschreibt
string
erforderlich
Die eindeutige Kennung für das erstellte Synchronisationsprojekt. Verwenden Sie diese ID, um den Status zu überprüfen.
number
erforderlich
Grobe Verarbeitungsschätzung in Minuten. Die aktuelle Schätzung liegt bei fünf Minuten Verarbeitungszeit pro begonnener Minute Quellmedium.
Beispiele
Gespeicherte Glossar-Regeln und benutzerdefinierte Synchronisationsanweisungen des aktiven Kontos oder Teams werden automatisch angewendet.
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'];
Antwortbeispiel
{
"success": true,
"message": "Translation started successfully. Use the status endpoint to track progress.",
"projectId": "abc123-def456-ghi789",
"estimatedDuration": 15
}
Fehler
| Status | Code | Beschreibung |
|---|---|---|
| 400 | FILE_REQUIRED | Es wurde keine Datei mit der Anfrage hochgeladen |
| 400 | INVALID_FILE_TYPE | Der hochgeladene Dateityp wird nicht unterstützt |
| 400 | DURATION_DETECTION_FAILED | Die Dauer der hochgeladenen Datei konnte nicht ermittelt werden |
| 400 | INVALID_MULTIPART_REQUEST | Multipart-Formulardaten sind fehlerhaft oder überschreiten Feldgrenzen |
| 400 | INVALID_BOOLEAN_VALUE | Ein boolescher Parameter hat einen ungültigen Wert (verwenden Sie “true” oder “false”) |
| 400 | INVALID_JSON_FORMAT | Das voiceCloningSettings JSON ist fehlerhaft |
| 400 | INVALID_BRAND_VOCABULARY | Ein anfragespezifischer Glossar-Eintrag ist ungültig |
| 400 | INVALID_SOURCE_SRT | Die bereitgestellte Quell-SRT ist fehlerhaft |
| 400 | SOURCE_LANGUAGE_REQUIRED_FOR_SRT | sourceSrt erfordert eine explizite originalLanguage |
| 400 | VOICE_ID_REQUIRED | Der Modus für benutzerdefinierte Stimmen wurde ohne eine Stimmen-ID ausgewählt |
| 400 | VOICE_ID_NOT_ALLOWED_WITH_CLONING | Eine Stimmen-ID wurde mit Stimmklonen kombiniert |
| 400 | VOICE_CLONING_SETTINGS_NOT_ALLOWED | Klon-Einstellungen wurden mit dem Modus für benutzerdefinierte Stimmen kombiniert |
| 400 | CONFLICTING_LIPSYNC_OPTIONS | lipSyncMode steht im Konflikt mit dem veralteten lipsyncPro |
| 400 | TRANSLATION_TIME_SKIP_CONFLICT | Zeitübersprünge stehen im Konflikt mit einer anderen Audio-Option |
| 400 | TRANSLATION_TIME_SKIP_REQUIRES_BACKGROUND | Zeitübersprünge erfordern Hintergrundaudio |
| 400 | TRANSLATION_TIME_SKIP_OUT_OF_RANGE | Ein Zeitübersprung reicht über die Mediendauer hinaus |
| 400 | INVALID_TRANSLATION_TIME_SKIPS | Ein Zeitübersprung überschneidet sich mit einem Transkriptionssegment |
| 400 | SUBTITLES_NOT_AVAILABLE_FOR_AUDIO | Eingebrannte Untertitel wurden für Audio-Input angefordert |
| 400 | LIPSYNC_NOT_AVAILABLE_FOR_AUDIO | Lippensynchronisation wurde für Audio-Input angefordert |
| 400 | TRANSLATION_TIME_SKIP_NOT_AVAILABLE_FOR_AUDIO | Zeitübersprünge wurden für Audio-Input angefordert |
| 400 | LIPSYNC_VIDEO_TOO_LONG | Lippensynchronisation wurde für Medien angefordert, die länger als die unterstützte Dauer sind |
| 413 | FILE_TOO_LARGE | Die hochgeladene Datei überschreitet das Plan-Limit des Benutzers |
| 401 | MISSING_API_KEY | API-Schlüssel ist erforderlich |
| 401 | INVALID_API_KEY_FORMAT | API-Schlüssel muss mit vc_ beginnen |
| 401 | INVALID_API_KEY | Der bereitgestellte API-Schlüssel ist ungültig |
| 403 | API_ACCESS_REQUIRED | API-Zugriff ist für dieses Konto erforderlich |
| 403 | SUBSCRIPTION_REQUIRED | API-Zugriff erfordert ein kostenpflichtiges Abonnement |
| 403 | INSUFFICIENT_CREDITS | Nicht genügend Credits, um diese Datei zu verarbeiten |
| 403 | CUSTOM_VOICE_ACCESS_DENIED | Die benutzerdefinierte Stimme gehört nicht dem effektiven Projekteigentümer |
| 403 | LIPSYNC_MODE_ACCESS_DENIED | Der Premium-Lippensynchronisationsmodus ist im aktuellen Plan nicht verfügbar |
| 429 | RATE_LIMIT_EXCEEDED | Zu viele Anfragen (Limit: 10 Anfragen pro Minute) |
| 429 | CONCURRENT_TRANSLATION_LIMIT_REACHED | Zu viele Synchronisationen in Bearbeitung (Limit: 10 gleichzeitige Synchronisationen) |
War diese Seite hilfreich?

