앱이 아니라 다듬는 스킬
소리를 듣고 받아 적는 일은 캡컷·브루·Whisper 같은 도구가 한다. 이 스킬은 그 결과물, 자막 파일(SRT·VTT)이나 단어마다 시각이 붙은 받아쓰기 결과를 받아서 보는 사람이 읽을 수 있는 자막으로 다듬는다.
받아쓰기 도구는 말이 나온 시각을 그대로 자막 시각으로 쓴다. 그래서 이런 일이 생긴다.
- 「네」 한 마디가 0.2초 만에 지나가 눈에 안 들어온다
- 자막과 자막 사이에 1~3프레임 틈이 생겨 깜빡인다
- 컷이 바뀌었는데 앞 자막이 몇 프레임 남는다
- 한 자막에 문장 두세 개가 몰려 한 줄에 서른 자가 넘는다
- 화면 아래 이름표를 자막이 덮는다
기준은 지어내지 않는다
| 항목 | 기준 | 출처 |
|---|---|---|
| 한 줄 | 16자 (라틴·공백·문장부호 0.5) | Netflix Korean Timed Text Style Guide |
| 줄 수 | 2줄, 넘칠 때만 두 줄 | 같은 문서 |
| 읽기 속도 | 초당 12자 | 같은 문서 |
| 최소·최대 | 5/6초 · 7초 | Netflix General Requirements |
| 자막 사이 | 최소 2프레임, 반 초 미만 빈틈은 2프레임으로 붙임 | Netflix Subtitle Timing Guidelines |
| 들어오는 점 | 말 첫 프레임에서 1~2프레임 안 | 같은 문서 |
| 꼬리 | 말 끝 뒤 반 초 | 같은 문서 |
| 컷 | 컷 뒤 반 초 안에 말이 시작되면 컷에서, 반 초 안에 컷이 있으면 컷 2프레임 앞에서 끊는다 | 같은 문서 |
자막 색도 잰다 (0.2.0)
넷플릭스 가이드는 글자 색을 정하지 않는다. 그래서 색은 BBC 자막 지침과 웹 접근성 기준(WCAG)에서 가져왔다.
| 항목 | 기준 | 출처 |
|---|---|---|
| 글자 색 | 흰색. 자막 글자 전체를 색으로 칠하면 잡는다 | BBC Subtitle Guidelines 8.1 |
| 화자 색 | 노랑, 청록, 초록은 누가 말하는지 가를 때만. 한 사람에 한 색 | BBC 8.3, 8.4 |
| 포인트 색 | 한 자막에 색 칠한 곳 하나 | 우리가 정한 값 |
| 외곽선 대비 | 글자와 포인트 색이 외곽선과 4.5:1 이상 | WCAG 2.x 1.4.3 |
외곽선은 밝거나 복잡한 화면, 빨리 지나가는 자막(예능, 게임)에서만 쓰고, 브이로그처럼 차분한 화면은 그림자와 옅은 띠만 준다. 이건 화면을 봐야 정하는 일이라 도구가 재지 않고, 우리가 정한 값이라고 적어 두었다. 색은 만든 사람이 고른 것이라 도구는 고치지 않고 알리기만 한다.
쇼츠·릴스용 한 줄 프로필도 있다. 공개 기준 문서가 없어 우리가 정한 값(한 줄 14자 · 1줄 · 최대 4초)이고, 문서와 코드 둘 다에 그렇게 적었다.
재고, 기계로 고치고, 글만 손으로
node scripts/capsync.mjs 자막.srt --fps 30 --cuts cuts.txt --speech words.json -o 고친.srt
타이밍과 줄 18가지를 재고, 기계로 되는 것은 순서대로 고친다. 전체 밀림 → 줄 나누기 → 들어오는 점(말에 맞추고 컷이 이긴다) → 나가는 점(꼬리 · 최소 노출 · 컷 앞) → 틈 → 이름표 피하기. 고친 파일을 다시 돌리면 바뀌는 것이 0이다.
줄을 나눌 때는 「3 / 분」처럼 숫자와 단위, 「다른 거라는 / 것」처럼 꾸밈말과 받는 말을 떼지 않는다.
끝까지 남는 건 대부분 글이 시간보다 긴 자막이다. 그건 시간을 늘려 다음 자막을 밀지 않고 글을 줄인다. 군말 빼기, 어미 줄이기, 숫자로 쓰기, 화면이 보여 주는 말 빼기. 숫자·이름·부정(안·못)은 건드리지 않는다.
실측
같은 받아쓰기 결과(45초, 열두 문장, 점프 컷 다섯, 30fps)로 「유튜브에 올릴 한국어 자막 만들어줘」를 시켰다. 모델마다 세 번.
| 기준 어긴 곳 | 글자 보존 | |
|---|---|---|
| Haiku · 스킬 없이 | 21 · 19 · 25 | 79% · 100% · 100% |
| Haiku · 스킬로 | 1 · 1 · 0 | 100% |
| Sonnet · 스킬 없이 | 27 · 29 · 26 | 100% |
| Sonnet · 스킬로 | 0 · 0 · 0 | 100% |
스킬 없이 Haiku 는 문장 여럿을 한 자막에 몰아 7초를 넘겼고, 한 번은 단어를 빼서 원문의 79%만 남았다. Sonnet 은 문장마다 잘 나눴지만 말 끝에서 바로 끊고(꼬리 10곳) 컷 앞 간격을 안 지켰다. 스킬로 Haiku 에 남은 1곳은 「네」 한 마디의 최소 노출이다.
정직한 한계
- 녹음은 만든 것이다. 대본에 말 빠르기와 쉼, 컷을 붙여 단어 시각을 만들었다. 진짜 녹음의 웅얼거림이나 배경음은 없다.
- 채점 도구가 스킬이 쓰는 도구와 같다. 그래서 「스킬로 0」은 도구가 제 기준을 지켰다는 뜻이다. 이 실측이 보여 주는 건 스킬 없이 만든 자막이 공개 기준을 몇 번 어기느냐다.
- 스킬 이름을 넣지 않고 시키면 Haiku 가 스킬을 꺼내지 않았다. 실측은 「caption-sync 스킬로 해줘」를 붙였다.
- 영상에서 컷과 말 구간을 뽑는 ffmpeg 명령을 적어 두었지만 우리는 돌려 보지 못했다(만든 맥에 ffmpeg 가 없었다).
- 색 규칙 셋은 시험 파일로만 확인했다. 실제 모델에게 시켜 보는 실측은 아직 안 했다.
- 편집 프로그램 안에서만 정한 색은 자막 파일에 안 남는다. 그때는 색 세 값을
--colors로 따로 넣어야 대비를 잰다. - 화자 위치와 단어마다 색이 바뀌는 노래방 자막은 SRT 로 안 된다. 스킬이 그렇다고 알려 주고 넘긴다.
쓰는 법
- Claude Code: "이 자막 파일 싱크 다듬어줘" 또는 "받아쓰기 결과로 자막 만들어줘. caption-sync 스킬로" 하면 재기 → 고치기 → 글 줄이기 → 다시 재기 순서로 간다
- 다른 AI:
npx skills add hanmariyang/giting-skills --skill caption-sync - 도구만:
node plugins/caption-sync/scripts/capsync.mjs 자막.srt --fps 30(재기만, 남은 문제 있으면 끝 코드 1)