본문으로 건너뛰기

버그 제보

이상한 점을 알려 주시면 고칠게요. 지금 보고 있는 페이지와 브라우저 정보가 함께 담겨요.

페이지:

Frontend

자막, 대본, 음성 해설

작성 2026. 10. 17.추가
목차12개 항목
출처와 참고

WebAIM의 「Captions, Transcripts, and Audio Descriptions」, 「Real-time Captioning」을 바탕으로 재구성하고, <track>과 WebVTT는 MDN의 「track 요소」, 「WebVTT 형식」으로 확인해 덧붙이고, 대본 제공 방법과 수어 통역은 web.dev 「Learn Accessibility」의 동영상·오디오 편으로 보강한 노트다. 농맹 사용자를 위한 대본 권고, 녹화 자막 제작 방법, 화면 공유 설명 요령은 WebAIM의 교육 자료 「Web Accessibility Training」(Jon Whiting·Jared Smith, 2024.01)을 바탕으로 보강했다.

멀티미디어의 대체 수단

동영상과 오디오는 소리와 화면 두 갈래로 정보를 전한다. 한쪽을 받지 못하는 사람에게는 그 갈래를 다른 형태로 바꿔 준다.

대체 수단무엇을 바꾸나누구에게
자막(captions)말과 의미 있는 소리 → 화면에 동기화된 글청각장애인, 시끄럽거나 소리를 낼 수 없는 곳의 시청자, 언어를 일부만 아는 사람
대본(transcript)말 + 소리 + 중요한 화면 정보 → 별도의 글보지도 듣지도 못하는 시청각장애인(점자 디스플레이로 읽음), 빠르게 읽고 싶은 사람
음성 해설(audio description)화면에만 있는 정보 → 말시각장애인
수어 통역말 → 수어수어가 제1언어인 농인

어떤 수단이 필요한지는 미디어 종류(오디오 전용·비디오 전용·둘 다), 녹화인지 실시간인지, 목표로 하는 WCAG 버전과 수준으로 정해진다.

자막(captions)과 번역 자막(subtitles)

둘은 다르다. HTML <track>의 kind도 둘을 나눈다.

captionssubtitles
가정소리를 들을 수 없다소리는 들리지만 언어를 모른다
담는 것대사 + 효과음, 음악, 화자 표시 (「[웃음]」, 「[문 닫히는 소리]」)대사의 받아쓰기나 번역
접근성자막 요구 사항을 충족한다대사만으로는 청각장애인에게 부족하다

열린 자막과 닫힌 자막

닫힌 자막(closed)열린 자막(open)
켜고 끄기시청자가 켜고 끈다영상에 박혀 끌 수 없다
모양플레이어·브라우저·OS 설정에 따라 글자 크기·색·배경을 바꿀 수 있다제작자가 정한 대로 고정된다
검색·번역텍스트 파일이라 가능하다영상의 픽셀이라 불가능하다

웹에서는 닫힌 자막이 기본이다. 사용자가 자기 눈에 맞게 자막 모양을 바꿀 수 있어야 하기 때문이다.

WCAG 성공 기준

시간 기반 미디어 기준은 WCAG 1.2에 모여 있다. 녹화된(prerecorded) 콘텐츠와 실시간(live) 콘텐츠를 나눈다.

기준등급요구
1.2.1 오디오 전용·비디오 전용(녹화)A팟캐스트 같은 오디오 전용에는 대본, 소리 없는 영상에는 대본이나 음성 트랙
1.2.2 자막(녹화)A녹화된 동영상에 자막
1.2.3 음성 해설 또는 미디어 대체 수단(녹화)A음성 해설이나 화면 정보까지 담은 대본 중 하나
1.2.4 자막(실시간)AA실시간 동영상에 자막
1.2.5 음성 해설(녹화)AA녹화된 동영상에 음성 해설. 대본으로는 대신할 수 없다
1.2.6 수어(녹화)AAA수어 통역
1.2.7 확장 음성 해설(녹화)AAA대사 사이에 해설할 틈이 없으면 영상을 멈추고 해설
1.2.8 미디어 대체 수단(녹화)AAA동영상 전체의 대본
1.2.9 오디오 전용(실시간)AAA실시간 오디오의 텍스트 대안

