영상에 이중 자막을 넣는 방법: 두 언어 함께 입히기
Sume로 영상 하나에 두 언어를 입히세요. 자막 Job 하나의 cue마다 두 줄을 모두 넣거나, Job을 두 번 실행해 언어마다 높이를 따로 정합니다.

영상에 이중 자막을 넣으려면 원문 바로 아래나 위에 번역문을 두는 식으로 각 줄을 두 언어로 동시에 보여 주세요. Sume로 두 언어를 모두 영상에 입히려면 시각을 정한 cues를 POST /v1/video-captions로 보내며, 방법은 두 가지입니다. 하나는 cue마다 두 줄을 줄바꿈으로 나눠 담은 Job 하나이고, 다른 하나는 Job 두 개로, 두 번째 Job이 첫 Job의 출력물에 다른 언어를 다른 design.placement.anchor_ratio로 입힙니다.
Sume 관련 내용은 2026-09-27에 확인한 영상 캡션 문서와 Sume API 레퍼런스의 자막 스키마에서 가져왔습니다. 이 글은 두 언어를 모두 영상에 입히려는 제작자를 위한 것입니다. 자막 트랙 두 개를 동시에 보려는 시청자에게는 두 트랙을 함께 보여 줄 수 있는 플레이어가 필요합니다.
두 언어의 줄은 어디서 가져오나요?
자막 API에는 번역 단계가 없습니다. language는 음성 인식에 어떤 언어를 기대할지 알려 줄 뿐이므로, 두 번째 언어의 줄은 직접 준비해야 합니다. 한 가지 파이프라인은 Sume 음성 인식으로 타이밍이 있는 문장을 받아 문장마다 번역하고, 각 문장의 start와 end를 두 언어에 똑같이 쓰는 것입니다. 영상 자막 번역 API에서 단계별로 설명합니다.
SRT 파일이 이미 두 개 있나요? 블록을 시각 기준으로 짝지으세요. 짝 하나가 이중 자막 줄 하나가 됩니다.
Job 하나로 두 언어를 입히려면 어떻게 하나요?
짝을 이룬 두 줄을 cue 하나 안에서 줄바꿈으로 이으세요. cue의 text에는 두 줄 카드를 위한 줄바꿈을 하나 넣을 수 있으며, 전체 길이는 최대 400자입니다. 두 줄은 cue의 시각, 스타일, 높이를 공유하므로 항상 함께 나타나고 함께 사라집니다.
스타일이 두 문자 체계를 모두 그려야 하므로 스타일을 직접 지정하세요. 한국어와 영어라면 텍스트를 쓰인 그대로 입히는 black-outline이나 다른 한글 구절 카드 스타일을 지정하세요. style을 생략하거나 400에 기대지 마세요. 현재 코드에서는 기본 스타일과 caption_hangul_text_latin_style 거부가 모두 전체 cue의 글자 중 절반 이상이 한글인지로 정해지므로, 영어가 많은 짝은 slam으로 정해질 수 있습니다. slam의 라틴 서체에는 한글 글립이 없습니다.
줄바꿈을 살릴지도 스타일이 정합니다. 현재 코드에서 한글 구절 카드 스타일은 줄바꿈을 유지하지만, korean-ad와 라틴 기본 스타일인 slam은 무시합니다. 그래서 라틴 문자를 쓰는 두 언어라면 Job 두 개를 쓰세요. 구절 카드 스타일은 간격이 0.45초 이하인 짧은 cue들을 최대 22자짜리 카드 하나로 합치기도 합니다. design.phrasing.max_words: 1을 쓰면 카드마다 cue가 하나씩 들어갑니다.
직접 지정한 black-outline은 발화 중인 단어를 금색으로 물들이는 고유의 강조를 유지합니다. 현재 코드에서는 각 cue가 start부터 end까지 발화 중인 단어로 취급되므로, 예제는 두 줄을 모두 흰색으로 유지하려고 design.colors.active를 흰색으로 설정합니다.
curl -X POST https://api.sume.com/v1/video-captions \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: bilingual-one-pass-001" \
-d '{
"video_url": "https://example.com/interview.mp4",
"style": "black-outline",
"design": { "colors": { "active": "#FFFFFF" } },
"cues": [
{ "text": "Thanks for joining us.\n함께해 주셔서 감사합니다.", "start": 0, "end": 2.4 },
{ "text": "Setup takes a minute.\n설정은 1분이면 됩니다.", "start": 2.4, "end": 5.1 }
]
}'언어마다 높이를 따로 정하려면 어떻게 하나요?
Job을 두 번 실행하세요. 첫 Job은 첫 번째 언어를 입힙니다. 음성 그대로(문구 필드 없음), script_text로 보낸 대본, 시각을 정한 cues 중 하나를 쓰면 됩니다. 두 번째 Job은 첫 Job이 자막을 입힌 video_url을 원본으로 보내면서, 다른 언어를 cues로, 다른 design.placement.anchor_ratio와 함께 보냅니다. 이 값은 프레임 높이에 대한 줄 중심의 비율로, 범위는 0.05–0.95입니다. 현재 코드에서는 이 비율을 위에서부터 재므로 0.9가 0.75보다 아래에 놓입니다.
두 높이 사이에는 텍스트가 들어갈 만큼 간격을 두고, 대량으로 처리하기 전에 첫 결과를 확인하세요. design은 punch와 tiktok-green을 뺀 모든 스타일에서 동작합니다.
| Job 하나, 두 줄 cue | Job 두 개, 각각 언어 하나 | |
|---|---|---|
| 과금되는 자막 Job | 하나 | 두 개 |
| 높이 | 두 줄이 anchor_ratio 하나를 공유 | Job마다 anchor_ratio를 따로 설정 |
| 스타일 | 스타일 하나가 두 문자 체계를 모두 그려야 함 | Job마다 스타일을 따로 지정 |
| 타이밍 | 두 줄이 각 cue의 start와 end를 공유 | 언어마다 자체 시각 유지 |
| 줄바꿈 | 한글 구절 카드 스타일은 유지, slam과 korean-ad는 무시 | 필요 없음 |
어떤 제한이 있나요?
- Job마다 cue를 1–200개 받으며, 각 cue는 1–400자이고
start와end는 0–60초 사이입니다. - 현재 자막 워커는 60초보다 긴 원본이나 오디오 스트림이 없는 원본을 거부합니다. 현재 코드에서 첫 Job이 자막을 입힌 MP4는 클립의 소리를 유지하므로 두 번째 Job에 넣을 수 있습니다.
- 문서는 라틴 디스플레이 스타일과 한글 스타일만 설명하며, 중국어나 일본어 같은 다른 문자 체계용 스타일은 언급하지 않습니다.
- 접수된 자막 Job마다 60초 이하 영상에 대해 영상 캡션 페이지에 나온 고정 금액이 예약되고 확정되므로, Job 두 개를 쓰는 방식에는 그 금액이 두 번 듭니다.
출처
관련 글
미디어 도구 카테고리의 다른 글
- API로 긴 영상에 자막 넣기: 나눠서 입히고 다시 잇기
Sume 자막 Job 하나는 최대 60초 길이의 영상을 받습니다. 더 긴 영상은 조각으로 잘라 조각마다 자막을 입힌 뒤, 원래 오디오 위에 다시 이어 붙이세요.
- 영상의 특정 시간에 이미지 넣는 방법
두 타임스탬프 사이에만 이미지를 보여 주세요. 클립의 그 구간 위에 이미지를 합성하거나 그 구간을 스틸로 바꾼 뒤, 렌더 한 번으로 영상을 다시 조립합니다.
- 영상에 로고나 워터마크를 넣는 방법
영상에 로고나 워터마크를 넣으려면 모든 프레임 위에 이미지를 올리세요. Sume에 호스팅된 파일이라면 Sume 타임라인 합성이 이 작업을 해 MP4 하나로 돌려줍니다.
- 대본으로 영상에 자막을 넣는 방법
문구는 있는데 타이밍이 없나요? 대본을 script_text로 영상과 함께 Sume 자막 API에 보내면, 음성에 맞춰 타이밍을 잡고 자막을 입힙니다.
작성자 Sume