Skip to main content
Dubbing projektu

Dubbing projektu

Wygeneruj głosy i zmiksuj wynik istniejącego projektu na podstawie przetłumaczonego SRT, który podajesz. VoiceCheap nic nie tłumaczy na tym endpoincie: bez silnika tłumaczenia, bez przeredagowania SmartSync i bez glosariusza. Każdy cue jest odczytywany dosłownie na pasującym segmencie transkrypcji projektu, a następnie miksowany z oryginalnym tłem, napisami i opcjonalną synchronizacją ruchu warg, tak jak zwykłe tłumaczenie. Użyj go, gdy tłumaczenie powstaje gdzie indziej (tłumacz, własne narzędzia, przepływ automatyzacji), a VoiceCheap ma tylko wygenerować głosy. Przebieg jest asynchroniczny: odpytuj Pobierz status tłumaczenia albo nasłuchuj Webhooki.

Wymagania wstępne

  • Projekt musi istnieć, a jego transkrypcja musi być ukończona: utwórz go przez Utwórz projekt (sama transkrypcja) albo Rozpocznij tłumaczenie i poczekaj na transcriptionStatus: "success".
  • SRT musi pokrywać transkrypcję projektu: każdy segment potrzebuje co najmniej jednego cue, a każdy cue musi przypadać na segment. Wyeksportuj transkrypcję przez Eksportuj transkrypcję projektu i przetłumacz ją cue po cue, aby zachować kody czasu.
  • Żądanie jest rozliczane jak tłumaczenie tego samego materiału, z tym samym sprawdzeniem kredytów. Tryby synchronizacji ust zużywają jak zwykle dodatkowe kredyty.

Limit współbieżności

Tworzenie projektów, tłumaczenie i dubbing sprawdzają limit aktywnych tłumaczeń na koncie (najwyżej 10, ewentualnie mniej). Miejsca zajmują tylko trwające tłumaczenia lub dubbingi; projekty obejmujące wyłącznie transkrypcję ich nie zajmują. Po osiągnięciu limitu API zwraca CONCURRENT_TRANSLATION_LIMIT_REACHED (HTTP 429). Obowiązujący limit znajduje się w details.limit. Druga operacja dla tego samego projektu i języka docelowego również jest odrzucana, gdy pierwsza trwa (TRANSLATION_ALREADY_IN_PROGRESS, HTTP 409).

Żądanie

Ten endpoint przyjmuje treść JSON (Content-Type: application/json). Opcje logiczne i liczbowe są wysyłane jako wartości JSON, a nie jako ciągi znaków.

Nagłówki

string
wymagane
Twój klucz API VoiceCheap. Pobierz go z app.voicecheap.ai/page-api.

Parametry ścieżki

string
wymagane
Identyfikator projektu zwracany przez Utwórz projekt lub Rozpocznij tłumaczenie.

Parametry treści

string
wymagane
Język translatedSrt, małymi literami, z tej samej listy co Rozpocznij tłumaczenie. Jeśli projekt nie ma jeszcze pracy dla tego języka, zostanie ona utworzona, a język dodany do projektu.
string
wymagane
Końcowa treść SRT w języku docelowym (numer cue, linia czasu, tekst). Maksymalnie 1 000 000 znaków. Cue są dopasowywane do segmentów transkrypcji po znacznikach czasu: cue zaczynający się w ciągu 50 ms od początku segmentu jest przypisywany do tego segmentu, w przeciwnym razie do segmentu o największym nakładaniu. Kilka cue na jednym segmencie jest łączonych spacją. Czas, mówca i kolejność każdego odczytanego segmentu zawsze pochodzą z transkrypcji projektu; Twoje kody czasu służą tylko do dopasowania.
string
Endpoint https, który od tej chwili odbiera zdarzenia webhook tego projektu i zastępuje endpoint skonfigurowany na koncie.Domyślnie: Endpoint już zapisany w projekcie, a następnie endpoint webhook konta.
boolean
Zachowaj oryginalne tło audio (muzyka, otoczenie) pod wygenerowanymi głosami.Domyślnie: true
boolean
Zachowaj cicho oryginalnego mówcę pod wygenerowanym głosem.Domyślnie: false
number
Głośność oryginalnego głosu od 1 do 70, gdy keepOriginalVoice jest włączone.Domyślnie: 30
string
Strategia głosu: cloning (klonowanie głosów mówców projektu) lub custom (użycie głosu z katalogu albo własnego zapisanego głosu niestandardowego).Domyślnie: cloning
string
Wymagane, gdy voiceMode ma wartość custom. Użyj identyfikatora z dubbing_voices_list: głosu z katalogu lub głosu niestandardowego zapisanego przez uwierzytelnione konto. Rozliczanie zespołowe nie daje dostępu do głosów zapisanych przez innych członków.
string
Tryb izolacji głosu, gdy keepBackgroundMusic jest włączone: studio albo realistic.Domyślnie: studio
boolean
Wypal napisy w wideo wynikowym. Wymaga projektu wideo.Domyślnie: false
string
Tekst napisów, gdy subtitles jest włączone: translated (Twój SRT) albo original (transkrypcja źródłowa).Domyślnie: translated
string
Uruchom synchronizację ust, gdy dubbing będzie gotowy: standard, pro albo studio. Zasady planu, czasu trwania i kredytów są takie same jak w Rozpocznij tłumaczenie. Wymaga projektu wideo.Domyślnie: pomiń pole, aby nie uruchamiać synchronizacji ust.
boolean
Włącz wykrywanie aktywnego mówcy dla żądanej synchronizacji ust.Domyślnie: false
object
Dostrajanie klonowania głosu jako obiekt JSON z stability i similarity między 0 a 1. Tylko z voiceMode: "cloning". Objaśnienie każdej wartości jest w Rozpocznij tłumaczenie.
array
Zakresy czasu źródła, które zostają w języku oryginalnym, jako [{ "startTime": 10.2, "endTime": 12.8 }]. Wymaga projektu wideo i keepBackgroundMusic: true, nie można łączyć z keepOriginalVoice i nie może nachodzić na segmenty transkrypcji.

