
자막 싱크 맞추기: 일정한 지연·점진적 어긋남·구간별 오류
자막이 2초 일찍 나와 뒤로 옮겼더니 처음은 맞고 끝은 여전히 틀립니다. 자막 싱크는 오차의 형태부터 측정해야 합니다.
정확한 납품 영상으로 자막 시간을 측정하기
원본 자막을 남기고 영상 버전을 확인합니다. 명확한 단어를 골라 같은 사건을 비교합니다. 자막 끝과 문장 시작처럼 다른 기준을 섞지 않습니다.
다음은 파일 시작부터의 초 단위 가상 예입니다.
| 기준점 | 자막 시간 s | 실측 음성 시간 v | 차이 v−s |
|---|---|---|---|
| 처음 | 10 | 12 | +2 |
| 중간 | 110 | 114 | +4 |
| 끝 | 210 | 216 | +6 |
오차가 증가합니다. 전체에 2초를 더하면 처음은 맞아도 끝은 4초 빠릅니다. 이 값은 시간선 관계를 설명하며, 가독성을 위해 얼마나 일찍 표시할지는 규정하지 않습니다. 시간선을 맞춘 뒤 프로젝트의 자막 스타일을 적용합니다.
이동·배율·구간 보정 선택하기
| 오차 형태 | 우선 방법 | 검사 |
|---|---|---|
| 모든 지점의 차이가 비슷함 | 시작과 끝에 같은 오프셋 적용 | 파일 시작·내보내기 오프셋 |
| 차이가 거의 선형 증가 | 두 점으로 맞춘 뒤 세 번째 검증 | 배율 차이, 프레임률 원인 단정 금지 |
| 편집 뒤 갑자기 달라짐 | 해당 구간 분리 후 정렬 | 추가·삭제 소재, 다른 편집본 |
| 일부 단어만 틀림 | 그 부분을 음성과 다시 정렬 | 인식 경계와 음성 정렬 |
두 기준점으로 보정식 계산하기
자막 s에서 보정 시간 v로 가는 식을 v=a×s+b로 둡니다.
a = (216 - 12) / (210 - 10) = 1.02
b = 12 - 1.02 * 10 = 1.8
v = 1.02 * s + 1.8
중간 검증: 1.02 * 110 + 1.8 = 114예에서는 중간도 맞습니다. 실제로 세 번째 점이 틀리면 전체 변환을 적용하면 안 됩니다. 두 점은 언제나 직선을 만들므로 사용하지 않은 기준점이 가정을 검증합니다.
시작과 종료에 같은 변환을 적용합니다. 10–12초는 12–14.04초가 됩니다. 다음 코드는 숫자 초를 처리하며 이후 SRT/VTT로 직렬화합니다.
function retimeCue(cue, a, b) {
if (!Number.isFinite(a) || a <= 0 || !Number.isFinite(b)) {
throw new Error("Invalid timing transform");
}
const start = Math.round((a * cue.start + b) * 1000) / 1000;
const end = Math.round((a * cue.end + b) * 1000) / 1000;
if (!Number.isFinite(start) || !Number.isFinite(end) || start < 0 || end <= start) {
throw new Error("Invalid cue interval");
}
return { ...cue, start, end };
}음수 시간은 조용히 0으로 자르지 말고 검토 대상으로 둡니다. 변환과 반올림 뒤 겹침을 확인하되, 다중 화자 자막은 의도적으로 겹칠 수 있으므로 자동 삭제하지 않습니다.
AI에는 측정값의 정리를 맡기기
제공한 자막-영상 기준점을 분석하세요.
일정한 오프셋, 거의 선형인 어긋남, 구간 불연속, 근거 부족으로 분류합니다.
실측 위치만 사용하세요.
v=a*s+b를 제안하면 사용한 두 점과 미사용 점의 검증을 보여 주세요.
메타데이터 없이 프레임률이 원인이라고 단정하지 마세요.
ID와 문자는 보존하고 변환, 잔차, 대상 구간, 내보내기 검사를 반환하세요.
단어 타임스탬프를 만들지 마세요.
입력: 정확한 영상 버전, 자막, 기준점, 표시 규칙.먼저 세 실측 기준점을 보냅니다. a=1.02, b=1.8과 미사용 중간점 114가 나오는지 보고, 확정하면 결정적 함수로 사본을 처리한 뒤 재생해 확인합니다.
내보낸 파일을 다시 확인하기
ID, 언어, 본문, 화자 표시는 유지합니다. SRT의 밀리초 구분은 쉼표, WebVTT는 마침표입니다. 납품 영상에 다시 열어 처음·중간·끝과 편집 경계, 짧은 자막, 겹침을 확인합니다.
분할 전사문은 먼저 구간 시작점을 더해 전체 시간을 복원합니다. 구간 내 시간에 바로 보정식을 적용하면 다른 오류가 생깁니다. 일부만 틀리면 범위와 식을 남기고 정상 대사는 늘리지 않습니다.
누락·중복 문장은 시간 계산으로 고칠 수 없습니다. 전사 단계로 돌아갑니다. 단어 정렬은 실제 음성을 읽고 해당 언어를 지원하는 도구를 사용한 후 표본을 들어 봅니다. 밀리초 표시가 정확한 단어 위치를 보장하지 않습니다.
자주 묻는 질문
양수 오프셋은 더하나요?
본문은 음성 시간−자막 시간입니다. 양수면 자막을 늦춥니다. 도구 자체의 부호 규칙도 확인하세요.
일정 이동으로 점차 벌어지는 싱크를 고치나요?
한 위치만 맞습니다. 배율 검증이나 구간 정렬이 필요합니다.
점차 어긋나면 프레임률 문제인가요?
단정할 수 없습니다. 미디어 메타데이터와 편집도 검사합니다.
영상에 박힌 자막도 같은가요?
별도 파일은 수정 가능하지만, 영상에 렌더링된 글자는 별도 영상 편집이 필요합니다.
전사 타임스탬프에 같은 식을 써도 되나요?
같은 원본 시간선 관계일 때만 가능합니다. 구간 시작점을 복원하고 알려진 위치로 확인합니다.
내보내기 뒤 얼마나 확인하나요?
기준점, 편집 경계, 지적 구간부터 보고 납품 요구에 맞게 범위를 늘립니다.
참고 자료
- Subtitle Edit 기능: 시간·동기화.
- WebVTT 규격: 시간 형식.


