BookTranslator
BookTranslator

Jak vytvořit dvojjazyčné titulky: Dva jazyky v jednom souboru SRT nebo VTT

Vytvořte dvoujazyčný soubor SRT nebo VTT, který lidé mohou číst: sloučte podle času, vměstnejte dva jazyky do jednoho titulku, zvolte, který bude nahoře, a spusťte bezplatnou kontrolu.

BookTranslator

BookTranslator Team

10 min čtení

Chcete-li vytvořit dvojjazyčné titulky, potřebujete jeden načasovaný soubor titulků, jeho překlad se stejným časováním a jeden titulek pro každý okamžik, který obsahuje oba jazyky: nejprve původní řádky, poté přeložené řádky, pod jedním časovým razítkem. Každý překladač, který vytváří duální soubor, to udělá za vás, a nástroj pro sloučení to udělá, pokud již máte dva soubory. Prostý SRT k tomu nepotřebuje žádnou speciální syntaxi.

Vytvoření souboru je ta snadná část. Těžší je, že časování bylo napsáno pro jeden jazyk. Titulek, do kterého se vejdou dva řádky angličtiny, nyní musí pojmout čtyři řádky, ve stejných několika sekundách, nad stejným obrazem. Proto se tento průvodce většinu času věnuje tomu, co opravit po sloučení.

Napsali jsme testovací soubor s 12 titulky, vytvořili španělskou, čínskou a arabskou verzi a napsali bezplatný kontrolní nástroj. Soubory pocházejí z vlastního kódu BookTranslatoru pro zápis titulků, spuštěného lokálně. Překlady jsme napsali ručně, místo abychom volali model, takže tyto testy ukazují, co se stane se souborem, ne jak dobrý je překlad. Podrobnosti najdete v README. Kontrolní nástroj vyžaduje pouze Python 3 a nic jiného.

Rychlá odpověď: Jak vypadá dvojjazyčný titulek

2
00:00:03,400 --> 00:00:06,600
There's another one at six,
but the station closes at midnight.
Hay otro a las seis,
pero la estación cierra a medianoche.

To je platný SRT. Každý titulek si zachovává své číslo a časové razítko a každý řádek textu pod časovým razítkem se zobrazí společně na obrazovce. WebVTT funguje stejně.

Nejprve zvolte nastavení

ChcetePoužijteProč
Sledovat téměř v jakémkoli přehrávači nebo poslat jeden soubor někomu jinémuJeden sloučený SRTJe to jeden obyčejný soubor titulků, nepotřebuje žádnou funkci přehrávače
Sledovat na vlastním počítači s kontrolou nad každým jazykemDva samostatné soubory v přehrávači s podporou dvou stopKaždý jazyk si zachovává své vlastní časování a lze jej přesunout nebo vypnout
Zobrazit jazyky v různých velikostech na webové stránceJeden VTT s třídou pro každý jazykWebVTT má styling; SRT nemá standardní způsob, jak to udělat
Publikovat video, které vypadá všude stejněVypálené titulkyText se stane součástí obrazu a diváci jej nemohou vypnout

Pro dvě stopy má mpv možnost --secondary-sid. Jeho manuál uvádí, že druhá stopa se ve výchozím nastavení vykresluje v horní části obrazovky, což jazyky odděluje. mpv jsme sami netestovali.

Pro vypálení titulků do videa potřebuje filtr subtitles v FFmpeg sestavení s knihovnou libass. FFmpeg 9.0.1, který jsme nainstalovali pro tento test, ji neměl, takže před plánováním spusťte ffmpeg -filters | grep subtitles. Vypalování jsme netestovali.

Krok 1: Dostaněte dva jazyky do jednoho souboru

Pokud máte jeden soubor, přeložte ho nástrojem, který vytvoří duální soubor. BookTranslator to dělá pro každou úlohu SRT a VTT: získáte přeložený soubor a bilingvní soubor se stejnými časovými razítky a můžete začít na překladači titulků. Pokud si nejprve potřebujete vybrat nástroj, podívejte se na naše srovnání titulkového softwaru.

Pokud máte dva soubory, spárujte je podle času, ne podle čísla titulku. Právě zde se slučování pokazí, protože dvě stopy stejného videa málokdy dělí řádky stejným způsobem. Náš druhý španělský soubor rozděluje dva dlouhé titulky na polovinu a vynechává zvukový efekt, rok a hudbu.

python3 check_bilingual_subs.py merge sample-source.srt sample-es-own-timing.srt -o merged.srt

Párování podle čísla titulku (volba --index skriptu) pokazilo 10 z 12 titulků, počínaje titulkem 2, kde chyběla polovina španělštiny. U titulku 3 už překlad patřil jinému řádku:

3
00:00:06,800 --> 00:00:08,000
So where do we wait?
pero la estación cierra a medianoche.

