BookTranslator
BookTranslator

이중 언어 자막 만드는 방법: 하나의 SRT 또는 VTT 파일에 두 언어 넣기

사람이 읽을 수 있는 이중 언어 SRT 또는 VTT 파일을 만드세요: 시간 기준 병합, 하나의 큐에 두 언어 맞추기, 위에 표시할 언어 선택, 무료 검사기 실행까지.

BookTranslator

BookTranslator Team

21분 읽기

이중 언어 자막을 만들려면 시간 정보가 있는 자막 파일 하나와 동일한 시간 정보를 유지하는 번역본, 그리고 각 시점마다 두 언어를 함께 담는 큐 하나가 필요합니다. 원문 줄이 먼저, 번역 줄이 다음에 오며 하나의 타임스탬프 아래에 있어야 합니다. 이중 파일을 작성하는 번역기는 이 작업을 대신 해주고, 이미 두 파일이 있다면 병합 도구가 해줍니다. 일반 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플레이어 기능이 필요 없는 일반 자막 파일 하나입니다
각 언어를 제어하면서 내 컴퓨터에서 시청하기두 트랙을 지원하는 플레이어에서 두 개의 별도 파일 사용각 언어가 자체 타이밍을 유지하고 이동하거나 끌 수 있습니다
웹 페이지에서 언어를 다른 크기로 표시하기각 언어에 클래스를 지정한 하나의 VTTWebVTT에는 스타일링이 있고, SRT에는 표준 방법이 없습니다
어디서나 동일하게 보이는 비디오 게시하기입혀진 자막텍스트가 화면의 일부가 되어 시청자가 끌 수 없습니다

두 트랙의 경우 mpv에는 --secondary-sid 옵션이 있습니다. 매뉴얼에 따르면 두 번째 트랙은 기본적으로 화면 상단에 그려져 언어가 분리됩니다. mpv는 직접 테스트하지 않았습니다.

굽기(burn-in)를 위해서는 FFmpeg의 자막 필터가 libass와 함께 빌드되어 있어야 합니다. 이 테스트를 위해 설치한 FFmpeg 9.0.1에는 libass가 없었으므로, 계획을 세우기 전에 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 옵션)은 큐 2부터 12개 중 10개를 잘못 짝지었습니다. 큐 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를 사용하세요. 해당 가이드는 한 번에 한 언어, 최대 두 줄을 다룹니다. 하나의 큐에 두 언어를 넣는 경우에 대한 동등한 표준은 알려져 있지 않으므로, 검사기의 기본값인 화면에 세 줄과 다음 섹션의 모든 내용은 우리의 판단입니다.

검사기는 또한 결합된 수치를 출력하는데, 큐 9에서 초당 43.3자에 도달했습니다. 그 수치를 고치려고 하지 마세요. 두 언어의 모든 글자를 온전히 집중해서 읽는 사람은 없습니다. 주의 깊게 볼 큐를 가리키는 지표로만 여기세요.

3단계: 네 줄 큐 수정

네 줄이 차지하는 공간은 이렇습니다. 1280x720 해상도의 Chromium 기본 자막 표시에서 두 줄짜리 영어 자막은 화면 높이의 10.6%를 차지했고, 같은 자막에 스페인어를 추가하자 21.9%를 차지했습니다.

1280x720 크기의 단순 테스트 프레임 하단에 표시된 두 줄짜리 영어 자막. Chromium 기본 자막 스타일입니다.

같은 자막에 스페인어 두 줄을 추가한 모습. 화면 높이의 약 5분의 1을 차지합니다.

표시된 자막을 다음 순서로 처리하세요:

  1. 오디오 언어는 단어 하나까지 그대로 유지하세요. 원어를 들으면서 자막을 따라 읽는 사람에게는, 줄인 원어가 들리는 내용과 더 이상 일치하지 않습니다.
  2. 다른 언어는 한 줄로 줄이세요. 스페인어를 A las seis hay otro; cierran a medianoche.로 바꾸면 자막 2는 초당 17.8자에서 13.1자로 줄어듭니다. 화면에는 네 줄 대신 세 줄이 표시되면서 두 가지 사실을 모두 유지합니다.
  3. 여유가 있을 때만 시간을 늘리세요. 종료 시간을 옮기기 전에 다음 자막의 시작 시간을 확인하세요. 자막 2는 0.2초의 여유가 있는데, 그 정도로는 애쓸 가치가 없습니다.
  4. 그런 다음 나머지는 그대로 두세요. 자막 9는 1.2초 동안 You knew? / Since March.입니다. 속도와 줄 수 제한을 위반하지만, 그대로 두는 편입니다. 뒤에 있는 0.2초 간격은 도움이 되기엔 너무 짧고, 시청자는 짧은 두 개의 대답을 한눈에 이해할 수 있을 가능성이 높습니다. 모든 경고가 오류는 아닙니다.

자막 10처럼 긴 한 줄짜리 자막의 경우, 시간이 충분할 때만 각 언어를 두 줄로 나누세요. 그렇지 않으면 번역을 줄이세요.