AA를 목표로 하면 녹화 동영상에는 자막과 음성 해설, 오디오 전용에는 대본, 실시간 동영상에는 실시간 자막이 필요하다. 기준상 화면 정보까지 담은 대본(서술형 대본, descriptive transcript)은 AAA지만, 농맹 사용자에게는 대본이 미디어에 닿는 유일한 길이므로 AA를 목표로 할 때도 함께 두는 것을 권한다. 시각장애 사용자가 쓸 수 있는 콘텐츠는 대개 농맹 사용자도 점자로 쓸 수 있고, 미디어만 예외이기 때문이다. 자동 재생되는 소리를 끄는 기준(1.4.2)과 움직임 기준은 색과 움직임의 접근성에 있다.

자막의 품질: 동기화·동등·접근 가능

기준뜻흔한 실패
동기화(synchronized)말하는 순간에 맞춰 뜬다몇 초씩 늦거나 앞선다
동등(equivalent)말과 의미 있는 소리를 빠짐없이 옮긴다효과음·화자 표시 누락, 요약해 버린 대사, 교정하지 않은 자동 자막의 오인식
접근 가능(accessible)필요한 사람이 쉽게 켠다자막 버튼이 키보드로 안 눌린다, 자막이 있는지 알 수 없다
  • 화자가 둘 이상이면 누가 말하는지 표시한다.
  • 의미 있는 소리만 넣는다. 「[긴장감 도는 음악]」은 넣고, 의미 없는 배경 소음은 뺀다.
  • 녹화 콘텐츠의 자막은 대본을 먼저 쓰고 시간을 맞추거나(type, then sync), 자동 음성 인식 결과를 사람이 고쳐 만든다. 실시간 방식은 아래 「실시간 자막」에 있다.
  • 자동 생성 자막은 초안이다. 사람이 검수해 고친 뒤에야 동등한 자막이 된다. 고유명사, 전문용어, 문장 부호에서 특히 틀린다. 오인식이 많은 자동 자막은 농인 시청자에게 자막이 없는 것보다 나쁠 수 있다. 틀린 내용을 믿게 되기 때문이다.

대본

대본은 말한 내용에 더해 중요한 소리(「청중이 웃는다」)와 중요한 화면 정보(「한 사람이 방에 들어온다」)를 글로 담는다.

콘텐츠필요한 것
오디오 전용 (팟캐스트, 녹음 강의)대본. 자막은 필요 없다
동영상자막 + 대본. 청각장애 사용자에게 가장 좋은 조합이다
시청각장애 사용자대본. 점자 디스플레이로 읽는다

대본은 검색 엔진과 사용자가 내용을 검색하게 해 주고, 스크린 리더를 말소리보다 훨씬 빠르게 설정해 듣는 사람에게도 영상보다 빠르다. 검색 엔진은 플레이어 안의 자막보다 페이지의 대본 텍스트를 더 잘 읽는다. 다 만든 자막 파일을 내보내 대본의 뼈대로 쓰면 품이 준다.

플레이어마다 대본 기능이 다르고, 플레이어의 대본 버튼에 닿지 못하는 사용자도 있다. 그래서 대본은 플레이어 밖에도 둔다.

방법비고
영상 바로 아래에 본문으로가장 확실하다. 길면 펼침 영역에 넣는다
별도 페이지로 링크영상 옆에 「대본 보기」 링크
접근 가능한 PDF로 링크PDF도 태그·읽기 순서를 갖춰야 한다
영상 플랫폼 설명란에 링크YouTube·Vimeo에 올릴 때

음성 해설

화면에만 있는 정보(자막처럼 뜬 글자, 표정, 장면 전환, 시연 동작)를 해설자가 말로 전한다. 방송에서는 화면 해설이라고도 한다.

전달 방법은 세 가지다.