Párování podle času dalo správný překlad pod 9 titulků, 3 titulky bez španělštiny nechalo na pokoji a nahlásilo jediný španělský řádek, který ničemu neodpovídal, takže ho můžete umístit ručně. Skript přiřadí titulek druhé stopy k titulku první stopy, se kterým se nejvíce překrývá, pokud to pokrývá alespoň polovinu jeho délky. Nástroje jako submerger také slučují soubory; netestovali jsme je. Ať už použijete cokoli, po prvním rozdělení titulky namátkou zkontrolujte.

Krok 2: Zkontrolujte soubor

python3 check_bilingual_subs.py check sample-source.srt sample-es-bilingual.srt --max-target-cps 17

Porovnává bilingvní soubor se zdrojem a předpokládá, že původní řádky jsou první, takže ho spusťte předtím, než pořadí prohodíte. Upozorní vás, pokud horní řádky neodpovídají zdroji. Toto našel ve španělském souboru:

TitulekSekundyŘádkyZnaky/s původníZnaky/s španělskéProblém
23.2419.417.8Čtyři řádky, španělština příliš rychlá
52.726.77.0' v textu
71.024.04.0Stejný text dvakrát
81.821.71.7Stejný text dvakrát
91.2420.822.5Čtyři řádky, oba jazyky příliš rychlé
103.6218.319.4Oba řádky přes 42 znaků, španělština příliš rychlá

Titulky 6 a 12 také vrátily čtyři řádky. Zbývající čtyři titulky byly v pořádku.

Limity rychlosti a délky řádku pocházejí z Netflixu, protože jeho čísla jsou veřejná a konkrétní a liší se podle jazyka. Jeho anglický průvodce povoluje 42 znaků na řádek, dva řádky a až 20 znaků za sekundu pro pořady pro dospělé. Jeho průvodce pro latinskoamerickou španělštinu povoluje 17 znaků za sekundu pro přeložené titulky a jeho průvodce pro zjednodušenou čínštinu povoluje 16 znaků na řádek a 9 za sekundu. Pro čínštinu tedy použijte --max-target-line 16 --max-target-cps 9. Tyto průvodce se týkají jednoho jazyka najednou, maximálně dvou řádků. Neznáme žádný ekvivalentní standard pro dva jazyky v jednom titulku, takže výchozí nastavení kontroleru na tři řádky na obrazovce a vše v další části je náš úsudek.

Kontroler také vypisuje kombinované číslo, které u titulku 9 dosáhlo 43,3 znaků za sekundu. Nesnažte se to číslo opravovat. Nikdo nečte každý znak obou jazyků s plnou pozorností. Berte to jako ukazatel na titulky, které stojí za to sledovat.

Krok 3: Opravte titulky se čtyřmi řádky

Tolik stojí čtyři řádky. Ve vestavěném zobrazení titulků v Chromiu při rozlišení 1280x720 zabrala dvouřádková anglická stopa 10,6 % výšky snímku a stejná stopa s přidanou španělštinou 21,9 %.

Dvouřádková anglická stopa ve spodní části jednoduchého testovacího snímku 1280 x 720 ve výchozím stylu titulků Chromia.

Stejná stopa s přidanými dvěma řádky španělštiny, které zabírají přibližně pětinu výšky snímku.

Označené stopy projděte v tomto pořadí:

  1. Ponechte jazyk zvuku slovo od slova. Pokud lidé poslouchají originál a sledují text, zkrácený originál už neodpovídá tomu, co slyší.
  2. Zkraťte druhý jazyk na jeden řádek. Naše stopa 2 se změní ze 17,8 znaků za sekundu na 13,1, když se španělština změní na A las seis hay otro; cierran a medianoche. To jsou na obrazovce tři řádky místo čtyř a obě informace zůstanou.
  3. Přidejte čas jen tehdy, když je mezera. Než posunete konec, zkontrolujte začátek následující stopy. Stopa 2 má 0,2 sekundy k dobru, což za tu námahu nestojí.
  4. Zbytek nechte být. Stopa 9 je You knew? / Since March. za 1,2 sekundy. Porušuje limity rychlosti a počtu řádků, ale nechali bychom ji: mezera 0,2 sekundy po ní je příliš malá na to, aby pomohla, a divák pravděpodobně stihne dvě krátké repliky přečíst jedním pohledem. Ne každé označení je chyba.

U dlouhých jednotlivých řádků, jako je stopa 10, rozdělte každý jazyk na dva řádky jen tehdy, pokud na to stopa má čas. Jinak zkraťte překlad.

Pokud máte kontrolu nad zobrazením, můžete také jeden jazyk snáze odlišit. Spusťte to-vtt, aby každý jazyk dostal vlastní třídu. Výsledný soubor se v Chromiu vykreslil s angličtinou o velikosti 80 % a světle šedou. Prostor to ušetří jen nepatrně (21,1 % výšky snímku místo 21,9 %), takže to nenahrazuje zkrácení řádku. Netestovali jsme, zda to lidem pomáhá číst.

Čtyřřádková stopa s anglickými řádky menšími a šedějšími než španělské řádky.

Používá to třídy stop WebVTT a selektor ::cue(). Je určeno pro prohlížeče. Jiné přehrávače mohou styly nebo soubor VTT ignorovat.

