Użyj własnej transkrypcji

Utwórz projekt dubbingu z własnej transkrypcji i dodaj własne tłumaczenia.

Poradnik · Zakłada, że wiesz, jak tworzyć projekty dubbingu, zgodnie z instrukcją quickstart dubbingu.

Dodawanie własnej transkrypcji i tłumaczeń jest dostępne tylko w przestrzeniach roboczych Enterprise. Skontaktuj się z działem sprzedaży, aby uzyskać dostęp.

Domyślnie Dubbing API transkrybuje materiały źródłowe i tłumaczy maszynowo transkrypcję na każdy język docelowy. Jeśli masz już dokładną transkrypcję — napisy, scenariusz lub profesjonalnie przetłumaczony tekst — możesz użyć jej zamiast tego. Ten przewodnik opisuje format pliku transkrypcji, tworzenie projektu z transkrypcji i dodawanie własnych tłumaczeń podczas dodawania języka.

Format pliku transkrypcji

Transkrypcja to plik JSON z jedną tablicą segments na najwyższym poziomie. Każdy segment to jedna wypowiedź: wypowiedziany tekst, czas rozpoczęcia i zakończenia oraz opcjonalnie osoba, która go wypowiada.

transcript.json
{
"segments": [
{
"external_id": "line_0",
"speaker_id": "speaker_0",
"start_s": 0.0,
"end_s": 14.5,
"text": "With my soft and whispery American accent, I'm the ideal choice for creating ASMR content, meditation guides, or adding an intimate feel to your narrative projects."
}
]
}
PoleWymaganeOpis
textTakTekst wypowiadany w segmencie.
start_sTakCzas rozpoczęcia segmentu w sekundach.
end_sTakCzas zakończenia segmentu w sekundach.
speaker_idNieIdentyfikator grupujący segmenty wypowiadane przez tę samą osobę, aby każdy mówca był dubbingowany tym samym głosem. Segmenty bez niego korzystają z jednego domyślnego mówcy.
external_idNieTwój identyfikator segmentu — maksymalnie 128 znaków, unikalny w transkrypcji. Służy jako klucz tłumaczeń i jest zwracany przy każdym odczycie transkrypcji.
translationNiePrzetłumaczony tekst segmentu używany do zainicjowania języka docelowego utworzonego przez target_language. Jeśli zawiera go dowolny segment, muszą go zawierać wszystkie.

Zasady dotyczące segmentów

Transkrypcja jest walidowana podczas tworzenia projektu:

  • Segmenty muszą być uporządkowane według start_s.
  • Segment musi trwać od 0,1 do 25 sekund, a end_s musi być większe niż start_s.
  • Segmenty z tym samym speaker_id nie mogą się nakładać, ale mogą stykać się na końcach. Segmenty różnych mówców mogą się nakładać, aby odzwierciedlić jednoczesną mowę.
  • Transkrypcja może zawierać maksymalnie 20 000 segmentów, a plik może mieć maksymalnie 4 MiB.

Wybieraj raczej krótsze niż dłuższe segmenty: dziel zdania wszędzie tam, gdzie pauza trwa co najmniej sekundę. Granice segmentów określają synchronizację zdubbingowanego audio z materiałem źródłowym, więc transkrypcja z dokładnymi, naturalnymi podziałami daje lepiej zsynchronizowany dubbing.

Utwórz projekt z transkrypcji

Przekaż plik transkrypcji podczas tworzenia projektu. source_language jest wymagane przy dodawaniu transkrypcji, ponieważ materiał źródłowy nie jest transkrybowany automatycznie. Języki podaje się jako tagi BCP-47, na przykład es lub fr-CA. Wszystkie akceptowane wartości znajdziesz w sekcji obsługiwane języki i dialekty.

import os
from dotenv import load_dotenv
from elevenlabs.client import ElevenLabs
load_dotenv()
elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))
with open("transcript.json", "rb") as transcript:
project = elevenlabs.dubbing.project.create(
source_url="https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3",
source_language="en",
transcript=transcript,
)
print(project.project_id)

Projekt nadal przetwarza materiał źródłowy, zanim będzie można utworzyć dubbing, więc odpytywanie powtarzaj, aż jego status będzie mieć wartość ready, jak pokazano w quickstarcie. Twoje segmenty są używane bez zmian; automatyczna transkrypcja nie jest uruchamiana.

Dodaj własne tłumaczenia

Podczas dodawania języka docelowego przekaż mapę translations, aby użyć własnych tłumaczeń zamiast tłumaczenia maszynowego. Kluczami mapy są external_id każdego segmentu źródłowego lub jego wewnętrzne id, jeśli nie podano własnego identyfikatora. Mapa musi obejmować każdy segment źródłowy dokładnie raz.

project_id = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"
language = elevenlabs.dubbing.project.language.create(
project_id,
target_language="fr",
translations={
"line_0": "Avec mon accent américain doux et murmuré, je suis le choix idéal pour créer du contenu ASMR, des guides de méditation, ou pour apporter une touche d'intimité à vos projets narratifs.",
},
)

Każdy język docelowy wymaga osobnego wywołania create, więc powtórz to żądanie dla każdego języka dubbingu. Mapa translations może zawierać maksymalnie 20 000 wpisów o łącznej wielkości tekstu do 4 MiB.

Jeśli segmenty nie mają external_id, odczytaj źródłową transkrypcję, aby uzyskać wewnętrzne id każdego segmentu, i użyj ich jako kluczy:

transcript = elevenlabs.dubbing.project.transcript.get(project_id)
for segment in transcript.segments:
print(segment.id, segment.text)

Dodaj tłumaczenia podczas tworzenia projektu

W przypadku jednego języka docelowego możesz pominąć osobną mapę translations, dodając translation do każdego segmentu w pliku transkrypcji i przekazując target_language podczas tworzenia projektu. Język docelowy zostanie utworzony w kolejce z twoimi tłumaczeniami i zacznie się generować, gdy projekt będzie gotowy.

transcript.json
{
"segments": [
{
"external_id": "line_0",
"speaker_id": "speaker_0",
"start_s": 0.0,
"end_s": 14.5,
"text": "With my soft and whispery American accent, I'm the ideal choice for creating ASMR content, meditation guides, or adding an intimate feel to your narrative projects.",
"translation": "Avec mon accent américain doux et murmuré, je suis le choix idéal pour créer du contenu ASMR, des guides de méditation, ou pour apporter une touche d'intimité à vos projets narratifs."
}
]
}

Kwestie jakości

Jakość dubbingu zależy od transkrypcji i tłumaczeń, na których się opiera. Czasy segmentów i tekst są używane bezpośrednio do synchronizacji i udźwiękowienia dubbingu, więc niedokładne czasy lub tekst obniżają jakość wyniku. Tłumaczenia są generowane tak, by zmieściły się w czasie danego segmentu: tłumaczenie znacznie dłuższe lub krótsze od oryginału wpływa na tempo zdubbingowanej mowy, dlatego staraj się, by miały podobną długość wypowiedzi.

Dalsze kroki