방법특징
본 영상의 음성에 섞는다모든 시청자가 듣는다
별도 오디오 트랙사용자가 고른다. 플레이어가 다중 오디오 트랙을 지원해야 한다
해설이 든 별도 버전의 영상구현은 쉽지만 두 버전을 관리해야 한다

해설 제작은 비싸고 오래 걸린다. 그래서 처음부터 해설이 필요 없게 만드는 것이 가장 좋다.

  • 「보시는 것처럼」 대신 화면의 목록을 소리 내어 읽는다.
  • 「여기를 누르고 여기를 누르세요」 대신 「오른쪽 위 설정 버튼을 누른다」처럼 무엇을 누르는지 말한다.
  • 화면에 새 글이나 그림이 나오면 발표자가 그 내용을 말한다.
  • 화면 공유로 조작을 보여 줄 때는 동작 + 이름 + 모양 + 위치를 함께 말한다. 「홈 탭의 글꼴 영역에 있는, 지우개 달린 A 모양의 '모든 서식 지우기'를 누른다」처럼 말하면 화면을 못 보는 사람도, 아이콘만 보는 사람도 따라온다.

<track kind="descriptions">로 시간 맞춤 해설 텍스트(보통 WebVTT)를 붙일 수 있다. HTML은 이 트랙을 화면이 안 보일 때 음성으로 합성해 읽히도록 정해 두었지만, W3C WAI는 텍스트 해설이 그것을 소리 내어 읽는 미디어 플레이어에서만 통한다고 안내한다. 쓰려면 플레이어가 지원하는지 먼저 확인하고, 해설이 대사 사이에 다 들어가지 않으면 해설 동안 영상을 멈추는 플레이어 설정이 필요하다.

실시간 자막

화상 회의, 라이브 스트리밍, 실시간 방송은 미리 자막을 만들 수 없다. 말을 글로 바꾸는 일과 소리에 맞춰 띄우는 일을 동시에 해야 한다.

방법방식정확도·비용
속기(stenography)훈련된 속기사가 속기 자판으로 입력한다. 숙련자는 분당 200단어를 넘긴다정확도가 매우 높고 비싸다. 회의 현장이나 원격으로 제공하는 CART(Communication Access Realtime Translation)가 이 방식이다
섀도 스피킹(respeaking)사람이 들은 말을 자기 목소리에 맞춘 음성 인식 프로그램에 다시 말한다. 문장 부호, 화자, 소리·화면 설명도 넣는다정확도가 높고 숙련과 비용이 든다
자동 음성 인식(ASR)YouTube, Zoom, Teams, PowerPoint 등이 자동 자막을 만든다싸고 즉시 된다. 음질이 나쁘거나 화자가 여럿이거나 말이 겹치면 정확도가 떨어지고, 문장 부호가 빠지기도 한다
  • 자동 자막은 조용한 환경에서 한 사람이 또렷하게 말할 때만 그나마 쓸 만하다. 중요한 행사는 속기나 섀도 스피킹을 쓴다.
  • 녹화본으로 남길 때는 실시간 자막을 사람이 교정해 녹화 자막으로 다시 쓴다.
  • 플랫폼이 자막을 지원하지 않으면 별도 자막 앱이나 브라우저 창을 미디어 옆에 띄워 함께 보여 준다.
  • 실시간 행사에서는 수어 통역사를 화면에 함께 띄우기도 한다. 수어는 자막보다 표현이 풍부해 수어가 제1언어인 농인에게 더 나은 경험을 주지만, 세계에 300개가 넘는 수어가 있어 통역 하나로 모든 시청자를 돕지는 못하고 비용도 크다.
  • 실시간 콘텐츠의 음성 해설은 따로 트랙을 넣기 어렵다. 발표자가 화면에 나온 내용을 말로 설명하는 것이 현실적인 해법이다.

웹에서 자막 붙이기: <track>과 WebVTT

<track>

<video>나 <audio>의 자식으로 시간 맞춤 텍스트 트랙을 붙이는 빈 요소다.

<video controls src="lecture.mp4">
  <track kind="captions" src="lecture.ko.vtt" srclang="ko" label="한국어 자막" default>
  <track kind="subtitles" src="lecture.en.vtt" srclang="en" label="English">
  <track kind="chapters" src="lecture.chapters.vtt" srclang="ko">
  <a href="lecture.mp4">동영상 내려받기</a>
