BookTranslator
BookTranslator

Как да създадете двуезични субтитри: Два езика в един SRT или VTT файл

Създайте двуезичен SRT или VTT файл, който хората могат да четат: обединете по време, поберете два езика в един субтитър, изберете кой да е отгоре и пуснете безплатна проверка.

BookTranslator

BookTranslator Team

11 мин. четене

За да създадете двуезични субтитри, ви трябва един субтитриран файл с тайминги, негов превод, който запазва същите тайминги, и по един субтитър за всеки момент, който съдържа двата езика: първо редовете на оригинала, после преведените редове, под един и същ таймстамп. Всеки преводач, който записва двоен файл, прави това вместо вас, а инструмент за обединяване го прави, ако вече имате два файла. Обикновеният SRT не изисква специален синтаксис за това.

Създаването на файла е лесната част. По-трудната част е, че таймингът е написан за един език. Един субтитър, който побира два реда на английски, сега трябва да побере четири реда, в същите няколко секунди, върху същата картина. Затова това ръководство отделя повечето си време на това какво да поправите след обединяването.

Написахме тестов файл с 12 субтитъра, създадохме испанска, китайска и арабска версия и написахме безплатна проверка. Файловете идват от собствения код на BookTranslator за писане на субтитри, пуснат локално. Написахме преводите на ръка, вместо да извикваме модел, така че тези тестове показват какво се случва с файла, а не колко добър е преводът. README съдържа подробностите. Проверката изисква Python 3 и нищо друго.

Бърз отговор: Как изглежда двуезичният субтитър

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.

Това е валиден SRT. Всеки субтитър запазва номера и таймстампа си, а всеки ред текст под таймстампа се показва на екрана заедно. WebVTT работи по същия начин.

Първо изберете настройката

Искате даИзползвайтеЗащо
Гледате в почти всеки плейър или изпращате един файл на някогоЕдин обединен SRTТова е един обикновен файл със субтитри, без нужда от функция на плейъра
Гледате на собствения си компютър с контрол върху всеки езикДва отделни файла в плейър с поддръжка на две пистиВсеки език запазва своя тайминг и може да бъде преместван или изключван
Показвате езиците с различни размери на уеб страницаЕдин VTT с клас за всеки езикWebVTT има стилизиране; SRT няма стандартен начин за това
Публикувате видео, което изглежда еднакво навсякъдеВградени субтитриТекстът става част от картината и зрителите не могат да го изключат

За две писти mpv има опция --secondary-sid. Ръководството му казва, че втората писта се изчертава в горната част на екрана по подразбиране, което държи езиците разделени. Не сме тествали mpv сами.

За вграждане на субтитрите филтърът subtitles filter на FFmpeg изисква компилация с libass. Версията FFmpeg 9.0.1, която инсталирахме за този тест, не разполагаше с него, затова изпълнете ffmpeg -filters | grep subtitles, преди да разчитате на тази функция. Не сме тествали вграждане.

Стъпка 1: Съберете два езика в един файл

Ако имате един файл, преведете го с инструмент, който създава двуезичен файл. BookTranslator прави това за всяка задача със SRT и VTT: получавате преведен файл и двуезичен файл със същите времеви кодове, а можете да започнете от преводача на субтитри. Ако първо трябва да изберете инструмент, вижте нашето сравнение на софтуер за субтитри.

Ако имате два файла, свържете ги по време, а не по номер на реплика. Тук често се допускат грешки при обединяването, защото две писти на едно и също видео рядко разделят редовете по един и същ начин. Нашата втора испанска писта разделя две дълги реплики наполовина и пропуска звуковия ефект, годината и музиката.

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

Свързването по номер на реплика (опцията --index на скрипта) сбърка 10 от 12 реплики, като се започне от реплика 2, където половината испански текст липсваше. Към реплика 3 преводът принадлежеше на друг ред:

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

Свързването по време даде правилния превод под 9 реплики, остави 3-те реплики без испански текст непроменени и отчете единствения испански ред, който не съвпадна с нищо, за да можете да го поставите ръчно. Скриптът приписва реплика от втората писта на репликата от първата писта, с която се припокрива най-много, стига това припокриване да покрива поне половината от дължината ѝ. Инструменти като submerger също обединяват файлове; не сме ги тествали. Каквото и да използвате, проверявайте извадково репликите след първото разделяне.