Odpowiedź

boolean
wymagane
Zawsze true dla udanych żądań.
string
wymagane
Czytelne potwierdzenie.
string
wymagane
Projekt, który jest dubbingowany.
string
wymagane
Praca tłumaczenia użyta dla targetLanguage. Odpowiada workId w endpointach statusu, szczegółów i transkrypcji.
number
wymagane
Przybliżony szacunek przetwarzania w minutach: pięć minut przetwarzania na każdą rozpoczętą minutę materiału źródłowego.
Response

Śledzenie przebiegu

Projekt przechodzi do przepływu translation, gdy tylko zaczyna się dubbing, więc Pobierz status tłumaczenia śledzi nowe uruchomienie: status przechodzi z processing do success (z translatedVideoUrl i translatedAudioUrl) albo failed (z error). Webhooki project.translation.completed i project.translation.failed są wysyłane z tym samym targetLanguage. W Pobierz szczegóły projektu przetłumaczona wersja zgłasza settings.dubbingMode: "dub-only" i settings.smartSync: false. Błędy dopasowania pojawiają się po przyjęciu żądania POST. Endpoint statusu zwraca status: "failed" z error.code i error.message; webhook project.translation.failed zawiera ten sam kod i komunikat. Przy TRANSLATED_SRT_UNMATCHED_CUES numery niedopasowanych cue znajdują się w komunikacie, a przy TRANSLATED_SRT_MISSING_SEGMENTS — indeksy segmentów bez cue. Te odpowiedzi asynchroniczne nie zawierają ustrukturyzowanego pola details. Popraw SRT i ponownie wywołaj endpoint: nieudana wersja pozostanie w historii projektu, a zostanie utworzona nowa.

Sprawdzanie tempa

Wyeksportuj przetłumaczoną transkrypcję jako JSON przez Eksportuj transkrypcję projektu. Każdy segment ma finalSpeedFactor, czyli stosunek wygenerowanej mowy do okna segmentu. Skróć cue powyżej około 1.3, a potem uruchom dubbing ponownie z poprawionym SRT.

Przykładowy przebieg

Typowa automatyzacja (na przykład scenariusz n8n lub Make) łączy endpointy w następujący sposób:
  1. POST /v1/projects z materiałem, targetLanguage i jawnym originalLanguage (sama transkrypcja).
  2. Odpytuj GET /v1/translate/{projectId}/status, aż transcriptionStatus będzie success, albo poczekaj na webhook project.created.
  3. POST /v1/projects/{projectId}/transcript z { "source": "original", "outputFormat": "srt" } i przetłumacz cue, zachowując numerację i kody czasu.
  4. POST /v1/projects/{projectId}/dub z przetłumaczonym SRT.
  5. Odpytuj endpoint statusu, aż status będzie success, albo poczekaj na project.translation.completed.
  6. Pobierz translatedVideoUrl (albo lipSync.videoUrl, jeśli zażądano synchronizacji ust).
  7. DELETE /v1/translate/{projectId}, gdy wyniki są już zapisane po Twojej stronie.

Błędy

Błędy dopasowania wykryte w trakcie uruchomienia (TRANSLATED_SRT_UNMATCHED_CUES, TRANSLATED_SRT_MISSING_SEGMENTS) zwracają endpoint statusu i webhook niepowodzenia, a nie to żądanie.