</video>
<p><a href="lecture-transcript.html">강의 대본 보기</a></p>
속성뜻
kindcaptions, subtitles, descriptions, chapters, metadata. 생략하면 subtitles이므로 청각장애인용 자막은 captions라고 명시한다
src.vtt 파일 주소. 필수. 다른 출처면 부모 미디어 요소에 crossorigin 속성이 필요하다
srclang트랙 언어(BCP 47). kind="subtitles"면 필수
label자막 메뉴에 보이는 이름
default사용자 설정이 따로 없으면 이 트랙을 켠다. 미디어 요소당 하나만

같은 kind·srclang·label 조합의 트랙을 둘 이상 둘 수 없다. 자막 모양은 video::cue { font-size: 1.25rem; }처럼 ::cue로 꾸미지만, 사용자의 OS·브라우저 자막 설정이 우선할 수 있다.

WebVTT 파일

WebVTT(Web Video Text Tracks)는 text/vtt MIME 타입, .vtt 확장자, UTF-8 인코딩을 쓰는 텍스트 형식이다. 서버가 text/vtt로 보내야 브라우저가 읽는다.

WEBVTT
 
NOTE 화자는 <v> 태그로, 의미 있는 소리는 대괄호로 적는다
 
00:00:01.000 --> 00:00:04.000
<v 진행자>접근성 강의에 오신 걸 환영합니다.
 
00:00:04.500 --> 00:00:07.000 line:0 align:start
[박수 소리]
 
00:00:07.200 --> 00:00:11.000
<v 강사>오늘은 자막을 다는 방법을 봅니다.
구성규칙
머리글첫 줄은 WEBVTT
큐(cue)선택 식별자 → 시작 --> 끝 시간 줄 → 내용. 빈 줄이 큐를 끝낸다, 내용 안에 빈 줄을 넣지 않는다
시간mm:ss.ttt 또는 hh:mm:ss.ttt. 끝은 시작보다 늦고, 큐의 시작 시각은 앞 큐보다 앞서지 않는다
큐 설정시간 줄 뒤에 line, position, size, align, vertical. 화면 아래쪽의 중요한 글자를 가리지 않게 자막 위치를 옮길 때 쓴다
내용 태그<v 화자>, <i>, <b>, <c.클래스>, <lang en>
주석NOTE로 시작. 사용자에게는 보이지 않는다
이스케이프&, <, >는 &amp;, &lt;, &gt;

미디어 플레이어를 직접 만들 때는 자막 켜기 버튼을 키보드로 조작할 수 있게 하고 버튼 상태를 알린다(키보드 접근성과 포커스 관리, 접근 가능한 위젯). 유튜브 같은 외부 플레이어를 iframe으로 넣으면 그 플레이어의 자막 기능을 쓰고, iframe에는 title을 준다(접근 가능한 페이지 구조).

정리

  • 동영상에는 자막 + 대본, 오디오 전용에는 대본, 화면에만 있는 정보에는 음성 해설을 준다. 실시간 동영상에는 실시간 자막이 AA 요구다.
  • 청각장애인용 자막은 대사뿐 아니라 소리와 화자까지 담는 captions다. <track>의 기본값 subtitles와 다르다.
  • 자막은 동기화·동등·접근 가능해야 한다. 자동 자막은 사람이 검수하기 전까지 초안이다.
  • 음성 해설은 비싸므로 발표자가 화면을 말로 설명하게 해 필요를 줄인다.
  • 웹에서는 닫힌 자막을 <track kind="captions">와 WebVTT 파일로 붙여 사용자가 켜고 끄고 모양을 바꾸게 한다.

관련 노트: 웹 접근성, 장애 유형별 웹 사용, 색과 움직임의 접근성, 대체 텍스트, 링크, 쉬운 글, WCAG와 POUR 원칙, 이미지·오디오·비디오 임베드

원본 기록7

댓글

GitHub 계정으로 댓글을 남길 수 있어요.