Стъпка 2: Проверете файла

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

Той сравнява двуезичния файл с изходния и приема, че оригиналните редове са първи, затова го стартирайте, преди да размените реда. Предупреждава ви, ако горните редове не съвпадат с изходния текст. Ето какво откри в испанския файл:

РепликаСекундиРедовеОригинални знаци/секИспански знаци/секПроблем
23.2419.417.8Четири реда, испанският е твърде бърз
52.726.77.0' в текста
71.024.04.0Един и същ текст два пъти
81.821.71.7Един и същ текст два пъти
91.2420.822.5Четири реда, и двата езика са твърде бързи
103.6218.319.4И двата реда над 42 знака, испанският е твърде бърз

Реплики 6 и 12 също върнаха четири реда. Останалите четири реплики бяха наред.

Ограниченията за скорост и дължина на реда идват от Netflix, защото техните числа са публични и конкретни и се различават според езика. Техният наръчник за английски позволява 42 знака на ред, два реда и до 20 знака в секунда за програми за възрастни. Техният наръчник за латиноамерикански испански позволява 17 знака в секунда за преведени субтитри, а техният наръчник за опростен китайски позволява 16 знака на ред и 9 в секунда. Затова използвайте --max-target-line 16 --max-target-cps 9 за китайски. Тези наръчници обхващат един език наведнъж, с най-много два реда. Не знаем за еквивалентен стандарт за два езика в една реплика, така че стандартните три реда на екрана на проверяващия и всичко в следващия раздел е наша преценка.

Проверяващият също отпечатва комбинирано число, което достигна 43,3 знака в секунда на реплика 9. Не се опитвайте да поправите това число. Никой не чете всеки знак от двата езика с пълно внимание. Приемайте го като указание кои реплики си струва да наблюдавате.

Стъпка 3: Поправете репликите с четири реда

Ето колко струват четири реда. В вграденото показване на субтитри в Chromium при 1280x720 двуредовият английски субтитър заемаше 10,6% от височината на кадъра, а същият субтитър с добавен испански заемаше 21,9%.

Двуредовият английски субтитър в долната част на обикновен тестов кадър 1280 на 720, в стила на субтитрите по подразбиране на Chromium.

Същият субтитър с добавени два реда на испански, покриващи около една пета от височината на кадъра.

Прегледайте маркираните субтитри в този ред:

  1. Запазете езика на аудиото дума по дума. Ако хората слушат оригинала и следят текста, съкратеният оригинал вече не съвпада с това, което чуват.
  2. Съкратете другия език до един ред. Нашият субтитър 2 преминава от 17,8 знака в секунда на 13,1, когато испанският стане A las seis hay otro; cierran a medianoche. Това са три реда на екрана вместо четири и запазва и двата факта.
  3. Добавете време само ако има празнина. Проверете началото на следващия субтитър, преди да преместите крайно време. Субтитър 2 има 0,2 секунди в повече, което не си струва усилието.
  4. След това оставете останалите на мира. Субтитър 9 е You knew? / Since March. за 1,2 секунди. Той нарушава ограниченията за скорост и редове, но бихме го оставили: празнината от 0,2 секунди след него е твърде малка, за да помогне, и зрителят вероятно може да възприеме два кратки отговора с един поглед. Не всяко маркиране е грешка.

За дълги единични редове като субтитър 10 разделете всеки език на два реда само ако субтитърът има време за това. В противен случай съкратете превода.

Ако контролирате показването, можете също да направите единия език по-лесен за разпознаване. Изпълнете to-vtt, за да дадете на всеки език свой клас. Полученият файл се визуализира в Chromium с английския на 80% размер и в светлосиво. Това едва пести място (21,1% от височината на кадъра вместо 21,9%), така че не е заместител на съкращаването на ред. Не сме тествали дали помага на хората да четат.

Четириредовият субтитър с английските редове по-малки и по-сиви от испанските.

Това използва класове на субтитрите в WebVTT и селектора ::cue(). Предназначено е за браузъри. Други плейъри може да игнорират стиловете или VTT файла.

Стъпка 4: Решете кой език да е отгоре