Krok 4: Rozhodněte, který jazyk bude nahoře

Existuje o tom určitý výzkum. V eye-trackingové studii z roku 2026 se 42 rodilými mluvčími španělštiny s angličtinou jako druhým jazykem trávili diváci více času na horním řádku bez ohledu na to, v jakém jazyce byl, a více času trávili na řádku, který odpovídal zvuku. Skóre porozumění bylo vyšší, když byla nahoře španělština, jejich první jazyk. Dřívější studie se 112 čínskými studenty angličtiny zjistila, že dvojjazyčné titulky pomáhaly s porozuměním stejně jako titulky pouze v jejich prvním jazyce a obojí bylo lepší než anglické titulky nebo žádné titulky.

Jde o jednotlivé studie specifických skupin diváků, berte je tedy jako výchozí bod:

  • Sledování filmu nebo přednášky kvůli obsahu: nahoru dejte jazyk, který čtete nejlépe.
  • Procvičování jazyka, který se učíte: nahoru dejte tento jazyk a smiřte se s tím, že možná budete rozumět o něco méně. Studie z roku 2026 měřila porozumění, nikoli učení, takže toto je náš úsudek.
  • Kontrola překladu: pořadí příliš nezáleží, nechte ho být.

Dvojjazyčný soubor BookTranslatoru vždy dává originál nahoru. Chcete-li ho prohodit:

python3 check_bilingual_subs.py flip sample-source.srt sample-es-bilingual.srt -o translation-on-top.srt

Co se vrací špatně a jak to opravit

Toto vzešlo ze spuštění titulkového kódu BookTranslatoru na našich testovacích souborech a kontrolor označí první dva případy.

  • Text, který nepotřebuje překlad, se objeví dvakrát. 1984 a ♪ ♪ se přeskočí, protože nemají žádná slova k překladu, takže dvojjazyčný soubor každý z nich vypíše dvakrát. Jeden řádek ručně smažte.
  • V textu se může objevit &apos;. Od listopadu 2026 se může stopa s formátovacími značkami a apostrofem vrátit s escapovaným apostrofem. Náš původní řádek se ve dvojjazyčném souboru změnil na <i>Don&apos;t answer that.</i> a v samostatném testu VTT se francouzský překlad změnil i v přeloženém souboru na <i>Je n&apos;attendrai pas.</i>. Chromium to ve VTT dekódovalo a zobrazilo normální apostrof. Když jsme však SRT převedli pomocí FFmpeg, &apos; zůstalo ve výstupním textu, takže předpokládejte, že některé přehrávače ho zobrazí doslovně. Před použitím souboru nahraďte &apos; znakem '. Nahlásili jsme to našim inženýrům.
  • Nastavení stop VTT se odstraní. Nastavení polohy, jako line:0 align:start position:10%, a bloky NOTE z našeho testovacího výstupu VTT zmizely a označení mluvčích se objevila na obou řádcích. Pokud váš VTT spoléhá na umístění, po překladu ho znovu přidejte.
  • Text zprava doleva je označen každý řádek zvlášť. Arabské řádky se vrátily obalené znaky pro směr Unicode. Podívali jsme se pouze na jeden titulek v kopii souboru VTT v Chromiu a zobrazil se zprava doleva. Řádky, které mísí arabštinu s čísly, jako náš titulek 10, jsou složitější případ a ty jsme si neprohlédli, takže si je otestujte ve svém skutečném přehrávači. SRT nemá jiný způsob, jak nastavit směr. Náš průvodce textem zprava doleva pokrývá širší problematiku u knih.

Pokud je váš zdrojový soubor ASS nebo SSA, dvojjazyčný výstup BookTranslatoru přidá přeložený řádek jako druhou událost se stejným stylem a časováním, což je jiná struktura. Náš průvodce titulky ASS vysvětluje, jak jsou tyto soubory sestaveny. Pokud se v kterémkoli jazyce zobrazují diakritická znaménka poškozeně, problémem je obvykle kódování souboru, kterému se věnuje náš průvodce kódováním titulků.

Než soubor sdílíte

  1. Spusťte kontrolu a projděte každý označený titulek.
  2. Najděte &apos;, &amp; a &quot; a nahraďte je.
  3. Odstraňte duplicitní řádky u zvukových efektů, čísel a hudby.
  4. Sledujte několik nejrušnějších minut v přehrávači, který budou vaši diváci používat, na velikosti obrazovky, kterou budou používat.
  5. Zkontrolujte, že spodní řádky nezakrývají text na obrazovce ve videu.
  6. Přečtěte si překlad v kontextu. Náš pracovní postup pro AI titulky pokrývá, jak jej zkontrolovat.

Máte připravený SRT nebo VTT? Nahrajte jej do překladače titulků a podívejte se na cenu, než zaplatíte. Po dokončení si stáhněte dvojjazyčný soubor spolu s přeloženým. Poté na něj spusťte kontrolu, protože počty řádků ve skutečné zakázce závisí na tom, jak model rozdělí každý přeložený titulek.

Související příspěvky