표시 방식을 제어할 수 있다면 한 언어를 더 쉽게 구분할 수도 있습니다. to-vtt를 실행하면 각 언어에 고유 클래스가 부여됩니다. 결과 파일을 Chromium에서 영어를 80% 크기와 밝은 회색으로 렌더링했습니다. 공간 절약 효과는 거의 없어서(화면 높이의 21.9% 대신 21.1%) 줄을 줄이는 대안이 되지는 못합니다. 읽기 편의성 향상 여부는 테스트하지 않았습니다.

영어 줄이 스페인어 줄보다 작고 회색으로 표시된 네 줄짜리 자막.

이 방법은 WebVTT 큐 클래스와 ::cue() 선택자를 사용합니다. 브라우저용이며, 다른 플레이어는 스타일이나 VTT 파일을 무시할 수 있습니다.

4단계: 어느 언어를 위에 둘지 결정하기

이 주제에 관한 연구가 있습니다. 영어를 제2언어로 사용하는 스페인어 원어민 42명을 대상으로 한 2026년 시선 추적 연구에서 시청자들은 위쪽 줄에 어떤 언어가 있든 그 줄에 더 많은 시간을 보냈고, 오디오와 일치하는 줄에도 더 많은 시간을 보냈습니다. 모국어인 스페인어를 위에 두었을 때 이해도 점수가 더 높았습니다. 영어를 배우는 중국인 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년 11월 기준으로, 서식 태그와 아포스트로피가 있는 자막이 아포스트로피가 이스케이프된 채로 반환될 수 있습니다. 원본 줄은 이중 언어 파일에서 <i>Don&apos;t answer that.</i>가 되었고, 별도의 VTT 테스트에서는 프랑스어 번역이 번역된 파일에서도 <i>Je n&apos;attendrai pas.</i>가 되었습니다. Chromium은 VTT에서 이를 디코딩하여 일반 아포스트로피로 표시했습니다. 하지만 FFmpeg로 SRT를 변환했을 때는 &apos;가 출력 텍스트에 그대로 남았으므로, 일부 플레이어는 이를 문자 그대로 표시할 수 있다고 가정하세요. 파일을 사용하기 전에 &apos;를 '로 바꾸세요. 이 문제는 엔지니어에게 보고했습니다.
  • VTT 큐 설정이 제거됩니다. line:0 align:start position:10% 같은 위치 설정과 NOTE 블록이 VTT 테스트 출력에서 사라졌고, 화자 레이블이 두 줄 모두에 나타났습니다. VTT가 배치에 의존한다면 번역 후에 다시 추가하세요.
  • 오른쪽에서 왼쪽으로 쓰는 텍스트는 줄마다 표시됩니다. 아랍어 줄은 유니코드 방향 표시로 감싸져 돌아왔습니다. Chromium에서 VTT 사본의 한 큐만 확인했는데 오른쪽에서 왼쪽으로 표시되었습니다. 아랍어와 숫자가 섞인 줄(예: 큐 10)은 더 어려운 경우이며 확인하지 않았으므로 실제 플레이어에서 테스트하세요. SRT에는 방향을 설정하는 다른 방법이 없습니다. 오른쪽에서 왼쪽 언어 가이드에서 책에 관한 더 넓은 문제를 다룹니다.

원본이 ASS 또는 SSA라면 BookTranslator의 이중 언어 출력은 번역된 줄을 동일한 스타일과 타이밍의 두 번째 이벤트로 추가하는데, 이는 다른 구조입니다. ASS 자막 가이드에서 해당 파일이 어떻게 구성되는지 설명합니다. 두 언어 중 하나에서 악센트 문자가 깨져 보인다면 보통 파일 인코딩 문제이며, 자막 인코딩 가이드에서 다룹니다.

파일을 공유하기 전에

  1. 검사기를 실행하고 표시된 모든 큐를 검토하세요.
  2. &apos;, &amp;, &quot;를 찾아 교체하세요.
  3. 효과음, 숫자, 음악에 있는 중복 줄을 삭제하세요.
  4. 시청자가 사용할 플레이어와 화면 크기에서 가장 복잡한 몇 분을 시청하세요.
  5. 하단 줄이 비디오의 화면 텍스트를 가리지 않는지 확인하세요.
  6. 번역을 문맥 속에서 읽어 보세요. AI 자막 워크플로에서 검토 방법을 다룹니다.

SRT 또는 VTT가 준비되었나요? 자막 번역기에 업로드하고 결제 전에 가격을 확인하세요. 완료되면 번역된 파일과 함께 이중 언어 파일을 다운로드하세요. 실제 작업에서 줄 수는 모델이 각 번역 큐를 나누는 방식에 따라 달라지므로, 다운로드한 파일에 검사기를 실행하세요.

관련 글

이중 언어 자막 만드는 방법: 하나의 SRT 또는 VTT 파일에 두 언어 넣기