Има някои изследвания по този въпрос. В проучване с проследяване на очите от 2026 г. с 42-ма носители на испански с английски като втори език, зрителите прекарваха повече време върху горния ред, независимо на кой език е той, и прекарваха повече време върху реда, който съответства на аудиото. Резултатите за разбиране бяха по-високи, когато испанският, първият им език, беше отгоре. По-ранно проучване с 112 китайски учащи английски установи, че двуезичните субтитри помагат за разбирането толкова, колкото субтитрите само на първия им език, и двете се справят по-добре от английски надписи или без субтитри.

Това са отделни проучвания на конкретни групи зрители, така че ги приемете като отправна точка:

  • Следене на филм или лекция заради съдържанието: поставете езика, който четете най-добре, отгоре.
  • Упражняване на език, който учите: поставете този език отгоре и приемете, че може да разберете малко по-малко. Разбирането е това, което проучването от 2026 г. измерва, а не ученето, така че това е наша преценка.
  • Преглед на превод: редът има малко значение, така че го оставете.

Двуезичният файл на BookTranslator винаги поставя оригинала отгоре. За да го размените:

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

Какво се връща грешно и как да го поправите

Тези са от пускането на кода за субтитри на BookTranslator върху нашите тестови файлове, а проверяващият маркира първите два.

  • Текст, който не се нуждае от превод, се появява два пъти. 1984 и ♪ ♪ се пропускат, тъй като нямат думи за превод, така че двуезичният файл отпечатва всеки от тях два пъти. Изтрийте един ред ръчно.
  • &apos; може да се появи в текста. Към ноември 2026 г. субтитър с форматиращи тагове и апостроф може да се върне с екраниран апостроф. Оригиналният ни ред стана <i>Don&apos;t answer that.</i> в двуезичния файл, а в отделен VTT тест френски превод стана <i>Je n&apos;attendrai pas.</i> и в преведения файл. Chromium го декодира във VTT и показа нормален апостроф. Но когато конвертирахме SRT с FFmpeg, &apos; остана в изходния текст, така че приемете, че някои плейъри ще го покажат буквално. Заменете &apos; с ', преди да използвате файла. Докладвали сме това на нашите инженери.
  • Настройките на VTT субтитрите се премахват. Настройки за позиция като line:0 align:start position:10% и блокове NOTE липсваха от нашия тестов изходен VTT файл, а етикетите на говорещите се появиха и на двата реда. Ако вашият VTT разчита на позициониране, добавете го обратно след превод.
  • Текстът с посока отдясно наляво се маркира ред по ред. Арабските редове се връщаха обвити в Unicode маркери за посока. Разгледахме само един субтитър в VTT копие на файла в Chromium и той се показваше отдясно наляво. Редовете, които смесват арабски с цифри, като нашия субтитър 10, са по-трудният случай и не ги прегледахме, затова тествайте във вашия реален плейър. SRT няма друг начин за задаване на посока. Нашето ръководство за писане отдясно наляво обхваща по-широките въпроси за книги.

Ако източникът ви е ASS или SSA, двуезичният изход на BookTranslator добавя преведения ред като второ събитие със същия стил и време, което е различна структура. Нашето ръководство за ASS субтитри обяснява как са сглобени тези файлове. Ако символите с диакритични знаци изглеждат повредени на някой от двата езика, проблемът обикновено е в кодирането на файла, което нашето ръководство за кодиране на субтитри разглежда.

Преди да споделите файла

  1. Стартирайте проверката и прегледайте всеки маркиран субтитър.
  2. Намерете &apos;, &amp; и &quot; и ги заменете.
  3. Изтрийте дублиращите се редове за звукови ефекти, числа и музика.
  4. Гледайте най-натоварените няколко минути в плейъра, който ще използват зрителите ви, на размера на екрана, който ще използват.
  5. Проверете дали долните редове не закриват текст на екрана във видеото.
  6. Прочетете превода в контекст. Нашият работен процес за AI субтитри обхваща как да го прегледате.

Имате готов SRT или VTT? Качете го в преводача на субтитри и вижте цената, преди да платите. Когато приключи, изтеглете двуезичния файл заедно с преведения. След това стартирайте проверката върху него, тъй като броят на редовете при реална задача зависи от това как моделът разделя всеки преведен субтитър.

Свързани публикации