Copyright © 2026 World Wide Web Consortium. W3C® liability, trademark and document use rules apply.
이 절은 이 문서가 발행된 시점의 상태를 설명한다. 현재 W3C 발행물 목록과 이 기술 보고서의 최신 개정판은 W3C 표준 및 초안 색인에서 확인할 수 있다.
이 문서는 레지스트리 절 을 포함하며 레지스트리 표를 정의한다. 이는 w3c 레지스트리에 대한 [w3c-process] 요구사항에서 정의한 바와 같다. 레지스트리 표만 변경하는 문서 업데이트는 권고안 트랙 업데이트에 대한 다른 요구사항을 충족하지 않고도 수행할 수 있으며, 이는 레지스트리 표 업데이트에 명시된 바와 같다; 해당 레지스트리 표를 업데이트하기 위한 요구사항은 H. 레지스트리 절 내에서 규범적으로 지정된다.
워킹 그룹의 구현 보고서를 참조하기 바란다.
이 명세가 CR 단계를 벗어나기 위해서는, 이 명세에서 정의되었지만 [TTML2]에는 아직 존재하지 않는 모든 기능에 대해 최소 2개의 독립적인 구현이 구현 보고서에 문서화되어야 한다. 워킹 그룹은 구현이 공개적으로 이용 가능해야 한다고 요구하지는 않지만, 그렇게 하기를 권장한다.
초기 워킹 드래프트 이후 적용된 실질적 변경사항 목록은 substantive-changes-summary.txt에 있다.
워킹 그룹은 다음의 위험 상태 기능을 식별했다:
#113에 대한 가능한 해결안입니다.
#113에 대한 가능한 해결안입니다.
#115와의 연결점은, 이것이 어떤 참조 가능한 임베드된 오디오 리소스의 존재도 함축한다는 점이며, 이는 #115에서 설명된 옵션 중 하나입니다.
#115와의 연결점은, 이것이 어떤 참조 가능한 임베드된 오디오 리소스의 존재도 함축한다는 점이며, 이는 #115에서 설명된 옵션 중 하나입니다.
#115에 대한 가능한 해결안입니다.
#117에 대한 가능한 해결안입니다.
#117에 대한 가능한 해결안입니다.
#nested-div(이전의 #scriptEventGrouping) 및 #scriptEventMapping 기능에 대한 지원은, 함께, 구현자
피드백이 있을 때까지 위험 상태에 있습니다.
위험 상태 기능은 Proposed Recommendation으로 진행되기 전에 제거될 수 있습니다.
이 문서는 Timed Text Working Group에 의해 Recommendation 트랙을 사용하는 Candidate Recommendation Draft로 게시되었습니다.
Candidate Recommendation으로 게시되었다는 것이 W3C 및 그 회원들의 승인을 의미하지는 않습니다. Candidate Recommendation Draft는 Working Group이 이후의 Candidate Recommendation Snapshot에 포함하려는 이전 Candidate Recommendation의 변경 사항을 통합합니다.
이것은 초안 문서이며 언제든지 다른 문서로 업데이트, 대체 또는 폐기될 수 있습니다. 이 문서를 진행 중인 작업 이외의 것으로 인용하는 것은 부적절합니다. 이 예정된 Recommendation의 향후 업데이트에는 새 기능이 포함될 수 있습니다.
이 문서는 W3C Patent Policy에 따라 운영되는 그룹이 작성했습니다. W3C는 해당 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지합니다. 해당 페이지에는 특허 공개 지침도 포함되어 있습니다. 어떤 개인이 자신이 믿기에 Essential Claim(s)을 포함하는 특허에 대해 실제 지식을 가지고 있는 경우, 그 개인은 W3C Patent Policy 제6절에 따라 그 정보를 공개해야 합니다.
이 문서는 2025년 8월 18일 W3C Process Document의 적용을 받습니다.
이 명세는 Timed Text Markup Language version 2.0 [TTML2]의 텍스트 기반 프로파일을 정의하며, 전 세계의 더빙 및 오디오 설명 워크플로를 지원하고, [DAPT-REQS]에 정의된 요구사항을 충족하며, [TTML2] 및 그 프로파일 내의 시각적 표시 기능 사용을 허용하기 위한 것입니다. 예를 들어 [ttml-imsc1.3]의 기능이 있습니다.
이 절은 비규범적이다.
일반적인 용법에서 script라는 단어의 한 의미는 영화, 텔레비전 프로그램, 연극 등의 서면 텍스트이다. script는 완성된 제작물의 기록, 즉 transcript일 수도 있고, 아직 만들어지지 않은 제작물을 위한 계획일 수도 있다. 이 문서에서는 도메인별 용어를 사용하며, 더 구체적으로 다음과 같이 정의한다:
DAPT script라는 용어는 transcripts와 scripts 모두를 가리키는 일반적인 의미로 사용되며, 이 명세의 공식 요구사항에 대한 적합성 지점이다. DAPT Scripts는 시간 지정 텍스트와, 말하는 등장인물 같은 관련 메타데이터로 구성된다.
더빙 워크플로에서는 transcript가 생성되고 번역되어 script를 만든다. 오디오 설명 워크플로에서는 transcript가 비디오 이미지를 설명하며, 이후 오디오 등가물을 녹음하기 위한 script로 직접 사용된다.
DAPT는 현지화 및 오디오 설명 파이프라인에서 저작, 프롬프팅 및 재생 도구 간의 transcripts와 scripts (즉 DAPT Scripts) 교환을 위한 TTML 기반 형식이다. DAPT document는 DAPT Script의 직렬화 가능한 형식으로, 더빙 또는 오디오 설명에 필요한 정보를 담도록 설계된다. 여기에는 DAPT script의 유형, 대화, 설명, 타이밍, 메타데이터, 원어 전사 텍스트, 번역 텍스트, 언어 정보 및 오디오 믹싱 지시가 포함되며, 사용자 정의 주석 또는 향후 추가 기능을 허용하도록 확장 가능하다.
이 명세는 DAPT scripts의 데이터 모델과 [TTML2] 문서로서의 표현을 정의한다(4. DAPT 데이터 모델 및 해당 TTML 구문 참조). 여기에는 일부 제약과 제한이 있다(5. 제약 참조).
DAPT script는 원래 형식으로 이해할 수 없는 사용자를 위해 시청각 미디어를 접근 가능하게 만들거나 현지화하는 데 사용될 것으로 예상되며, [media-accessibility-reqs]에 설명된 접근성 요구를 포함하는 transcripts와 관련된 사용자 요구를 충족하는 해결책의 일부로 사용되고, 또한 더빙을 통해 대화를 다른 언어로 번역해야 하는 사용자를 지원하는 데 사용될 것으로 예상된다.
DAPT script 콘텐츠의 모든 부분은 관련 미디어에서 무엇을 나타내는지에 대한 표시를 Represents 속성을 통해 마크업해야 한다; 마찬가지로 전체 DAPT Script는 자신이 나타내는 모든 콘텐츠 유형을 나열해야 한다. 예를 들어 오디오 콘텐츠 또는 시각적 콘텐츠를 나타내는지, 시각적 콘텐츠라면 텍스트 또는 비텍스트 등을 나타내는지가 이에 해당한다. 계층적 콘텐츠 서술자의 레지스트리가 제공된다.
더빙과 오디오 설명 모두를 위한 저작 워크플로는 [DAPT-REQS]에 설명된 공통 요구사항을 공유하는 유사한 단계를 포함한다. 두 경우 모두 저자는 콘텐츠를 검토하고, 대화 또는 비디오 이미지에서 일어나는 일을 그것이 발생하는 시간과 함께 기록한다. 추가 변환 프로세스는 텍스트를 다른 언어로 바꾸고, 정확한 타이밍 제약에 맞도록 문구를 조정할 수 있다. 그런 다음 script의 오디오 렌더링이 생성되는 단계가 있고, 이는 최종적으로 프로그램 오디오에 믹싱된다. 그 믹싱은 배포 전에 발생할 수도 있고, 플레이어에서 직접 발생할 수도 있다.
더빙 프로세스는 더빙 스크립트를 만드는 것으로 이루어지며, 다음을 포함하는 복잡한 다단계 프로세스입니다:
더빙 스크립트는 비대사 프로그램 오디오와 믹싱될 번역된 대사를 녹음하는 데 사용되는 트랜스크립트 또는 스크립트 (워크플로 단계에 따라 다름)입니다. 이는 다른 언어로 된 프로그램의 현지화 버전을 생성하기 위한 것이며, 이를 더빙판, 줄여서 더빙이라고 합니다.
더빙 스크립트는 대체 언어로 된 자막 또는 폐쇄 자막을 만들기 위한 출발점으로 유용할 수 있습니다. 이 명세는 TTML의 다른 프로파일에 있는 자막 및 캡션 문서를 추가하고, 또 그 문서로 변환하는 것을 용이하게 하도록 설계되었습니다. 예를 들어 [ttml-imsc1.3]와 같은 프로파일이 있으며, DAPT 문서에 자막 스타일링 구문을 포함할 수 있도록 허용하는 방식이 그 예입니다. 또는, 음성 아티스트가 스크립트화된 대사를 녹음할 때 도움을 주기 위해 스타일링을 적용할 수 있습니다.
오디오 설명 콘텐츠 생성 역시 다단계 프로세스입니다. 오디오 설명은, 비디오 설명이라고도 하며 또는 [media-accessibility-reqs]에서는 설명된 비디오라고 하며, 시각적 표현을 완전히 볼 수 없는 시청자가 콘텐츠를 이해하도록 돕는 오디오 서비스입니다. 이는 주 프로그램 오디오와 각 설명의 오디오 렌디션을 믹싱한 결과이며, 대사와 충돌하지 않는 시간에 맞도록 작성되어, 오디오 설명이 믹싱된 오디오 트랙을 제공합니다. 주 프로그램 오디오는 추가 믹싱이 이루어지기 전 프로그램과 관련된 오디오를 가리킵니다. 설명은 프로그램 표현의 한 측면을 설명하는 단어들의 집합으로, 발성 및 녹음을 통해 오디오로 렌더링하기에 적합하거나, [WCAG22]에 정의된 것처럼 텍스트 음성 변환을 위한 텍스트 대체 소스로 사용됩니다. 오디오 설명이 무엇이며 어떻게 작동하는지에 대한 더 많은 정보는 [BBC-WHP051]에서 찾을 수 있습니다.
오디오 설명 스크립트 작성에는 일반적으로 다음이 포함됩니다:
오디오 믹싱은 미디어 배포 전에 발생할 수도 있고, 클라이언트에서 발생할 수도 있습니다. 오디오 설명 스크립트가 플레이어에 전달되는 경우, 텍스트는 대체 렌더링을 제공하는 데 사용될 수 있습니다. 예를 들어 점자 디스플레이에서, 또는 사용자가 구성한 스크린 리더를 사용하는 방식입니다.
DAPT Scripts는 다른 워크플로와 시나리오에서도 유용할 수 있다. 예를 들어 Original language transcripts는 다음과 같이 사용될 수 있다:
Original language transcripts와 Translated transcripts 모두는 다음과 같이 사용될 수 있다:
문서의 최상위 구조는 다음과 같다:
http://www.w3.org/ns/ttml의 <tt> 루트 요소는
이것이 TTML 문서임을 나타내고,
ttp:contentProfiles
속성은 이 문서가 이 명세에서 정의한 DAPT 콘텐츠 프로필을 따른다는 것을 나타낸다.
daptm:scriptRepresents 속성은 문서의 내용이
원래 프로그램 안에서 무엇에 대한 대체물인지를 나타낸다.daptm:scriptType 속성은 transcript 또는 script의 유형을 나타낸다.
다만 이 빈 예제에서는 문서의 구조만 표시되므로 관련이 없다.daptm:langSrc 속성은
기본 텍스트 언어 소스를 나타낸다.
예를 들어 콘텐츠의 원래 언어가 이에 해당하며,
xml:lang 속성은 이 script의 기본 언어를 나타낸다.
이 경우 두 값은 같다.
두 속성은 모두 상속되며 문서 내용 안에서 재정의할 수 있다.
이 구조는 더빙 또는 오디오 설명 등 모든 유형의 DAPT scripts에 적용된다.
<tt xmlns="http://www.w3.org/ns/ttml"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
xmlns:daptm="http://www.w3.org/ns/ttml/profile/dapt#metadata"
ttp:contentProfiles="http://www.w3.org/ns/ttml/profile/dapt1.0/content"
xml:lang="en"
daptm:langSrc="en"
daptm:scriptRepresents="audio"
daptm:scriptType="originalTranscript">
<head>
<metadata>
<!-- 추가 메타데이터를 여기에 둘 수 있다 -->
<!-- 모든 등장인물은 ttm:agent 요소 집합으로 여기에 정의해야 한다 -->
</metadata>
<styling>
<!-- 스타일링은 선택 사항이며 style 요소 집합으로 구성된다 -->
</styling>
<layout>
<!-- 레이아웃은 선택 사항이며 region 요소 집합으로 구성된다 -->
</layout>
</head>
<body>
<!-- 콘텐츠는 여기에 들어가며 각 Script Event에 대한 div로 구성된다 -->
<div xml:id="d1" begin="..." end="..." daptm:represents="audio.dialogue">
<p>
<!-- 텍스트 블록은 p 요소에 포함된다 -->
</p>
<p xml:lang="fr" daptm:langSrc="en">
<!-- 번역 텍스트는 번역의 소스 언어와 관련된다 -->
</p>
</div>
</body>
</tt>
다음 예제들은 [DAPT-REQS]에 설명된 워크플로의 각 단계에서 생성되는 시간 지정 텍스트 transcripts 및 scripts에 해당한다.
첫 번째 예제는 설명 또는 전사를 위한 시간 지정 기회가 식별되었지만
아직 텍스트가 작성되지 않은 초기 단계 transcript를 보여준다;
여기에 있는 <body> 요소의 daptm:represents 속성은
다른 값을 지정하지 않기 때문에 <div> 요소에 상속된다:
...
<body daptm:represents="...">
<div xml:id="id1" begin="10s" end="13s">
</div>
<div xml:id="id2" begin="18s" end="20s">
</div>
</body>
...
다음 예제들은 더빙 및 오디오 설명 워크플로에서의 다양한 사용을 보여준다.
설명이 추가되면 이것은 Pre-Recording Script가 된다.
이 경우 대부분의 오디오 설명 콘텐츠가 고유한 언어가 없는 비디오 이미지를 전사한다는 점을 반영하기 위해,
Text Language Source는
속성으로 표현되며,
문서의 최상위 수준에서 daptm:langSrczxx로 설정된다.
이는 [bcp47]에서
언어 분류가 적용되지 않는 콘텐츠를 식별하는 것으로 정의된 언어 코드이다:
<tt xmlns="http://www.w3.org/ns/ttml"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
xmlns:daptm="http://www.w3.org/ns/ttml/profile/dapt#metadata"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
ttp:contentProfiles="http://www.w3.org/ns/ttml/profile/dapt1.0/content"
xml:lang="en"
daptm:langSrc="zxx"
daptm:scriptRepresents="visual.nonText"
daptm:scriptType="preRecording">
<body>
<div begin="10s" end="13s" xml:id="a1" daptm:represents="visual.nonText">
<p>
한 여성이 작은 범선에 올라탄다.
</p>
</div>
<div begin="18s" end="20s" xml:id="a2" daptm:represents="visual.nonText">
<p>
여성이 키를 당기자 배가 방향을 튼다.
</p>
</div>
</body>
</tt>
오디오 설명 콘텐츠에는 종종 시각 이미지에 있는 텍스트가 포함된다. 예를 들어 이미지에 표지판, 위치 등이 들어 있는 경우가 있다. 다음 예제는 그러한 경우를 보여준다: Script Represents는 script의 내용이 비텍스트 시각 정보에 더해 텍스트 시각 정보도 나타낸다는 것을 보여주도록 확장된다. 여기서는 그 텍스트가 실제로 위치임을 반영하기 위해 Script Event에 더 정확한 Represents 값이 지정된다. 이는 더 정확한 값이 Script Represents의 새 값의 하위 유형이기 때문에 허용된다. 마지막으로, 텍스트에 고유한 언어가 있으므로 Text Language Source는 해당 언어를 반영하도록 설정된다.
<tt xmlns="http://www.w3.org/ns/ttml"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
xmlns:daptm="http://www.w3.org/ns/ttml/profile/dapt#metadata"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
ttp:contentProfiles="http://www.w3.org/ns/ttml/profile/dapt1.0/content"
xml:lang="en"
daptm:langSrc="zxx"
daptm:scriptRepresents="visual.nonText visual.text"
daptm:scriptType="preRecording">
<body>
<div begin="7s" end="8.5s" xml:id="at1"
daptm:represents="visual.text.location" daptm:langSrc="en">
<p>
영국 레이크 디스트릭트
</p>
</div>
<div begin="10s" end="13s" xml:id="a1"
daptm:represents="visual.nonText">
<p>
한 여성이 작은 범선에 올라탄다.
</p>
</div>
<div begin="18s" end="20s" xml:id="a2"
daptm:represents="visual.nonText">
<p>
여성이 키를 당기자 배가 방향을 튼다.
</p>
</div>
</body>
</tt>
텍스트 음성 변환을 사용하지 않고 오디오 녹음을 만든 후에는,
재생 믹싱을 위한 지시를 삽입할 수 있다. 예를 들어 "received" 오디오의 게인을
<span> 요소 내부에서 재생되는 오디오를 믹싱하기 전에 변경할 수 있으며,
들어갈 때 값을 부드럽게 애니메이션하고 나올 때 되돌릴 수 있다:
<tt ...
daptm:scriptRepresents="visual.nonText"
daptm:scriptType="asRecorded"
xml:lang="en"
daptm:langSrc="zxx">
...
<div begin="25s" end="28s" xml:id="a3" daptm:represents="visual.nonText">
<p>
<animate begin="0.0s" end="0.3s" tta:gain="1;0.39" fill="freeze"/>
<animate begin="2.7s" end="3s" tta:gain="0.39;1"/>
<span begin="0.3s" end="2.7s">
<audio src="clip3.wav"/>
돛이 바람에 부풀어 오른다.</span>
</p>
</div>
...
문서 수준에서 daptm:scriptRepresents 속성은
문서가 관련 미디어의 시각적 텍스트와 시각적 비텍스트 콘텐츠를 모두 나타낸다는 것을 나타낸다.
실제로 시각적 텍스트를 나타내는 Script Events가 없을 수도 있다.
예를 들어 비디오 이미지에 텍스트가 없기 때문이다.
위 예제에서 <div> 요소의
begin 속성은 그 자식의 "syncbase"가 되는 시간을 정의하므로,
여기서 <animate> 및 <span> 요소의 시간은
25s에 상대적이다.
첫 번째 <animate> 요소는 0.3s에 걸쳐 게인을 1에서
0.39로 낮추고, 종료 후 해당 값을 고정하며,
두 번째 요소는 이 설명의 마지막 0.3s 동안 이를 다시 높인다.
그런 다음 <span> 요소는 첫 번째 오디오 딥이 끝난 뒤에만 시작되도록
시간이 지정된다.
오디오 녹음이 길고 일부분만 재생해야 하는 경우,
clipBegin 및 clipEnd를 사용하여 그렇게 할 수 있다.
파일의 오디오 중 5s부터 8s까지의 부분만 재생하려면 다음과 같다:
...
<span><audio src="long_audio.wav" clipBegin="5s" clipEnd="8s"/>
한 여성이 작은 범선에 올라탄다.</span>
...
또는 텍스트가 말해지도록 트리거하기 위해 오디오 속성을 추가할 수 있다:
...
<div begin="18s" end="20s" xml:id="a2">
<p>
<span tta:speak="normal">
여성이 키를 당기자 배가 방향을 튼다.</span>
</p>
</div>
...
오디오를 직접 임베드하는 것도 가능하며, 이를 통해 하나의 문서가 script와 녹음된 오디오를 함께 포함할 수 있다:
...
<div begin="25s" end="28s" xml:id="a3">
<p>
<animate begin="0.0s" end="0.3s" tta:gain="1;0.39" fill="freeze"/>
<animate begin="2.7s" end="3s" tta:gain="0.39;1"/>
<span begin="0.3s" end="2.7s">
<audio><source><data type="audio/wave">
[base64로 인코딩된 오디오 데이터]
</data></source></audio>
돛이 바람에 부풀어 오른다.</span>
</p>
</div>
...
예제 1의 기본 구조에서,
오디오를 전사하면 원어 더빙 transcript가
생성되며, 이는 다음과 같을 수 있다.
특정 스타일 또는 레이아웃은 정의되어 있지 않으며, 여기서는 대화의 전사에 초점을 둔다.
등장인물은 <metadata> 요소 안에서 식별된다.
언어와 text language source는
각각 xml:lang 및 속성을 사용하여
정의된다는 점에 유의하라.
전사본이 번역되지 않았기 때문에
두 속성은 같은 값을 가진다.
daptm:langSrc
<tt xmlns="http://www.w3.org/ns/ttml"
xmlns:ttm="http://www.w3.org/ns/ttml#metadata"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
xmlns:daptm="http://www.w3.org/ns/ttml/profile/dapt#metadata"
ttp:contentProfiles="http://www.w3.org/ns/ttml/profile/dapt1.0/content"
xml:lang="fr"
daptm:langSrc="fr"
daptm:scriptRepresents="audio.dialogue"
daptm:scriptType="originalTranscript">
<head>
<metadata>
<ttm:agent type="character" xml:id="character_1">
<ttm:name type="alias">ASSANE</ttm:name>
</ttm:agent>
</metadata>
</head>
<body>
<div begin="10s" end="13s" xml:id="d1" daptm:represents="audio.dialogue">
<p ttm:agent="character_1">
<span>Et c'est grâce à ça qu'on va devenir riches.</span>
</p>
</div>
</body>
</tt>
텍스트를 번역한 후 문서는 수정된다. 여기에는 번역 텍스트가 포함되며,
이 경우 원문 텍스트도 보존된다. 주 문서의 기본
언어는 초점이 번역된 언어에 있음을 나타내도록 변경된다.
xml:lang 및 속성의 조합은
텍스트가 원문인지 번역문인지 표시하는 데 사용된다.
이 경우 예제를 더 쉽게 읽을 수 있도록 두 속성이 daptm:langSrc<tt>와 <p>
요소 모두에 존재하지만,
상속 모델을 활용하여 일부 경우에는 이를 생략할 수도 있다:
<tt xmlns="http://www.w3.org/ns/ttml"
xmlns:ttm="http://www.w3.org/ns/ttml#metadata"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
xmlns:daptm="http://www.w3.org/ns/ttml/profile/dapt#metadata"
ttp:contentProfiles="http://www.w3.org/ns/ttml/profile/dapt1.0/content"
xml:lang="en"
daptm:langSrc="fr"
daptm:scriptRepresents="audio.dialogue"
daptm:scriptType="translatedTranscript">
<head>
<metadata>
<ttm:agent type="character" xml:id="character_1">
<ttm:name type="alias">ASSANE</ttm:name>
</ttm:agent>
</metadata>
</head>
<body>
<div begin="10s" end="13s" xml:id="d1" ttm:agent="character_1" daptm:represents="audio.dialogue">
<p xml:lang="fr" daptm:langSrc="fr"> <!-- 원문 -->
<span>Et c'est grâce à ça qu'on va devenir riches.</span>
</p>
<p xml:lang="en" daptm:langSrc="fr"> <!-- 번역문 -->
<span>And thanks to that, we're gonna get rich.</span>
</p>
</div>
</body>
</tt>
녹음 전에 수행되는 각색 프로세스는 녹음을 돕기 위해 문구를 조정하거나
추가 타이밍을 더할 수 있다.
daptm:scriptType 속성도 다음 예제처럼 수정된다:
<tt xmlns="http://www.w3.org/ns/ttml"
xmlns:ttm="http://www.w3.org/ns/ttml#metadata"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
xmlns:daptm="http://www.w3.org/ns/ttml/profile/dapt#metadata"
ttp:contentProfiles="http://www.w3.org/ns/ttml/profile/dapt1.0/content"
xml:lang="en"
daptm:langSrc="fr"
daptm:scriptRepresents="audio.dialogue"
daptm:scriptType="preRecording">
<head>
<metadata>
<ttm:agent type="character" xml:id="character_1">
<ttm:name type="alias">ASSANE</ttm:name>
</ttm:agent>
</metadata>
</head>
<body>
<div begin="10s" end="13s" xml:id="d1" ttm:agent="character_1" daptm:onScreen="ON_OFF" daptm:represents="audio.dialogue">
<p xml:lang="fr" daptm:langSrc="fr">
<span>Et c'est grâce à ça qu'on va devenir riches.</span>
</p>
<p xml:lang="en" daptm:langSrc="fr">
<span begin="0s">And thanks to that,</span><span begin="1.5s"> we're gonna get rich.</span>
</p>
</div>
</body>
</tt>
이 문서는 다음 규약을 사용한다:
<someElement>.
해당 엔터티는 본문에서도 요소로 설명된다.
이 명세에서 참조되는 요소의 이름이
네임스페이스로 한정되어 있지 않으면 TT 네임스페이스가 적용된다(네임스페이스 참조).
attributePrefix:attributeName 형식으로 스타일링되고,
접두사가 없는 속성은 attributeName 형식으로 스타일링된다.
해당 엔터티는 본문에서도 속성으로 설명된다.daptm:foo라는 새 속성을
두 가지 가능한 값 bar 및 baz를 가진 문자열로 정의한다.
daptm:foo
: "bar"
| "baz"
LocationPath 표기법을 사용한다.
예를 들어 <tt> 요소의 자식인
<head> 요소의 첫 번째
<metadata> 자식 요소를 참조하려면,
다음 경로를 사용한다:
/tt/head/metadata[0].
레지스트리 표 절의 콘텐츠는 [w3c-process]에 정의된 것처럼 다른 권고안 트랙 콘텐츠와 업데이트 요구사항이 다르다.
이 절은 DAPT의 데이터 모델과 해당 TTML 구문을 지정한다. 모델에는 속성을 가질 수 있고 다른 객체와 연관될 수 있는 객체들이 있다. TTML 구문에서 이러한 객체와 속성은 요소 및 속성으로 표현되지만, 객체가 항상 요소로 표현되고 속성이 항상 속성으로 표현되는 것은 아니다.
그림 1은 DAPT 데이터 모델을 설명하며, 모든 객체와 속성을 이 문서의 해당 절에 하이퍼링크한다. 공유 속성은 기울임꼴로 표시된다. 다이어그램의 다른 모든 규약은 [uml]을 따른다.
#115도 참조하십시오. 인라인이 아닌 임베드된 오디오 리소스를 지원하려는 경우, 이를 위한 객체를 만들고 데이터 모델에 추가해야 할까요?
DAPT 대본은 저작 워크플로 내에서 처리되거나 클라이언트에 의해 처리되는 문서에 해당하며, 이 명세의 제약을 따르는 전사본 또는 대본이다. 이는 다음 절에 정의된 속성과 객체를 가진다: 대본이 나타내는 것, 대본 유형, 기본 언어, 텍스트 언어 소스, 대본 이벤트, 그리고 더빙 대본의 경우 등장인물.
DAPT 문서는 DAPT 대본을 나타내는 [TTML2] 시간 지정 텍스트 콘텐츠 문서 인스턴스이다. DAPT 문서는 이 절과 다음 절들에 정의된 구조와 제약을 가진다.
[TTML2] 시간 지정 텍스트 콘텐츠 문서
인스턴스는
TT 네임스페이스의 루트 <tt> 요소를 가진다.
대본이 나타내는 것 속성은 DAPT 대본의 필수 속성이며, 문서의 내용이 관련 미디어 객체의 어떤 구성 요소를 나타내는지를 표시한다. 문서의 내용은 해당 구성 요소에 대한 접근 가능한 대체물을 제공하는 메커니즘의 일부로 사용될 수 있다.
대본 이벤트에는 관련 속성인 나타내는 것이 있으며, 그 속성에 허용되는 값에는 대본이 나타내는 것의 값에 의존하는 제약이 있다.
이 속성을 나타내기 위해, daptm:scriptRepresents 속성은
<tt> 요소에 존재해야 MUST 하며,
다음 구문을 따르는 값을 가져야 한다:
daptm:scriptRepresents
: <content-descriptor> ( <lwsp>+ <content-descriptor>)*
<lwsp> # as TTML2
기본 언어는 DAPT 대본의 필수 속성이며, 대본 이벤트의 텍스트 콘텐츠에 대한 기본 언어를 나타낸다. 이 언어는 원어 중 하나이거나 번역 언어일 수 있다. 번역 언어를 나타내는 경우, 이는 더빙 또는 오디오 설명 대본이 준비되는 최종 언어일 수 있으며, 이를 대상 녹음 언어라고 한다. 또는 워크플로에서 사용되는 중간 언어, 즉 피벗 언어일 수도 있다.
기본 언어는 DAPT 문서에서 다음 구조와 제약으로 표현된다:
xml:lang 속성은 <tt> 요소에 존재해야 MUST 하며 그 값은
비어 있지 않아야 MUST NOT
한다.
대본 유형 속성은 DAPT 대본의 필수 속성이며, 더빙 및 오디오 설명 워크플로에서 사용되는 문서의 유형을 다음 중 하나로 설명한다: 원어 전사본, 번역 전사본, 녹음 전 대본, 녹음 완료 대본.
이 속성을 나타내기 위해, daptm:scriptType 속성은
<tt> 요소에 존재해야 MUST 한다:
daptm:scriptType
: "originalTranscript"
| "translatedTranscript"
| "preRecording"
| "asRecorded"
문서 유형의 정의와 해당 daptm:scriptType 속성 값은 다음과 같다:
daptm:scriptType 속성 값이 originalTranscript일 때,
문서는 대화 및/또는 화면상 텍스트를 그 고유한 말/문자 언어로 문자 그대로 전사한 것,
또는 비대화 소리와 비언어적 시각 콘텐츠를 전사한 것이다.
daptm:scriptType 속성 값이 translatedTranscript일 때,
문서는 원어 전사본을 공통 언어로 번역한 것을
나타낸다.
이는 녹음 전 대본을 만들기 위해 각색될 수 있으며, 및/또는 대상 녹음 언어로 추가 번역하기 위한 기반으로 사용될 수 있다.
daptm:scriptType 속성 값이 preRecording일 때,
문서는 원어 전사본 또는
번역 전사본을 녹음을 위해 각색한 결과를
나타낸다. 예를 들어 더빙 워크플로에서 더 나은 립싱크를 위해,
또는 오디오 설명 워크플로에서 사용 가능한 시간 안에 단어가 들어맞도록 보장하기 위해서이다.
daptm:scriptType 속성 값이 asRecorded일 때,
문서는 실제 오디오 녹음을 나타낸다.
다음 예제는 고아 상태이다 - 열거된 대본 유형 앞, 이 절의 맨 위로 옮길 것인가?
<tt daptm:scriptType="originalTranscript">
...
</tt>
DAPT 대본은 특정 시간 간격에 대한 대화, 화면상 텍스트 또는 설명에 각각 해당하는 대본 이벤트 객체를 0개 이상 포함할 수 MAY 있다.
대본 이벤트가 하나라도 존재하는 경우,
DAPT 문서는
<tt> 요소의 자식 <body> 요소 하나를 가져야
MUST 한다.
DAPT 대본은 대본 이벤트가 참조할 수 있는 등장인물을 각각 설명하는 등장인물 객체를 0개 이상 포함할 수 MAY 있다.
등장인물 객체가 하나라도 존재하는 경우,
DAPT 문서는
<tt> 요소의 자식 <head> 요소 하나를 가져야
MUST 하며,
그 <head> 요소는 적어도 하나의 <metadata> 자식 요소를 가져야
MUST 한다.
이 절은 주로 더빙 워크플로와 관련된다.
프로그램의 등장인물은 다음 속성을 가진 등장인물 객체를 사용하여 설명할 수 있다:
등장인물은 DAPT 문서에서 다음 구조와 제약으로 표현된다:
/tt/head/metadata/ttm:agent에 존재하는
<ttm:agent> 요소로 표현되며, 다음 제약을 가진다:
type 속성은 character로 설정되어야
MUST 한다.
xml:id 속성은 <ttm:agent> 요소에 존재해야
MUST 하며, 등장인물 식별자로 설정되어야 한다.
<ttm:agent> 요소는 type 속성이
alias로 설정되고 그 내용이 등장인물
이름으로 설정된
<ttm:name> 요소를 포함해야 MUST 한다.
등장인물이 성우 이름을
가지는 경우, <ttm:actor> 자식 요소를 포함해야
MUST 한다.
해당 자식 요소는 별도의 <ttm:agent> 요소의
xml:id 속성 값으로 설정된 agent 속성을 가져야
MUST 한다.
이 별도의 <ttm:agent> 요소는 성우
이름에 해당하며,
즉 type 속성이 person으로 설정된 요소이다.
성우 이름에
해당하는 추가 <ttm:agent> 요소에 대한 요구사항은
다음 글머리 목록에 정의되어 있다.
...
<metadata>
<ttm:agent type="character" xml:id="character_1">
<ttm:name type="alias">DESK CLERK</ttm:name>
</ttm:agent>
</metadata>
...
...
<metadata>
<ttm:agent type="person" xml:id="actor_A">
<ttm:name type="full">Matthias Schoenaerts</ttm:name>
</ttm:agent>
<ttm:agent type="character" xml:id="character_2">
<ttm:name type="alias">BOOKER</ttm:name>
<ttm:actor agent="actor_A"/>
</ttm:agent>
</metadata>
...
<ttm:agent> 요소는 경로
/tt/head/metadata/ttm:agent에 존재해야 MUST
하며, 다음 제약을 가진다:
type 속성은 person으로 설정되어야
MUST 한다
xml:id 속성은 설정되어야 MUST 한다.type이 full로 설정되어야 MUST 하고 그
내용이 성우 이름으로
설정된 <ttm:name> 자식 요소를 가져야 MUST
한다
<ttm:agent> 요소가 있어야 SHOULD 한다.
<ttm:agent> 요소는
그것을 참조하는 <ttm:actor> 자식 요소를 가진
등장인물
<ttm:agent> 요소들보다 앞에 나타나야 SHOULD
한다.
<ttm:agent> 요소는 <head> 요소 안의
첫 번째 <metadata> 요소에 포함되어야 SHOULD 한다.
<head> 요소에는 여러 <metadata> 요소가 있을 수 있다.
예를 들어 독점
메타데이터를 포함하기 위해서이다.
하지만 위 내용은 등장인물을 정의하는 데 하나만 사용할 것을 권장한다.
일반적인 "presentation processor" 또는 "transformation processor" 유형을 사용하지 않도록,
우리만의 적합 구현 유형 클래스를 정의해야 한다. 이에 링크할 수 있을 것이다.
현재로서는 다음 클래스들이 떠오른다:
대본 이벤트 객체는 말해질 대화, 화면상 텍스트 또는 오디오 설명을 나타내며 다음 속성을 가진다:
각각 원문 또는 번역 중 하나인 0개 이상의 텍스트 객체.
텍스트 객체가 없는 대본 이벤트는 어떤 콘텐츠가 존재할 수 있는 시간 간격을 미리 구획해 두는 것이 유용한 워크플로에서 저작의 초기 단계 일부로 생성될 수 있다. 예를 들어 타이밍 속성이 있는 빈 대본 이벤트를 만들어 오디오 설명을 작성할 기회를 식별할 수 있다. [DAPT-REQS] 프로세스 단계 1도 참조하라.
대본
이벤트는 DAPT 문서에서
경로 /tt/head/body//div에 표현되며,
다음 구조와 제약을 가진다:
#216 (comment)에서의 논의를 바탕으로, div가 Script Event를 나타내는 경우를 표시하는 명시적 신호가 있어야 한다고 생각한다.
<body> 요소와 스크립트 이벤트에
해당하는 <div> 요소 사이의 경로에는 중첩된 <div> 요소
조상이
임의 개수 있을 MAY 있습니다.
그러한 요소에 대해서는 더 이상의 의미론이 정의되지 않습니다.<div> 요소가
하나 MUST 있어야 하며,
다음 제약 조건을 따릅니다:
xml:id 속성은
스크립트 이벤트 식별자를 포함하여
존재해야 MUST 합니다.
xml:id 속성이 없으므로
스크립트 이벤트로
간주되지 않는 <div> 요소를 프로세서가 처리하는 방법에 대한 자세한 내용은
6.3
<div> 및
<p> 요소 처리를 참조하십시오.
begin, end 및 dur 속성은
각각 시작, 종료 및 지속 시간을
스크립트 이벤트에 대해 나타냅니다.
begin 및 end 속성은
존재하는 것이 SHOULD 좋습니다.
dur 속성은 존재할 MAY 있습니다.
타이밍 속성에 대한 추가 참고 사항은 4.1.6.1 타이밍 속성을 참조하십시오.
ttm:agent 속성은 존재할 MAY 있으며, 존재하는 경우
연관된 등장인물을 나타내는 각
ttm:agent 속성에 대한 참조를 포함해야 MUST 합니다.
...
<div xml:id="event_1"
begin="9663f" end="9682f"
ttm:agent="character_4">
...
</div>
...
daptm:represents
속성은 존재할 MAY 있으며,
나타냄 속성을 나타냅니다.
...
<div xml:id="event_1"
begin="9663f" end="9682f"
daptm:represents="audio.dialogue">
...
</div>
...
daptm:represents
속성의 계산된 값은 유효한 비어 있지 않은 값이어야 MUST 합니다.
<p> 요소를
0개 이상 포함할 MAY 있습니다.<metadata> 요소를 포함할 MAY 있습니다.
<div> 요소 자식을 포함해서는 MUST NOT 안 됩니다.
텍스트 객체는 일반적으로 단일 언어의 텍스트 콘텐츠를 포함합니다. 이 언어는 원본 언어이거나 번역 언어일 수 있습니다.
텍스트는 다음 중 하나인 경우 원본으로 정의됩니다:
텍스트는 다른 언어로 된 원본 텍스트 객체의 표현인 경우 번역으로 정의됩니다.
텍스트는 텍스트 언어 출처에 정의된 의미론에 따라, 그 언어와 텍스트 언어 출처를 함께 검사하여 원본 또는 번역으로 식별될 수 있습니다.
번역 텍스트 객체와, 해당되는 경우 원본 텍스트 객체의 출처 언어는 텍스트 언어 출처 속성을 사용하여 표시됩니다.
텍스트 객체 또는 그 일부가 부모 스크립트 이벤트보다 더 구체적이거나 다른 것을 나타내는 경우, 다른 나타냄 속성을 가질 수 있습니다.
텍스트 객체와 그 모든 부분은 유효한 나타냄 속성을 가져야 MUST 합니다. 속성 자체의 존재는 선택 사항으로 간주됩니다. 왜냐하면 텍스트 객체가 해당 속성을 생략하면, 그 속성은 부모 스크립트 이벤트로부터 상속되기 때문입니다.
텍스트 객체에는 스타일을 적용할 수 있습니다.
텍스트 중에 프로그램 오디오를 수정하는 데 사용되는 믹싱 지침 객체가 0개 이상 존재할 MAY 있습니다.
텍스트 객체는
DAPT 문서에서
/tt/head/body//div/p 경로의
<p> 요소로 표현되며, 다음 제약 조건을 따릅니다:
<metadata> 요소와 외부 요소가 제거되고,
<br> 요소가 줄바꿈으로 대체되며,
[XML]에 정의된 공백 처리가 적용된
후,
<p> 요소와 그 모든 <span> 자손
요소의 문자 콘텐츠로 표현됩니다.
<p> 요소는
텍스트 객체의 텍스트 언어
출처를 나타내는 daptm:langSrc 속성을
가지는 것이 SHOULD 좋습니다.
즉, 텍스트가 원본인지 번역인지와
그 출처에 고유 언어가 있었는지를 표시합니다.
daptm:langSrc의 계산된 값은
빈 문자열 또는 und가 아니어야 SHOULD NOT 합니다.
<p> 요소는
텍스트 객체의
언어에 해당하는 xml:lang
속성을 가지는 것이 SHOULD 좋습니다.
<div xml:id="event_3"
begin="9663f" end="9682f"
ttm:agent="character_3">
<p xml:lang="pt-BR">Você vai ter.</p>
<p xml:lang="fr" daptm:langSrc="pt-BR">Bah, il arrive.</p>
</div>
어떤 경우에는 번역되지 않은 단일 대사 구간이
둘 이상의 언어로 된 텍스트를 포함할 수 있습니다.
이를 처리하기 위해 스크립트 이벤트를 여러 스크립트 이벤트로
분할하는 대신,
한 언어의 텍스트 객체도 다른 언어의 일부 단어를 포함할 수 있습니다.
이는 DAPT 문서에서
내부 <span> 요소에 xml:lang 및
속성을 설정하여 표현됩니다.
daptm:langSrc
daptm:represents 속성은
<p> 요소 또는 그 자손 <span> 요소 중 어느 곳에든
존재할 MAY 있으며,
나타냄 속성을 나타냅니다.
<audio> 요소를
0개 이상 포함할 MAY 있습니다.<animate> 요소를
0개 이상 포함할 MAY 있습니다.텍스트 언어 출처 속성은 텍스트 객체의 출처 언어를 나타내는 주석이며, 해당되는 경우, 또는 출처 콘텐츠에 고유 언어가 없었음을 나타냅니다:
und 또는 zxx와 같이
언어를 나타내지 않는 값을 가지는 경우,
텍스트는
원본입니다.
텍스트 언어 출처는 상속 가능한 속성입니다.
텍스트 언어 출처 속성은 DAPT 문서에서 daptm:langSrc 속성으로 표현되며,
다음 구문, 제약 조건 및 의미론을 가집니다:
daptm:langSrc
: <empty-string> | <language-identifier>
<empty-string>
: "" # default
<language-identifier> # well-formed BCP-47 language tag
<p> 및 <span> 요소에 적용됩니다.<tt>,
<body>,
<div>,
<p> 및
<span>.
daptm:langSrc 속성의 상속
모델은 다음과 같습니다:
속성의
상속 모델은
daptm:langSrcxml:lang 속성의 상속 모델 [XML]과
일치하도록 의도되었습니다.
화면상 표시 속성은 대본 이벤트의 주체와 관련된 장면 내 위치를 나타내는 주석이다. 예를 들어 말하고 있는 등장인물의 위치가 이에 해당한다:
생략된 경우 기본값은 "ON"이다.
화면상
표시 속성은 DAPT 문서에서
<div> 요소의
daptm:onScreen 속성으로 표현되며,
다음 제약을 가진다:
나타내는 것 속성은 대본 이벤트 또는 텍스트(또는 그 일부)가 관련 미디어 객체의 어떤 구성 요소를 나타내는지를 표시한다.
나타내는
것 속성은 DAPT 문서에서
daptm:represents 속성으로 표현되며,
그 값은 단일
<이어야
MUST 한다.
content-descriptor>
속성은
다음 요소 중 어느 것에도 존재할 수 MAY 있다:
daptm:represents<tt>,
<body>,
<div>,
<p> 및
<span>.
나타내는 것 속성은 상속 가능하다. 요소에 없으면 그 계산된 값은 부모 요소의 나타내는 것 속성의 계산된 값이며, 부모 요소가 없으면 빈 문자열이다. 요소에 존재하면 그 계산된 값은 지정된 값이다.
빈 <content-descriptor>는 없으므로,
이는 빈 계산된 나타내는 것
속성이 결코 유효할 수 없음을 의미한다. 유효한
DAPT 문서를 구성하는
한 방법은
DAPT 대본에
나타내는 것
속성을 지정하여, 나타내는 것
속성이 없는 모든 자손에게 상속되도록 하는 것이다.
나타내는 것 속성 값이 대본이 나타내는 것 속성에 있는 값 중 적어도 하나의 content descriptor 하위 유형이 아니면 오류이다.
대본 이벤트 설명 객체는 대본 이벤트 콘텐츠의 어떤 측면에 대해 사람이 읽을 수 있는 설명을 제공하는 주석이다. 대본 이벤트 설명 자체는 설명 유형으로 분류될 수 있다.
대본 이벤트 설명 객체는
DAPT 문서에서
<div> 요소 수준의 <ttm:desc> 요소로 표현된다.
<ttm:desc> 요소는 0개 이상 존재할 수 MAY 있다.
대본 이벤트 설명은 비어 있지 않아야 SHOULD NOT 한다.
대본 이벤트 설명은 고유할 필요가 없다. 즉, 각 대본 이벤트마다 다른 값을 가질 필요는 없다. 예를 들어 특정 값은 사람이 읽을 수 있는 방식으로, 함께 처리되도록 의도된 하나 이상의 대본 이벤트를 식별하기 위해 재사용될 수 있다. 예를 들어 일괄 녹음에서 그러하다.
<ttm:desc> 요소는
xml:lang 속성을 사용하여 그 언어를 지정할 수
MAY 있다.
...
<body daptm:langSrc="zxx">
<div begin="10s" end="13s" xml:id="a1">
<ttm:desc>장면 1</ttm:desc>
<p xml:lang="en">
<span>한 여성이 작은 범선에 올라탄다.</span>
</p>
<p xml:lang="fr" daptm:langSrc="en">
<span>한 여성이 작은 범선에 올라탄다.</span>
</p>
</div>
<div begin="18s" end="20s" xml:id="a2">
<ttm:desc>장면 1</ttm:desc>
<p xml:lang="en">
<span>여성이 키를 당기자 배가 방향을 튼다.</span>
</p>
<p xml:lang="fr" daptm:langSrc="en">
<span>여성이 키를 당기자 배가 방향을 튼다.</span>
</p>
</div>
</body>
...
각 대본 이벤트 설명에는 대본 이벤트 설명의 목적을 더 세분화하기 위해 하나 이상의 설명 유형으로 주석을 달 수 있다.
각 설명 유형은 DAPT 문서에서
<ttm:desc> 요소의 daptm:descType 속성으로 표현된다.
<ttm:desc> 요소는 0개 또는 1개의
daptm:descType 속성을 가질 수 MAY 있다.
daptm:descType 속성은 아래에 정의되어 있다.
daptm:descType : string
daptm:descType에 허용되는 값은
다음 레지스트리 표에 나열된 값이거나,
사용자 정의 값일 수 있다:
|
상태 | 설명 | 비고 |
|---|---|---|---|
pronunciationNote |
임시 | 콘텐츠를 발음하는 방법에 대한 참고 사항. | |
scene |
임시 | 장면 식별자를 포함합니다 | |
plotSignificance |
임시 | 콘텐츠가 줄거리에 얼마나 중요한지를 나타내는 척도를 정의합니다. | 내용은 정의되어 있지 않으며 낮음, 중간 또는 높음이거나 수치 척도일 수 있습니다. |
레지스트리 항목은 JSON 형식으로
버전 관리 시스템의
/registries/descType.json에서 사용할 수 있습니다.
유효한 사용자 정의 값은 x-로 시작해야 MUST 한다.
...
<body>
<div begin="10s" end="13s" xml:id="a123">
<ttm:desc daptm:descType="pronunciationNote">[oːnʲ]</ttm:desc>
<p>Eóin이 다른 의회 구성원들을 둘러본다.</p>
</div>
</body>
...
형제 <ttm:desc> 요소 그룹 안에서는
daptm:descType 속성의 고유성에 대한 제약은 없지만,
다음 예제에 표시된 것처럼 구별자로 유용할 수 있다.
...
<body daptm:langSrc="zxx">
<div begin="10s" end="13s" xml:id="a1">
<ttm:desc daptm:descType="scene">장면 1</ttm:desc>
<ttm:desc daptm:descType="plotSignificance">높음</ttm:desc>
<p xml:lang="en">
<span>한 여성이 작은 범선에 올라탄다.</span>
</p>
<p xml:lang="fr" daptm:langSrc="en">
<span>한 여성이 작은 범선에 올라탄다.</span>
</p>
</div>
<div begin="18s" end="20s" xml:id="a2">
<ttm:desc daptm:descType="scene">장면 1</ttm:desc>
<ttm:desc daptm:descType="plotSignificance">낮음</ttm:desc>
<p xml:lang="en">
<span>여성이 키를 당기자 배가 방향을 튼다.</span>
</p>
<p xml:lang="fr" daptm:langSrc="en">
<span>여성이 키를 당기자 배가 방향을 튼다.</span>
</p>
</div>
</body>
...
오디오 객체는 텍스트의 오디오 렌더링을 지정하는 데 사용된다. 오디오 렌더링은 오디오 녹음 객체로서 녹음된 오디오 리소스일 수도 있고, 텍스트 음성 변환 엔진을 통해 텍스트의 렌더링을 합성하라는 지시일 수도 있으며, 이는 합성 오디오 객체이다. 둘 모두 오디오 객체의 유형이다.
오디오를 지원하는 표현 처리기는 지정된 시간에 관련 미디어 객체의 타임라인에서 오디오를 재생하거나 삽입한다.
오디오 녹음은 오디오 리소스를 참조하는 오디오 객체이다. 이는 다음 속성을 가진다:
audio/basic;기본 인 시간은 오디오 리소스의 시작이다.
기본 아웃 시간은 오디오 리소스의 끝이다.
오디오 리소스의 시간적 하위 구간이 오디오 녹음의 시간 간격 지속 시간보다 길면, 오디오 녹음의 시간 간격이 끝날 때 재생이 끝나도록 재생은 잘려야 MUST 한다.
오디오 리소스의 시간적 하위 구간이 오디오 녹음의 시간 간격 지속 시간보다 짧으면, 오디오 리소스는 한 번 재생된다.
소스 목록이 제공되는 경우, 표현 처리기는 각 오디오 녹음에 대해 소스 중 하나를 넘지 않게 재생해야 MUST 한다.
구현은 어떤 소스를 재생할지 결정하기 위해
유형과, 존재하는
경우 관련 추가 형식 정보를 사용할 수 있다.
예를 들어 두 소스가 주어졌고 하나는 WAV 파일, 다른 하나는 MP3인 경우,
그 형식 중 하나만 재생할 수 있거나 둘 중 하나를 선호하도록 구성된 구현은
재생 가능한 버전 또는 선호되는 버전을 선택할 것이다.
오디오 녹음은 DAPT 문서에서
그것이 적용되는 텍스트에 해당하는 <p> 또는
<span> 요소의 자식
<audio>
요소로 표현된다.
다음 제약이 <audio> 요소에 적용된다:
begin, end 및 dur 속성은
각각 시작, 끝 및 지속 시간
속성을 나타낸다;clipBegin 및 clipEnd 속성은
예제 5에 설명된 것처럼
각각 인
시간 및 아웃 시간 속성을 나타낸다;
src 속성과
각각의 type 속성;
소스가 둘 이상인 경우 이 메커니즘은 사용할 수 없다.
<audio src="https://example.com/audio.wav" type="audio/wave"/>
src 속성과
각각의 type 속성을 가진
<source> 자식 요소;
<audio>
<source src="https://example.com/audio.wav" type="audio/wave"/>
<source src="https://example.com/audio.aac" type="audio/aac"/>
</audio>
프래그먼트 식별자가 아닌 src 속성은
외부 오디오 리소스, 즉 DAPT 대본
안에 임베드되지 않은
리소스를 참조하는 URL이다.
DAPT에서는
해당 리소스를 찾을 수 있는지에 대한 검증을 지정하지 않는다.
여기서 두 메커니즘이 모두 필요한가?
이 경우 자식 <source> 요소가 어떤 의미론적 이점을 가지는지는 명확하지 않다.
해당 자식 <source> 요소의 사용을 "위험 기능"으로 표시하는 것을 고려할 것인가?
오디오 녹음을 추가하기 위한 명세 작업을 하면서, 오디오 녹음이 임베드되고 참조될 수 있는 여러 방식이 있음을 다시 떠올렸으며, 총 최소 5가지가 있다. [DAPT](https://www.w3.org/TR/dapt-reqs/#requirements)의 요구사항 R15는 참조 옵션과 임베드 옵션이 모두 사용 가능해야 한다고 명확히 하지만, 각 옵션에 대해 구문적으로 제한해야 하는가? 별도의 이슈로 제기할 예정이다.
원래 @nigelmegitt가 #105 (comment)에 게시함
TTML2에는 외부 오디오 리소스를 참조하기 위한 다음 두 옵션이 있다:
<audio> 요소의 src 속성.<audio src="https://example.com/audio_recording.wav" type="audio/wave"/>
<audio> 요소의
<source> 자식 요소.
<audio>
<source src="https://example.com/audio_recording.wav" type="audio/wave"/>
</audio>
이 두 번째 옵션은 type이 부적절한 경우 format 속성을 지정할 수 있는 추가 가능성이 있다.
또한 여러
<source> 자식 요소를 허용하며, 이 경우
구현이 하나를 넘지 않게 선택해야 한다고 지정한다.
[이슈가 열린 뒤 추가된 "하나를 넘지 않게 재생" 제약을 반영하기 위해 2023-03-29에 수정됨]
#113에 대한 가능한 해결.
#113에 대한 가능한 해결.
<audio> 요소를 참조하는
프래그먼트 식별자인 src 속성.
여기서 참조된 요소는
/tt/head/resources의 자식이며
type 속성과 이를 참조하는 데 사용되는 xml:id 속성을
지정한다;
소스가 둘 이상인 경우 이 메커니즘은 사용할 수 없다.
<tt>
<head>
<resources>
<audio type="audio/wave" xml:id="audio1">
<source><data>[base64로 인코딩된 WAV 오디오 리소스]</data></source>
</audio>
</resources>
</head>
<body>
..
<audio src="#audio1"/>
..
</body>
</tt>
<data> 요소를 참조하는
프래그먼트 식별자인 src 속성을 가진
<source> 자식 요소.
여기서 참조된 요소는
/tt/head/resources의 자식이며
type 속성과 이를 참조하는 데 사용되는 xml:id 속성을
지정한다;
<tt>
<head>
<resources>
<data type="audio/wave" xml:id="audio1wav">
[base64로 인코딩된 WAV 오디오 리소스]
</data>
<data type="audio/mpeg" xml:id="audio1mp3">
[base64로 인코딩된 MP3 오디오 리소스]
</data>
</resources>
</head>
<body>
..
<audio>
<source src="#audio1wav"/>
<source src="#audio1mp3"/>
</audio>
..
</body>
</tt>
type 속성을 지정하고 오디오 녹음 데이터를 포함하는
<data> 요소 자식을 가진
<source> 자식 요소.
<audio>
<source>
<data type="audio/wave">
[base64로 인코딩된 WAV 오디오 리소스]
</data>
</source>
</audio>
위의 각 경우에서 type 속성은 유형 속성을 나타낸다.
프래그먼트 식별자인 src 속성은 DAPT 대본 안에 임베드된 오디오 리소스를
가리키는 포인터이다
<data> 요소가 정의된 경우, 각 요소는
#PCDATA 또는
<chunk> 자식 요소 중 하나를
포함해야 MUST 하며,
어떤 <source> 자식 요소도 포함해서는 안 된다
MUST NOT.
<data> 및 <source> 요소는
format 속성을 포함할 수 MAY 있으며,
구현은 적절한 오디오 리소스를 선택할 때
그 값을 type 속성 값에 더해 사용할 수
MAY 있다.
여기서 3가지 메커니즘이 모두 필요한가?
어느 것이라도 필요한가?
오디오 데이터를 임베드하는 사용 사례가 있을 수 있다.
이는 단일 문서를 누락된 리소스에 대한 우려나 예를 들어 매니페스트 파일의 필요 없이
교환 및 전송할 수 있는 이식 가능한(비록 큰) 엔터티로 만들기 때문이다.
참조된 임베드 오디오를 지원할 필요가 없다면 마지막 옵션만 필요하며,
아마 구현하기 가장 간단할 것이다.
참조된 임베드 오디오를 지지하는 한 가지 경우는 동일한 오디오를
문서의 다른 위치에서 더 쉽게 재사용할 수 있게 한다는 점이지만,
이 사용 사례에서는 그 요구사항이 있을 가능성은 낮아 보인다. 또 다른 점은
모든 임베드 오디오가 tt/head/resources 안의 쉽게 찾을 수 있는
문서 부분에 있게 되어 잠재적으로 구현상의 이점을 가질 수 있다는 것이다.
임베드된 데이터 기능을 "위험 기능"으로 표시하는 것을 고려할 것인가?
오디오 녹음을 추가하기 위한 명세 작업을 하면서, 오디오 녹음이 임베드되고 참조될 수 있는 여러 방식이 있음을 다시 떠올렸으며, 총 최소 5가지가 있다. [DAPT](https://www.w3.org/TR/dapt-reqs/#requirements)의 요구사항 R15는 참조 옵션과 임베드 옵션이 모두 사용 가능해야 한다고 명확히 하지만, 각 옵션에 대해 구문적으로 제한해야 하는가? 별도의 이슈로 제기할 예정이다.
원래 @nigelmegitt가 #105 (comment)에 게시함
몇 가지 임베드된 오디오 리소스가 주어졌을 때:
<head>
<resources>
<audio xml:id="audioRecording1" type="audio/wave">
<source>
<data>[base64 encoded audio data]</data>
</source>
</audio>
<data xml:id="audioRecording2" type="audio/wave">
[base64 encoded audio data]
</data>
</resources>
</head>
TTML2에는 임베드된 오디오 리소스를 참조하기 위한 다음 두 옵션이 있다:
<audio> 또는 <data>를 참조하는
<audio> 요소의 src 속성:
<audio src="#audioRecording1"/>
...
<audio src="#audioRecording2"/>
<audio> 요소의
<source> 자식 요소.
<audio>
<source src="#audioRecording1"/>
</audio>
이 두 번째 옵션은 type이 부적절한 경우 format 속성을 지정할 수 있는 추가 가능성이 있다.
또한 여러
<source> 자식 요소를 허용하지만,
여러 리소스가 지정된 경우 의도된 의미론이 무엇인지는 명확하지 않다.
아마 구현이 어떤 방식으로든 하나를 선택하는 것으로 추정된다.
오디오 녹음을 추가하기 위한 명세 작업을 하면서, 오디오 녹음이 임베드되고 참조될 수 있는 여러 방식이 있음을 다시 떠올렸으며, 총 최소 5가지가 있다. [DAPT](https://www.w3.org/TR/dapt-reqs/#requirements)의 요구사항 R15는 참조 옵션과 임베드 옵션이 모두 사용 가능해야 한다고 명확히 하지만, 각 옵션에 대해 구문적으로 제한해야 하는가? 별도의 이슈로 제기할 예정이다.
원래 @nigelmegitt가 #105 (comment)에 게시함
임베드된 오디오 리소스를 지원하려면,
이는 /tt/head/resources에 정의된 뒤 참조되거나,
데이터가 인라인으로 포함될 수 있다.
두 옵션이 모두 필요한가?
임베드 예:
<head>
<resources>
<audio xml:id="audioRecording1" type="audio/wave">
<source>
<data>[base64 encoded audio data]</data>
</source>
</audio>
<data xml:id="audioRecording2" type="audio/wave">
[base64 encoded audio data]
</data>
</resources>
</head>
그런 다음 이것은 본문 콘텐츠에서 다음과 같은 방식으로 참조될 수 있다 (#114도 참조):
<audio src="#audioRecording2"/>
인라인 예:
<audio type="audio/wave">
<source type="audio/wave">
<data>[base64 encoded audio data]</data>
</source>
</audio>
#115와의 연결점은 이것이 참조 가능한 어떤 임베드된 오디오 리소스의 존재도 함축한다는 점이며, 이는 #115에 설명된 옵션 중 하나입니다.
#115와의 연결점은 이것이 참조 가능한 어떤 임베드된 오디오 리소스의 존재도 함축한다는 점이며, 이는 #115에 설명된 옵션 중 하나입니다.
#115에 대한 가능한 해결안입니다.
#115도 참조하십시오. 인라인이 아닌 임베드된 오디오 리소스를 지원하려는 경우, 이를 위한 객체를 만들어 데이터 모델에 추가해야 할까요?
TTML2의 <data> 요소에서는 encoding을 지정할 수 있으며,
그 값은 다음 중 하나입니다:
그 모두에 대한 프로세서 지원을 요구해야 할까요, 아니면 기본값인
base64로 충분할까요?
또한 디코딩된 데이터가 지정된 바이트 길이여야 하므로 오류 검사를
어느 정도 가능하게 하는 length
속성을 지정할 수 있습니다. 이에 대한 지원을 요구하는 것이 순이익이 될까요? 사용될까요?
#117에 대한 가능한 해결안입니다.
#117에 대한 가능한 해결안입니다.
xml:lang 속성의 계산된 값은
부모 요소, 모든 자식 <source> 요소,
그리고 참조된 모든 임베드 <data> 요소의
xml:lang 속성 계산된 값과 동일해야 MUST 한다.
합성 오디오는 부모 텍스트 콘텐츠의 기계 생성 오디오 렌더링을 나타내는 오디오 객체이다. 이는 다음 속성을 가진다:
normal,
fast 또는
slow이다;
합성 오디오는 DAPT 문서에서
발화될 텍스트
객체를 나타내는 요소에
tta:speak
스타일 속성을 적용하여 표현된다.
여기서 속성의 계산된 값은
normal, fast 또는 slow이다.
이 속성은 속도
속성도 나타낸다.
tta:pitch
스타일 속성은 피치 속성을 나타낸다.
합성 오디오의 TTML 표현은 예제 7에 설명되어 있다.
tta:rate 속성의 계산된 값이 none인 요소의
tta:pitch 속성은 아무 효과가 없다.
그러한 요소는 연관된 합성
오디오가 있는 것으로 간주되지 않는다.
믹싱 지시 객체는 포함하는 객체와 관련된 오디오의 정적 또는 애니메이션 조정이다. 이는 다음 속성을 가진다:
freeze)할지 되돌릴(remove)지를 지정하는
선택적 채우기
속성.믹싱 지시는 관련 객체에 해당하는 요소에 오디오 스타일
속성을 적용하여 표현된다.
이는 인라인으로, <style> 요소에 대한 참조로, 또는 자식(인라인)
<animate> 요소 안에서 이루어진다:
믹싱 지시가 애니메이션되는 경우, 즉
포함하는 객체의 활성 시간 간격 동안 조정 속성이 변경되는 경우,
하나 이상의 자식 <animate> 요소로 표현된다.
둘 이상의 게인 또는 팬 속성이 필요하거나,
타이밍 속성이 필요한 경우 이 표현이 요구된다.
<animate>
요소는 포함하는 객체에 해당하는 요소의 자식이어야 MUST 하며,
다음 제약을 가진다:
begin, end 및 dur 속성은
각각 시작,
끝 및 지속
시간 속성을 나타낸다;
fill 속성은 채우기 속성을 나타낸다;tta:gain
속성은 게인 속성을
나타내며,
애니메이션 기간 동안 적용될 값 목록을 표현하기 위해
animation-value-list
구문을 사용한다;
tta:pan
속성은 팬 속성을
나타내며,
애니메이션 기간 동안 적용될 값 목록을 표현하기 위해
animation-value-list
구문을 사용한다.
애니메이션된 믹싱 지시의 TTML 표현은 예제 4에 설명되어 있다.
E. 오디오 믹싱도 참조하라.
DAPT 문서는 [xml] XML 1.0의 올바른 형식 문서로 직렬화되어야 MUST 하며, [UNICODE]에 지정된 UTF-8 문자 인코딩을 사용하여 인코딩되어야 한다.
결과 [xml] 문서는 다음 물리적 구조를 어떤 것도 포함해서는 안 된다 MUST NOT:
결과 [xml] 문서는 문자 참조와, 엔터티 참조 중 미리 정의된 엔터티에 대한 참조를 포함할 수 있다.
미리 정의된 엔터티는 다음과 같다(앞의 앰퍼샌드와 뒤의 세미콜론 포함):
&'><"DAPT 문서는 처리용 인메모리 모델로도 사용될 수 있으며, 이 경우 직렬화 요구사항은 적용되지 않는다.
이 절의 요구사항은 순방향 및 역방향 호환성을 용이하게 하기 위한 것이며, 구체적으로 다음을 허용하기 위한 것이다:
명세의 둘 이상의 버전에 적합한 DAPT 문서는 여러 DAPT content profile에 대한 적합성을 지정할 수 있다.
인식되지 않는 어휘는 처리기가 지원하는 기능과 연결되지 않은 요소 및 속성의 집합이다.
변환 처리기는
속성도 아니고 <metadata> 요소의 자손도 아닌
인식되지 않는 어휘를
잘라내야 MUST 한다.
변환 처리기는
속성이거나 <metadata> 요소의 자손인
인식되지 않는 어휘를
보존해야 SHOULD 한다.
처리기가 지원하지 않는 프로필에 대한 프로필 적합성 신호를 금지하는
5.6.2
ttp:contentProfiles도 참조하라.
여기서 처리기는 변환 처리기이다.
속성 값 계산 후, 표현 처리기는 인식되지 않는 어휘를 무시해야 SHOULD 한다.
위 제약이 속성 값 계산 이후로 지정된 이유는, 구현이 특정 요소에만 존재하는 속성, 예를 들어 DAPT 데이터 모델에 해당하는 속성을 인식하고 지원할 수 있기 때문이다. 6.4 계산된 속성 값 사용에 설명된 것처럼, 그러한 속성이 다른 요소에 존재할 때 처리기 구현이 이를 무시하지 않는 것이 중요하다.
외부 어휘는 인식되지 않는 어휘의 하위 집합으로, 해당 네임스페이스가 5.3 네임스페이스에 나열된 네임스페이스 중 하나가 아닌 요소 및 속성과, 네임스페이스 값이 없으며 DAPT 또는 [TTML2]에서 달리 정의되지 않은 속성으로 구성된다.
DAPT 문서는
ttp:contentProfiles에
신호된 프로필에 의해 명시적으로 허용되거나 금지되지 않은
외부 어휘를
포함할 수 MAY 있다.
검증 목적상, DAPT 문서 안에서 사용되는 모든 외부 어휘에 대해 명세, 예를 들어 content profile을 정의하고 사용하는 것이 좋은 관행이다.
많은 더빙 및 오디오 설명 워크플로는
대본 이벤트 또는 문서에 독점 메타데이터로 주석을 다는 것을 허용한다.
이 명세 또는 [TTML2]에 정의된
메타데이터 어휘는 포함될 수 MAY 있다.
외부 어휘도
<metadata> 요소의 속성으로 또는
<metadata> 요소의 자손 요소로 포함될 수
MAY 있다.
외부 네임스페이스를 사용하여 워크플로별 정보를 추가할 수 있다.
다음 예제에서는 "example
vendor"의 가상 네임스페이스 vendorm이 사용되어
DAPT에 정의되지 않은
문서 수준 정보를 제공한다.
...
<metadata xmlns:vendorm="http://www.example-vendor.com/ns/ttml#metadata">
<vendorm:programType>에피소드</vendorm:programType>
<vendorm:episodeSeason>5</vendorm:episodeSeason>
<vendorm:episodeNumber>8</vendorm:episodeNumber>
<vendorm:internalId>15734</vendorm:internalId>
<vendorm:information>일부 독점 정보</vendorm:information>
</metadata>
...
<metadata> 요소 안에 배치하지 않을 것을 강하게 권장한다.
그러한 데이터는 문서 내용을 수정하지만 메타데이터는 보존하면서 그 의미론을 알지 못하는 변환 처리기에 의해 무효화될 수 있다.
이 절은 비규범적이다.
외부 어휘가
<metadata> 요소 이외의 위치에 포함되면,
해당 어휘와 연결된 기능을 지원하지 않는 변환 처리기에 의해
5.2.1
인식되지 않는 어휘에서 요구한 대로 잘려 나갈 것이다.
그러한 잘라내기를 방지하고 그러한 외부 어휘의 의미론을 정의하는 메커니즘이 제공된다.
이를 통해 외부 어휘는 잘려 나가지 않고 <metadata> 요소 밖에 위치할 수 있으며,
콘텐츠 및 처리기 적합성을 표시할 수 있다:
ttp:contentProfiles를
사용하여 해당 프로필에 대한 문서 적합성을 신호한다이를 통해 해당 기능을 지원하는 처리기는 적절한 어떤 방식으로든 그 어휘를 처리하고, 잘라내기를 피할 수 있으며, 해당 기능을 지원하지 않는 처리기는 예를 들어 일부 기능이 손실될 수 있음을 사용자에게 경고하는 등 적절한 조치를 취할 수 있다.
이 명세에서는 다음 네임스페이스([xml-names] 참조)가 사용된다:
| 이름 | 접두사 | 값 | 정의 명세 |
|---|---|---|---|
| XML | xml |
http://www.w3.org/XML/1998/namespace |
[xml-names] |
| TT | tt |
http://www.w3.org/ns/ttml |
[TTML2] |
| TT Parameter | ttp |
http://www.w3.org/ns/ttml#parameter |
[TTML2] |
| TT Audio Style | tta |
http://www.w3.org/ns/ttml#audio |
[TTML2] |
| TT Metadata | ttm |
http://www.w3.org/ns/ttml#metadata |
[TTML2] |
| TT Feature | 없음 | http://www.w3.org/ns/ttml/feature/ |
[TTML2] |
| DAPT Metadata | daptm |
http://www.w3.org/ns/ttml/profile/dapt#metadata |
이 명세 |
| DAPT 확장 | 없음 | http://www.w3.org/ns/ttml/profile/dapt/extension/ |
이 명세 |
| EBU-TT Metadata | ebuttm |
urn:ebu:tt:metadata |
[EBU-TT-3390] |
위에 정의된 네임스페이스 접두사 값은 편의를 위한 것이며, DAPT 문서는 [xml-names]에 적합한 임의의 접두사 값을 사용할 수 MAY 있다.
이 명세에서 정의한 네임스페이스는 [namespaceState]에 설명된 대로 변경 가능하다. 이 네임스페이스들 안의 정의되지 않은 모든 이름은 W3C에 의한 미래 표준화를 위해 예약된다.
DAPT 문서가 [ttml-imsc1.3] 문서를 생성하기 위한 기반으로 사용되도록 의도된 경우, [ttml-imsc1.3]의 동기화 규정이 비디오와의 관계에서 적용됩니다.
DAPT 문서 내의 시간 지정 콘텐츠는 특정 오디오 샘플에서 시작하고 끝나도록 렌더링되는 것을 의도합니다.
이 명세의 맥락에서 렌더링은 텍스트의 시각적 표시일 수 있습니다. 예를 들어 배우에게 말해야 할 단어를 보여주는 것일 수도 있고, 오디오 리소스의 가청 재생일 수도 있으며, 또는 점자 디스플레이와 같은 물리적 또는 촉각적 렌더링일 수도 있습니다.
실시간 오디오 믹싱 및 재생과 같은 제약된 애플리케이션에서, 렌더링된 출력에서 오디오 샘플에 대한 정확한 동기화를 달성할 수 없는 경우, 표시의 시간 지정 변경에서 작성 및 재생 부정확성이 결합된 효과는 [EBU-R37]의 동기화 요구사항을 충족하는 것이 SHOULD 좋습니다. 즉, 오디오 변경은 이미지 변경보다 40ms를 초과하여 앞서서는 안 되며, 60ms를 초과하여 뒤따라서도 안 됩니다.
마찬가지로, 작성 애플리케이션은 작성자가 [EBU-R37]의 요구사항을 충족할 수 있도록 하는 것이 SHOULD 좋습니다. 이를 위해 오디오 변경이 비디오 이미지의 관련 변경 이후 15ms 미만, 그리고 비디오 이미지의 관련 변경 이전 5ms 미만이 되도록 하는 정확도로 시간을 정의할 수 있어야 합니다.
종합하면, 전체 표시와 실시간 재생을 의도한 DAPT 문서에 대한 위의 두 제약은 콘텐츠 프로세서가 오디오 표시 변경을 DAPT 문서에 지정된 시간보다 35ms를 초과하여 앞서 완료하지 않고, 지정된 시간보다 45ms를 초과하여 늦게 완료하지 않는 것이 SHOULD 좋다는 것을 의미합니다.
이 프로필은 다음 프로필 지정자와 연결된다:
| 프로필 이름 | 프로필 유형 | 프로필 지정자 |
|---|---|---|
| DAPT 1.0 Content Profile | content profile | http://www.w3.org/ns/ttml/profile/dapt1.0/content |
| DAPT 1.0 Processor Profile | processor profile | http://www.w3.org/ns/ttml/profile/dapt1.0/processor |
ttp:contentProfiles
속성은
문서가 적합한 [TTML2] 프로필을 선언하는 데
사용된다.
DAPT 문서는
<tt> 요소에
속성을 지정해야 MUST 하며,
여기에는 5.6.1 프로필
지정자에 지정된
content profile 지정자와 같은 값을
적어도 하나 포함해야 한다.
다른 값은 [TTML2]의 다른 프로필에 대한
적합성을 선언하기 위해 존재할 수 MAY 있으며,
독점 네임스페이스의 프로필 지정자를 포함할 수 MAY 있다.
ttp:contentProfiles
DAPT 문서가 자신이 적합하지 않은 content profile에 대한 적합성을 신호하는 것은 오류이다.
변환 처리기는
자신(처리기)이 지원하지 않는 프로필과 연결된 값을
속성 안에 포함해서는 안 된다 MUST NOT;
정의상 그러한 프로필에 대한 콘텐츠의 적합성을 검증할 수 없기 때문이다.
ttp:contentProfiles
ttp:profile 속성은
[TTML1] 안에서
문서 인스턴스의 처리 요구사항을 선언하는 메커니즘이다.
이는 [TTML2]에서 실질적으로
로
대체되었다.
ttp:processorProfiles
DAPT 문서는
<tt> 요소에 ttp:profile 속성을 지정해서는 안 된다
MUST NOT.
ttp:processorProfiles
속성은
문서 인스턴스의 처리 요구사항을 선언하는 데 사용된다.
DAPT 문서는
<tt> 요소에
속성을 지정할 수 MAY 있다.
존재하는 경우,
ttp:processorProfiles
속성은 5.6.1 프로필
지정자에 지정된
processor profile 지정자와 같은 값을
적어도 하나 포함해야 MUST 한다.
추가 처리 제약을 선언하기 위해 다른 값이 존재할 수
MAY 있으며,
독점 네임스페이스의 프로필 지정자를 포함할 수 MAY 있다.
ttp:processorProfiles
속성은
추가 프로필의 기능 및 확장이
문서 인스턴스를 성공적으로 처리하는 데
지원되어야 함을 신호하는 데 사용할 수 있다.
예를 들어 로컬 워크플로가 특정 메타데이터 요구사항을 도입하고,
추가 processor profile 지정자를 사용하여 처리기가 이를 지원해야 함을 신호할 수 있다.
ttp:processorProfiles
콘텐츠 작성자가 DAPT가 정의한 것보다
추가적인 처리기 요구사항이 DAPT 문서를
처리하는 데
필요하다고 신호할 필요가 없다면,
속성은 존재하지 않을 것으로 예상된다.
ttp:processorProfiles
[TTML2]는 문서 인스턴스가 사용할 수 있거나 처리기가 지원해야 하는 기능 집합을 정의하는 데 사용할 수 있는 어휘와 의미론을 지정하며, 이는 프로필로 알려져 있다.
명시된 경우를 제외하고, 이 프로필 어휘가 처리기에서 지원되어야 한다는 것은 DAPT의 요구사항이 아니다. 그렇지만 그러한 지원은 허용된다.
이 프로필 어휘의 대부분은 문서 인스턴스를 성공적으로 처리하기 위해 처리기가 지원해야 하는 기능 집합을 계산하는 방법을 나타내는 데 사용된다. 이 어휘 자체는 TTML2 기능의 관점에서 정의된다. 이러한 프로필 관련 기능은 F. 프로필 안에 선택 사항으로 나열되어 있다. 이들은 처리기에서 구현될 수 MAY 있으며, 그 관련 어휘는 DAPT 문서에 존재할 수 MAY 있다.
이러한 기능 및 어휘에 대한 처리기 지원이 (대역 외 프로토콜을 사용하여) 마련되지 않은 한, 해당 어휘는 존재하지 않을 것으로 예상된다.
DAPT에서 처리기 지원이 요구되지는 않지만 허용되는 추가 프로필 관련 어휘는 다음과 같다:
DAPT 대본 안에서는 시간 속성과 시간 표현식과 관련하여 다음 제약이 적용된다:
허용되는 유일한 ttp:timeBase 속성 값은 media이다.
F. 프로필이
#timeBase-media를 제외한
모든 timeBase 기능을 금지하기 때문이다.
이는 문서 타임라인의 시작, 즉 시간 "0"이 관련 미디어 객체의 시작임을 의미한다.
timeContainer 속성의 유일하게 허용되는 값은 기본값인
par이다.
문서는 모든 요소에서 timeContainer 속성을 생략해야 SHOULD 한다.
문서는 어떤 요소에서도 timeContainer 속성을 par 이외의 어떤 값으로도
설정해서는 안 된다 MUST NOT.
이는 모든 시간 지정 요소의 begin 속성 값이
그 부모 요소의 계산된 시작 시간에 상대적이며,
<body> 요소의 경우 시간 0에 상대적임을 의미한다.
문서에 f 측정 단위를 사용하는 시간 표현식이 있거나,
프레임 구성 요소를 포함하는 시간 표현식이 있으면,
ttp:frameRate 속성이 <tt> 요소에 존재해야
MUST 한다.
문서에 t 측정 단위를 사용하는 시간 표현식이 있으면,
ttp:tickRate 속성이 <tt> 요소에 존재해야
MUST 한다.
문서 안의 모든 시간 표현식은
[TTML2]에 정의된 대로,
DAPT
제약이 적용된
clock-time 또는 offset-time 중 하나의 동일한 구문을
사용해야 SHOULD 한다.
DAPT
clock-time은 다음 형식 중 하나를 가진다:
hh:mm:ss.ssshh:mm:ss
여기서
hh는 시간,
mm은 분,
ss는 초, 그리고
ss.sss는 초의 소수 부분이 있는 초(임의 정밀도)이다.
"time code"와 비슷해 보이는 프레임 구성 요소를 사용하는 clock time 표현식은 그것이 사용될 때, 특히 비정수 프레임 레이트, "drop modes" 및 서브프레임 레이트와 함께 사용될 때 다른 곳에서 관찰된 의미론적 혼동 때문에 금지된다.
offset-time은 다음 형식 중 하나를 가진다:
nn metricnn.nn metric
여기서
nn은 정수이고,
nn.nn은 소수 부분이 있는 수(임의 정밀도)이며,
metric은 다음 중 하나이다:
h,m,s,ms,f, 그리고t.미디어 시간 표현식 M을 비디오의 프레임 F에 매핑할 때, 예를 들어 입술 동기화를 정확히 맞추기 위한 목적이라면, 콘텐츠 처리기는 M보다 작지 않으면서 M에 가장 가까운 표현 시간을 가진 프레임 F에 M을 매핑해야 SHOULD 한다.
00:00:05.1의 미디어 시간 표현식은
프레임 레이트가 1000 / 1001 × 30 ≈ 29.97인 비디오의
ceiling( 5.1 × ( 1000 / 1001 × 30) ) = 153 프레임에 해당한다.
이 명세는 [ttml-imsc1.3]에 정의된 레이아웃 및 렌더링 기능에 추가 제약을 두지 않습니다.
<head> 요소에
<layout>
요소가 사용되지 않은 경우). 또는
/tt/head/layout/region에 존재하는 <region> 요소를 참조하기 위해
region 속성을 사용하여 명시적으로 지정될 수 있습니다.
스타일 참조 또는 인라인 스타일은 [TTML2] 또는 [ttml-imsc1.3]에 정의된 대로
style 속성,
<style> 요소 및
인라인 스타일 속성의 임의 조합을 사용하여 사용될 MAY 있습니다.
다음 메타데이터 요소는 DAPT에서 허용되며,
[TTML2]에서
#PCDATA, 즉 요소 콘텐츠가 없는 텍스트 데이터만 포함하는 것으로 지정되어 있다.
그러한 요소 안의 문자 콘텐츠에서 양방향 텍스트가 필요한 경우,
유니코드 제어 문자를 사용하여 텍스트의 임의 범위 안에서 기본 방향을 정의할 수 있다.
<ttm:copyright><ttm:desc><ttm:item><ttm:name><ttm:title>이 메커니즘의 사용에 관한 더 자세한 지침은 HTML의 인라인 마크업과 양방향 텍스트에서 확인할 수 있다.
<p> 및 <span> 콘텐츠 요소는
tts:direction 및 tts:unicodeBidi 속성을 사용하여
텍스트의 방향을 지정하는 것을 허용한다.
문서 작성자는 유니코드 제어 문자를 사용하는 것보다 이 더 견고한 메커니즘을 사용해야 한다.
4. DAPT 데이터 모델 및 해당 TTML 구문은 DAPT 데이터 모델의 객체와 속성이 [TTML2]에서, 즉 DAPT 문서에서 어떻게 표현되는지를 정의한다. 그러나 DAPT 데이터 모델 인스턴스는 여러 [TTML2] 문서 인스턴스로 표현될 수 있다.
예를 들어, 4. DAPT 데이터 모델 및 해당
TTML 구문은
대본
이벤트를 나타내는
<div> 요소가
<body> 요소의 직접 자식이어야 한다고 요구하지 않는다.
그 <div> 요소는 다른 <div> 요소 안에 중첩될 수 있다.
따라서 DAPT 대본의 객체와 속성을 다양한 DAPT 문서로 직렬화하는 것이
가능하다.
이 절은 DAPT 문서에서 DAPT 모델 인스턴스를 상호 운용 가능하고
모호하지 않게 재구성하는 방법을 정의한다.
DAPT는 확장성상의 이유로 DAPT 데이터 모델의 완전한 직렬화를 정의하지 않는다. 이는 필요한 경우 미래 버전이 그렇게 할 수 있도록 하기 위한 것이다. 또한 DAPT 문서는 DAPT 객체나 속성의 표현에서 언급되지 않은 요소 또는 속성을 포함할 수 있다. 이는 DAPT의 미래 버전에 적합한 처리기에 의해 생성되었기 때문일 수도 있고, 일반적인 [TTML2] 처리 과정을 통해 생성되었기 때문일 수도 있으며, 또는 예를 들어 스타일링이나 레이아웃을 추가하기 위해 선택적 기능을 사용하기 때문일 수도 있다. 이 절은 그러한 요소 또는 속성을 처리하는 방법을 정의한다.
일반적인 [TTML2] 처리기를 사용하여 DAPT 문서를 처리하는 것도 가능하며, 그러한 처리기는 문서를 반드시 DAPT 데이터 모델에 매핑하지는 않는다. 예를 들어 일반 TTML2 표현 처리기는 대본 이벤트를 그 자체로 모델링할 필요 없이 DAPT 문서를 기반으로 오디오 믹스를 렌더링할 수 있다. 그 경우 이 절은 무시될 수 있다.
이 절은 비규범적이다.
이 절과 관련된 규범 조항은 [TTML2]에 정의되어 있다.
DAPT에서는
DAPT 문서가 루트 요소에
ttp:contentProfiles 속성을 포함하고,
그 속성이 5.6.2
ttp:contentProfiles에 지정된 대로
DAPT content profile 지정자를 포함해야 한다.
따라서 그러한 속성을 포함하지 않거나,
그러한 프로필 지정자를 포함하지 않는 모든 TTML 문서는
DAPT 문서가 아닌 것으로
간주될 수 있다.
그러므로 DAPT에 대한 엄격한 준수를 요구하는 처리기는
그러한 문서의 처리를 중단할 수 있다.
처리기가 입력으로 받는 DAPT 문서가 처리기가 지원하는 기능과 관련된 어휘를 포함하지만, 문서가 적합성을 주장하는 콘텐츠 프로필에서 해당 기능의 지원이 제외되어 있는 경우, 처리기는 그 문서의 맥락에서 해당 기능을 구현하지 않아야 SHOULD NOT 한다.
[TTML2]는
<div> 요소가
<div> 요소와 <p> 요소의 임의 조합을 포함하는 것을 허용한다.
DAPT 데이터 모델은
각 대본 이벤트가
0개 이상의 <p> 요소를 포함하는 <div> 요소로
어떻게 표현되는지를 설명한다.
또한 <body> 요소와 그러한 대본 이벤트 <div>
요소 사이의 경로에 다른 중간 <div> 요소가 있는 것도 허용한다.
이에 더해, DAPT 데이터 모델의 속성에
해당하지 않는 속성도 허용된다.
이는 다음과 같은 가능성을 발생시킨다:
<div> 요소,
예를 들어 다른 <div> 요소나 <metadata> 요소;xml:id처럼 대본 이벤트에 필요한 속성을 가지지 않는
<div> 요소;
xml:space처럼 대본 이벤트에 대한
DAPT 데이터 모델에는 없는 속성을 가진
<div> 요소;
<div> 요소가
대본 이벤트로 보이지 않는
<p> 요소.
다음 처리 규칙은 이러한 경우를 해결한다.
대본 이벤트를 식별하기 위한 규칙:
<div> 요소 자식을 가지지 않고,
대본 이벤트의
모든 비메타데이터 필수 속성의 TTML 표현을 포함하는
<div> 요소는,
추가 인식되지 않는 어휘를
포함하더라도,
대본 이벤트로 매핑되어야
MUST 한다.
예를 들어 대본 이벤트 식별자를 나타내는
유효한 xml:id를 가지는 경우가 이에 해당한다;
<div> 요소 자식을 포함하는 <div> 요소는
대본 이벤트로 매핑되어서는 안 된다
MUST NOT;
대신 처리기는 그러한 <div> 요소 자식을
(깊이 우선 순회로 재귀적으로) 반복 처리하고,
각 요소가 대본 이벤트의 요구사항을 충족하는지 고려해야
MUST 한다;
<div> 요소는
대본 이벤트로 매핑되어서는 안 된다
MUST NOT.
텍스트 객체를 식별하기 위한 규칙:
<div> 요소의 자식인 <p> 요소는
텍스트
객체로 매핑되어야 MUST 한다.
<div> 요소의
자식이 아닌 <p> 요소는
텍스트
객체로 매핑되어서는 안 된다 MUST NOT.
DAPT의 미래 버전은 이러한 구조적 가능성을 다르게 사용하는 기능을 포함할 수 있으며, 따라서 여기 정의된 규칙과 상호 배타적인 다른 처리 규칙을 정의할 수 있다.
일부 속성은 다른 어떤 요소에 있는 속성의 계산된 값에 의존하여
그 값을 계산하는 의미론을 가진다.
예를 들어 xml:lang 속성이 어떤 요소에 지정되지 않은 경우,
그 계산된 값은 해당 요소의 부모에 있는 같은 속성의 계산된 값이다.
| 속성 | DAPT 데이터 모델 엔터티 | 지정될 수 있는 위치 | 자식 또는 자손 요소에 대한 효과 |
|---|---|---|---|
xml:lang |
기본 언어, 언어 | 모든 요소 | [XML]에 정의된 대로 상속됨 |
xml:id |
고유 식별자 | 모든 요소 | 없음 |
begin |
시작 | <body>,
<div>,
<p>,
<span>,
<audio>,
<animate>
|
[TTML2]에 정의된 대로 그 자식의 타이밍 속성에 대한 기준 시점을 설정함 |
end |
끝 | <body>,
<div>,
<p>,
<span>,
<audio>,
<animate>
|
[TTML2]에 정의된 대로 그 자손의 계산된 종료 시간을 제한함 |
dur |
지속 시간 | <body>,
<div>,
<p>,
<span>,
<audio>,
<animate>
|
[TTML2]에 정의된 대로 그 자손의 계산된 종료 시간을 제한함 |
daptm:langSrc |
텍스트 언어 소스 | <tt>,
<body>,
<div>,
<p>,
<span>
|
이 절에 정의된 대로 상속됨 |
daptm:represents |
나타내는 것 | <tt>,
<body>,
<div>,
<p>,
<span>
|
이 절에 정의된 대로 상속됨 |
,
daptm:scriptRepresents 및
daptm:onScreen 속성은
특정 요소에 지정된 경우에만 정의된다.
daptm:descType
또 다른 예로, DAPT 문서에서 어떤 요소의 계산된 시간은
그 요소 부모의 시작 시간에 상대적이다.
<div> 요소가 begin 속성을 지정하면,
그 자식 <div> 요소들의 계산된 시간은
그 부모 <div> 요소의 시작 시간에 상대적이며,
계층 아래로 계속 그렇게 적용된다.
처리 대상이 DAPT 데이터 모델의 인스턴스여서
이러한 "중간" <div> 요소들이 직접 대응하는 것이 없더라도,
그 시간들을 계산에 포함하는 것이 중요하다.
그렇지 않으면 대본 이벤트의 시작 및 끝 시간이 잘못될 것이다.
이 상황을 더 일반적으로 고려하면, DAPT 문서 안에는 TTML 요소가 있을 수 있으며, 이 요소들은 DAPT 데이터 모델의 객체에 직접 대응하지 않을 수 있다. 또한 그러한 요소들은 DAPT 데이터 모델의 객체에 대응하는 요소에 적용되는 속성 값의 계산에 영향을 주는 속성을 지정할 수 있다.
이 시나리오에서는 [TTML2]가 정의한 의미론,
또는 여기에서 정의된 어휘의 경우 이 명세가 정의한 의미론이 우선한다.
구현은 계산된 값을 DAPT 데이터 모델 객체에 적용하기
전에, 문서 인스턴스의 내용을 기반으로
속성 값을 계산해야 MUST 한다.
예를 들어 TTML2 스타일링 기능을 지원하는 처리기는
tts:fontSize 같은 속성의 상속 및 상대 값 계산에 대한
TTML2 의미론을 구현해야 한다.
구현이 내부적으로 DAPT 데이터 모델 객체, 예를 들어 위 예제에 표시된 대본 이벤트를 생성하는 경우, 상호 운용성을 위해 계산된 값을 사용하는 것이 중요하다.
이 절은 비규범적이다.
5.2.1
인식되지 않는 어휘에 따라,
DAPT 처리기 구현자는
DAPT 문서의
<metadata> 요소 안에 있는
인식되지 않는 어휘를
유지하도록 권장된다.
실제로는 DAPT 문서를 입력하고
DAPT 문서를 출력하는 구현이
입력 문서 구조와 내용을 수정하면서,
출력 문서에서 인식되지 않는 어휘를 가진
해당 엔터티들을 사실상 잘라낼 가능성이 있다.
이 절과 관련된 규범 조항은 [TTML2]에 정의되어 있다.
[TTML2]는 검증 처리기를 정의한다. 이는 문서 인스턴스를 평가하고 그것이 유효한지 아닌지 결정하는 것을 목적으로 하는 구현 클래스이다. 일반적으로 이는 처리 워크플로 안에서 문서가 이후 사용에 적합한지 확인하는 데 사용될 것이다. 실제 세계의 예는 단순히 "좋음" 또는 "나쁨"을 반환하지 않고, 입력 문서의 특이하거나 예상치 못했거나 문제가 있는 내용을 설명하는 정보, 경고 및 오류 메시지도 출력할 가능성이 크다.
DAPT 문서를 위한 검증 처리기를 구현할 때, 엄격한 [TTML2] 검증 처리 규칙을 적용할 수 있다. 이렇게 하려면 프로필에 정의된 필수 또는 선택 기능과 관련된 구문 및 콘텐츠의 존재와 의미론적 유효성을 확인하고, 금지된 기능과 관련된 구문이 없는지 확인해야 한다.
인식되지 않는 네임스페이스의 어휘를 처리하기 위한 [TTML2] 메커니즘은 검증 전에 이를 잘라내는 것이다. 이 접근 방식을 사용할 수 있으며, 추가로 구현이 잘려 나간 속성과 요소를 정보로 보고하는 것도 합리적일 수 있다.
여기서 "어휘"라는 용어는 XML 요소와 속성을 가리킨다.
잘라내기 후 인식된 네임스페이스에서 지원되지 않거나 폐기된 어휘가 발견되거나, 지원되는 어휘가 예상치 못했지만 유효하지는 않은 콘텐츠를 포함하는 경우 검증 경고가 발행될 수 있다. 그러나 이러한 시나리오에서 오류는 예상되지 않는다.
금지된 어휘가 존재하거나, 허용된 어휘 안에서 의미론적으로 유효하지 않은 콘텐츠가 발견되는 경우에는 검증 오류가 예상된다.
비규범으로 표시된 절뿐 아니라, 이 명세의 모든 저작 지침, 다이어그램, 예제 및 참고는 비규범적이다. 이 명세의 그 밖의 모든 것은 규범적이다.
이 문서의 핵심어 MAY, MUST, MUST NOT, SHOULD 및 SHOULD NOT은 여기 표시된 것처럼 모두 대문자로 나타나는 경우에, 그리고 그 경우에만 BCP 14 [RFC2119] [RFC8174]에 설명된 대로 해석되어야 한다.
[TTML2]는 Profiling 하위 시스템 안에서 문서 및 처리기 요구사항을 표현하기 위한 형식 언어를 지정한다. 이 명세의 규범적 요구사항은 위에 설명된 적합성 용어를 사용하여 정의되며, 이 TTML2 프로필 메커니즘을 사용해서도 정의된다. TTML2 어휘가 참조되는 경우, [TTML2]에 정의된 해당 어휘와 관련된 구문 및 의미론 요구사항이 적용된다.
일반적으로 DAPT 처리기가 TTML2 프로필 처리 의미론을 구현해야 한다는 요구사항은 없지만, 구현자는 F. 프로필에 정의된 TTML2 프로필을 예를 들어 체크리스트처럼, 자신의 구현이 DAPT의 규범적 요구사항을 충족하는지 검증하는 수단으로 사용할 수 있다.
반대로, TTML2 프로필 처리 의미론을 지원하는 범용 [TTML2] 처리기는 F. 프로필에 정의된 TTML2 프로필을 직접 사용하여 DAPT 문서를 처리할 수 있는지 판단할 수 있다.
적합한 DAPT 문서는 이 명세의 규범 조항에 적합한 [TTML2] timed text content document instances이다. 이러한 조항은 F. 프로필에 정의된 content profile 안에서 [TTML2]의 profile 어휘를 사용하여 표현된다.
적합한 DAPT 처리기는 이 명세의 규범 조항에 적합한 [TTML2] content processors이다. 이러한 조항은 F. 프로필에 정의된 processor profile 안에서 [TTML2]의 profile 어휘를 사용하여 표현된다.
content-descriptor
§4.1.6.2
이 절은 비규범적이다.
다음을 제외하고는 [ttml2]의 개인정보 보호 고려사항이 적용된다:
<audio> 요소와 관련된 고려사항만 적용된다.
condition 속성에 대한 지원이 요구되지 않으므로
Appendix P.7 (Access to Processing State)은 적용되지 않는다.
DAPT 문서는 일반적으로 관련 미디어에 등장하는 가상 또는 실제 등장인물이나 사람의 이름을 포함한다. 일반적으로 이 정보는 미디어 자체 안에 존재하거나 다른 경로를 통해 공개되어 있을 것이다. 그러한 신원이 포함된 DAPT 문서에 접근할 수 있는 사람들에게 그 신원이 알려지는 것과 관련해 민감성이 있다면, 그러한 접근은 적절한 기밀성으로 관리되어야 한다. 예를 들어 그러한 문서는 폐쇄된 저작 환경 안에서만 사용 가능하게 하고, 더 넓은 대상에게 배포하기 전에 민감한 정보를 제거하도록 편집할 수 있다. 이러한 시나리오가 발생하는 경우, 폐쇄 환경 안에서 문서를 "저장 상태" 및 이동 중에 암호화하고, 인증 플랫폼으로 접근을 제어하는 등 정보 보안 모범 관행을 적용해야 한다.
DAPT 문서는 동일한 오디오 조각에 대해
일련의 대체 외부 오디오 리소스를 참조할 수 있으며,
이때 처리기는 형식 지원 같은 기능에 기반하여 대안 중 하나를 선택할 것으로 예상된다.
이 패턴이 사용되는 경우, 처리기의 오디오 리소스 선택이 출처에 노출되어,
선호하는 오디오 형식 같은 해당 처리기에 대한 정보가 드러날 수 있다.
이 절은 비규범적이다.
DAPT가 [ttml2]의 프로필이므로, [ttml2]의 보안 고려사항이 적용된다; 모든 적합한 DAPT 문서는 TTML 문서 인스턴스이다.
[ttml2]의
XML 관련 고려사항에도 불구하고,
DAPT 문서는 필수
확장 기능에 의해
문서 유형 선언을 선언하거나 참조하는 것을 피하고,
[xml] 엔터티 확장
메커니즘 사용을 피하도록 요구된다.
따라서 구현은 DAPT 문서를 파싱할 때
XML의 그러한 기능들을 지원하지 않음으로써,
해당 기능들과 관련된 잠재적 서비스 거부 공격이나 외부 콘텐츠 주입으로부터 보호할 수 있다.
#serialization
DAPT 문서는 "하위 리소스"라고도 설명되는 외부 오디오 리소스의 참조를 허용한다. 그러한 참조와 관련된 잠재적 위협 중 하나는 출처가 저작 시점에 의도한 것과 다른 오디오 리소스를 반환할 수 있다는 점이다. 현재 그러한 하위 리소스의 무결성을 검증하기 위한 방식은 제공되지 않는다. 적절한 오디오 리소스가 제공됨을 보장할 수 없는 콘텐츠 제공자, 예를 들어 체인의 일부가 자신의 통제 밖에 있는 경우에는, 하위 리소스 무결성 메타데이터를 추가하는 것을 고려할 수 있다. 예를 들어 의도한 하위 리소스의 해시를 포함하는 속성을 추가하고, 수신된 하위 리소스가 의도한 것인지 검증하기 위해 이를 사용하는 클라이언트 측 검사를 구현할 수 있다.
이 절은 비규범적이다.
이 절은 구현자를 위한 오디오 믹싱에 관한 추가 정보를 포함한다.
믹싱 지시의 적용은 [webaudio]를 사용하여 구현할 수 있다. 그림 2는 프로그램 오디오의 흐름과, 오디오 생성 요소가 활성 상태일 때 대본 이벤트의 팬과 게인(설정된 경우)이 어떻게 적용되는지를 보여 준다. 그런 다음 출력은 텍스트로 전달되고, 이 텍스트는 활성 오디오 녹음에서 온 오디오를 믹스한다. 이 오디오 녹음 자체도 자신의 믹싱 지시의 적용을 받으며, 그 결과에는 마스터 버스로 믹스되어 출력되기 전에 텍스트의 믹싱 지시가 적용된다.
위 예제는 그림 3에서 [webaudio] 노드로 표시된다.
위 예제는 적어도 두 가지 방식으로 단순화되어 있다:
오디오 녹음이 들리는 소리로 시작하거나 끝나는 경우, 즉 인 시간의 첫 번째 샘플 또는 아웃 시간의 마지막 샘플이 0이 아닌 경우, 재생의 시작 또는 끝에서 오디오 변환기가 바람직하지 않은 "팝" 소음을 내도록 유도될 가능성이 있다.
이 팝 효과를 피하기 위한 여러 잠재적 전략이 존재한다. 예를 들면 다음과 같다:
이 접근 방식 중 마지막 방식을 사용하는 경우, 그리고 이 측면에서 표현 처리기의 동작에 대한 다른 외부 제어가 없다면, 오디오 녹음 또한 시작 또는 끝에, 들리지 않게 렌더링될 경우 의미가 바뀌는 샘플을 포함하지 않는 것이 권장된다. 예를 들어 단어 "cat"의 시작에 있는 "c" 같은 파열성 발화를 생략하면 단어가 "at"처럼 들리게 될 것이다.
이 절은 [TTML2] content profile 및 processor profile을, 기능 및 확장 집합에 대한 disposition을 표현함으로써 정의한다. DAPT 확장은 G. 확장에서 정의된다.
[TTML2]에 지정된 프로필 의미론이 적용된다.
TTML Profile 명세는 “document instances”(파일) 및 “processors”(파일을 처리하는 것) 안에서 필수 / 선택 / 금지되는 TTML의 모든 기능과, 모든 확장 또는 제약을 나열하는 문서이다.
여기에서 정의된 content profile에 적합한 timed text content document instance는:
timed text content document instance는 정의상 [TTML2]의 Section 3.1의 요구사항을 만족하므로, 여기에서 정의된 프로필에 적합한 timed text content document instance는 또한 적합한 TTML2 Document Instance이다.
이 명세에서 정의된 processor profile에 적합한 Presentation processor는:
이 명세에서 정의된 processor profile에 적합한 Transformation processor는:
이 명세에서 사용되는 required, permitted, optional 및 prohibited disposition은
다음과 같이 [TTML2] <ttp:feature>
및 <ttp:extension> 요소의
value 속성 값에 매핑된다:
| DAPT disposition | 또는
요소의 value 속성 값
|
|
|---|---|---|
| content profile | processor profile | |
| required | required | required |
| permitted | optional | required |
| optional | optional | optional |
| prohibited | prohibited | optional |
이 문서 안에서 presentation processor 및 transformation processor라는 용어를 사용한다고 해서, [TTML2]에 정의된 어떤 표준 프로필에 그 자체로 적합함을 의미하지는 않는다. 다시 말해, presentation processor 또는 transformation processor가 TTML2 Presentation Profile 또는 TTML2 Transformation Profile에 함께 적합하지 않으면서도 이 문서에서 정의된 프로필에 적합한 것은 오류로 간주되지 않는다.
이 명세 안에서 DAPT 적합성을 설명하기 위해 [TTML2] profiling 하위 시스템을 사용하는 것은, DAPT 처리기가 DAPT에 의해 명시적으로 지원이 요구되는 기능 이외에 해당 시스템의 어떤 기능도 지원해야 함을 의미하려는 것이 아니다.
이 문서는 부적합한 timed text content document instance를 처리하거나 변환할 때의 presentation processor 또는 transformation processor 동작을 지정하지 않는다.
permitted 및 prohibited disposition은 <ttp:profile> 요소 안에서
또는 <ttp:feature> 요소가
허용되거나 금지되는 것으로 지정되는 것을 가리키지 않는다.
<ttp:extension>
이 절에 나열된 기능 및 확장은 DAPT 문서, Presentation Processors 및 Transformation Processors에 대한 최소 요구사항을 표현한다. DAPT 문서는 추가로 다른 프로필에 적합할 수 MAY 있으며, DAPT content profile에서 금지하지 않은 구문을 포함할 수 있다. Presentation Processors 및 Transformation Processors는 다른 프로필과 관련된 추가 구문 및 의미론을 지원할 수 MAY 있다.
예를 들어, DAPT 스크립트는 오디오를 녹음하는 배우에게 스크립트의 표현을 향상시키거나, 나중에 자막 또는 캡션 생성에 사용할 때 중요한 스타일링을 추가하기 위해 [TTML2]의 IMSC([ttml-imsc1.3]) Text Profile에서 허용하는 구문을 포함할 수 있습니다.
편집 작업: 이 기능 목록을 검토하고 각 항목의 처리 상태를 확인합니다. IMSC에서 허용되는 금지 기능은 없어야 합니다.
DAPT Content Profile은 [TTML2]의 프로필 메커니즘을 사용하여 DAPT 대본의 적합성 요구사항을 표현한다. 이는 DAPT Processor Profile을 지원하는 검증 처리기가 DAPT 문서를 검증하는 데 사용할 수 있다.
DAPT 문서 안에 DAPT Content Profile을 포함해야 한다는 요구사항은 없다.
<?xml version="1.0" encoding="utf-8"?>
<!-- This file is the TTML Profile Document representing
the DAPT 1.0 Content Profile defined
by DAPT at https://www.w3.org/TR/dapt/ -->
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
designator="http://www.w3.org/ns/ttml/profile/dapt1.0/content"
combine="mostRestrictive"
type="content">
<features xml:base="http://www.w3.org/ns/ttml/feature/">
<!-- required (mandatory) feature support -->
<feature value="required">#structure</feature>
<feature value="required">#timeBase-media</feature>
<!-- optional (voluntary) feature support -->
<feature value="optional">#animate-fill</feature>
<feature value="optional">#animate-minimal</feature>
<feature value="optional">#audio</feature>
<feature value="optional">#audio-description</feature>
<feature value="optional">#audio-speech</feature>
<feature value="optional">#bidi</feature>
<feature value="optional" extends="#bidi">#bidi-version-2</feature>
<feature value="optional">#chunk</feature>
<feature value="optional">#content</feature>
<feature value="optional">#contentProfiles</feature>
<feature value="optional">#contentProfiles-combined</feature>
<feature value="optional">#core</feature>
<feature value="optional">#data</feature>
<feature value="optional">#direction</feature>
<feature value="optional">#embedded-audio</feature>
<feature value="optional">#embedded-data</feature>
<feature value="optional">#frameRate</feature>
<feature value="optional">#frameRateMultiplier</feature>
<feature value="optional">#gain</feature>
<feature value="optional">#metadata</feature>
<feature value="optional">#metadata-item</feature>
<feature value="optional">#nested-div</feature>
<feature value="optional" extends="#metadata">#metadata-version-2</feature>
<feature value="optional">#pan</feature>
<feature value="optional">#permitFeatureNarrowing</feature>
<feature value="optional">#permitFeatureWidening</feature>
<feature value="optional">#pitch</feature>
<feature value="optional">#presentation-audio</feature>
<feature value="optional">#processorProfiles</feature>
<feature value="optional">#processorProfiles-combined</feature>
<feature value="optional">#resources</feature>
<feature value="optional" extends="#animation">#set</feature>
<feature value="optional">#set-fill</feature>
<feature value="optional">#set-multiple-styles</feature>
<feature value="optional">#source</feature>
<feature value="optional">#speak</feature>
<feature value="optional">#speech</feature>
<feature value="optional">#styling</feature>
<feature value="optional">#styling-chained</feature>
<feature value="optional">#styling-inheritance-content</feature>
<feature value="optional">#styling-inline</feature>
<feature value="optional">#styling-referential</feature>
<feature value="optional">#tickRate</feature>
<feature value="optional">#time-clock</feature>
<feature value="optional">#time-offset</feature>
<feature value="optional">#time-offset-with-frames</feature>
<feature value="optional">#time-offset-with-ticks</feature>
<feature value="optional">#timing</feature>
<feature value="optional">#transformation</feature>
<feature value="optional">#unicodeBidi</feature>
<feature value="optional">#unicodeBidi-isolate</feature>
<feature value="optional" extends="#unicodeBidi">#unicodeBidi-version-2</feature>
<feature value="optional">#xlink</feature>
<!-- prohibited feature support -->
<feature value="prohibited">#animation-out-of-line</feature>
<feature value="prohibited">#clockMode</feature>
<feature value="prohibited">#clockMode-gps</feature>
<feature value="prohibited">#clockMode-local</feature>
<feature value="prohibited">#clockMode-utc</feature>
<feature value="prohibited">#dropMode</feature>
<feature value="prohibited">#dropMode-dropNTSC</feature>
<feature value="prohibited">#dropMode-dropPAL</feature>
<feature value="prohibited">#dropMode-nonDrop</feature>
<feature value="prohibited">#markerMode</feature>
<feature value="prohibited">#markerMode-continuous</feature>
<feature value="prohibited">#markerMode-discontinuous</feature>
<feature value="prohibited">#subFrameRate</feature>
<feature value="prohibited">#time-clock-with-frames</feature>
<feature value="prohibited">#time-wall-clock</feature>
<feature value="prohibited">#timeBase-clock</feature>
<feature value="prohibited">#timeBase-smpte</feature>
<feature value="prohibited">#timeContainer</feature>
</features>
<extensions xml:base="http://www.w3.org/ns/ttml/profile/dapt/extension/">
<!-- required (mandatory) extension support -->
<extension value="required">#contentProfiles-root</extension>
<extension value="required">#represents</extension>
<extension value="required">#scriptRepresents-root</extension>
<extension value="required">#scriptType-root</extension>
<extension value="required">#serialization</extension>
<extension value="required">#xmlLang-root</extension>
<!-- optional (voluntary) extension support -->
<extension value="optional">#agent</extension>
<extension value="optional">#daptOriginTimecode</extension>
<extension value="optional">#descType</extension>
<extension value="optional">#onScreen</extension>
<extension value="optional">#scriptEventMapping</extension>
<extension value="optional">#textLanguageSource</extension>
<!-- prohibited extension support -->
<extension value="prohibited">#profile-root</extension>
<extension value="prohibited">#source-data</extension>
<extension value="prohibited">#xmlLang-audio-nonMatching</extension>
</extensions>
</profile>
DAPT Processor Profile은 [TTML2]의 프로필 메커니즘을 사용하여 DAPT 대본의 처리 요구사항을 표현한다. DAPT Processor Profile의 필수 기능 및 확장을 지원하는 처리기는 최소한 DAPT 문서 안의 모든 허용 기능을 처리할 수 있다.
DAPT 문서 안에 DAPT Processor Profile을 포함해야 한다는 요구사항은 없다.
<?xml version="1.0" encoding="utf-8"?>
<!-- This file is the TTML Profile Document representing
the DAPT 1.0 Processor Profile defined
by DAPT at https://www.w3.org/TR/dapt/ -->
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
designator="http://www.w3.org/ns/ttml/profile/dapt1.0/processor"
combine="mostRestrictive"
type="processor">
<features xml:base="http://www.w3.org/ns/ttml/feature/">
<!-- required (mandatory) feature support -->
<feature value="required">#animate-fill</feature>
<feature value="required">#animate-minimal</feature>
<feature value="required">#audio</feature>
<feature value="required">#audio-description</feature>
<feature value="required">#audio-speech</feature>
<feature value="required">#bidi</feature>
<feature value="required" extends="#bidi">#bidi-version-2</feature>
<feature value="required">#chunk</feature>
<feature value="required">#content</feature>
<feature value="required">#contentProfiles</feature>
<feature value="required">#core</feature>
<feature value="required">#data</feature>
<feature value="required">#direction</feature>
<feature value="required">#embedded-audio</feature>
<feature value="required">#embedded-data</feature>
<feature value="required">#frameRate</feature>
<feature value="required">#frameRateMultiplier</feature>
<feature value="required">#gain</feature>
<feature value="required">#metadata</feature>
<feature value="required">#metadata-item</feature>
<feature value="required">#nested-div</feature>
<feature value="required" extends="#metadata">#metadata-version-2</feature>
<feature value="required">#pan</feature>
<feature value="required">#pitch</feature>
<feature value="required">#presentation-audio</feature>
<feature value="required">#resources</feature>
<feature value="required" extends="#animation">#set</feature>
<feature value="required">#set-fill</feature>
<feature value="required">#set-multiple-styles</feature>
<feature value="required">#source</feature>
<feature value="required">#speak</feature>
<feature value="required">#speech</feature>
<feature value="required">#structure</feature>
<feature value="required">#styling</feature>
<feature value="required">#styling-chained</feature>
<feature value="required">#styling-inheritance-content</feature>
<feature value="required">#styling-inline</feature>
<feature value="required">#styling-referential</feature>
<feature value="required">#tickRate</feature>
<feature value="required">#time-clock</feature>
<feature value="required">#time-offset</feature>
<feature value="required">#time-offset-with-frames</feature>
<feature value="required">#time-offset-with-ticks</feature>
<feature value="required">#timeBase-media</feature>
<feature value="required">#timing</feature>
<feature value="required">#transformation</feature>
<feature value="required">#unicodeBidi</feature>
<feature value="required">#unicodeBidi-isolate</feature>
<feature value="required" extends="#unicodeBidi">#unicodeBidi-version-2</feature>
<feature value="required">#xlink</feature>
<!-- optional (voluntary) feature support -->
<feature value="optional">#animation-out-of-line</feature>
<feature value="optional">#clockMode</feature>
<feature value="optional">#clockMode-gps</feature>
<feature value="optional">#clockMode-local</feature>
<feature value="optional">#clockMode-utc</feature>
<feature value="optional">#contentProfiles-combined</feature>
<feature value="optional">#dropMode</feature>
<feature value="optional">#dropMode-dropNTSC</feature>
<feature value="optional">#dropMode-dropPAL</feature>
<feature value="optional">#dropMode-nonDrop</feature>
<feature value="optional">#markerMode</feature>
<feature value="optional">#markerMode-continuous</feature>
<feature value="optional">#markerMode-discontinuous</feature>
<feature value="optional">#permitFeatureNarrowing</feature>
<feature value="optional">#permitFeatureWidening</feature>
<feature value="optional">#processorProfiles</feature>
<feature value="optional">#processorProfiles-combined</feature>
<feature value="optional">#subFrameRate</feature>
<feature value="optional">#time-clock-with-frames</feature>
<feature value="optional">#time-wall-clock</feature>
<feature value="optional">#timeBase-clock</feature>
<feature value="optional">#timeBase-smpte</feature>
<feature value="optional">#timeContainer</feature>
</features>
<extensions xml:base="http://www.w3.org/ns/ttml/profile/dapt/extension/">
<!-- required (mandatory) extension support -->
<extension value="required">#agent</extension>
<extension value="required">#contentProfiles-root</extension>
<extension value="required">#daptOriginTimecode</extension>
<extension value="required">#descType</extension>
<extension value="required">#onScreen</extension>
<extension value="required">#represents</extension>
<extension value="required">#scriptRepresents-root</extension>
<extension value="required">#scriptType-root</extension>
<extension value="required">#serialization</extension>
<extension value="required">#textLanguageSource</extension>
<extension value="required">#xmlLang-root</extension>
<!-- optional (voluntary) extension support -->
<extension value="optional">#profile-root</extension>
<extension value="optional">#scriptEventMapping</extension>
<extension value="optional">#source-data</extension>
<extension value="optional">#xmlLang-audio-nonMatching</extension>
</extensions>
</profile>
다음 절들은 확장 지정을 정의하며, 이는 DAPT 확장 네임스페이스 기본 URI에 상대적인 상대 URI(프래그먼트 식별자)로 표현된다. 이러한 확장 지정은 F. 프로필에서 [TTML2] 프로필 기능으로 표현되지 않는 DAPT의 규범 조항을 설명하는 데 사용된다.
변환 처리기는
<ttm:agent> 요소의 다음
요소 및 속성 값을 인식하고 변환할 수 있으면
#agent 확장을 지원한다:
xml:id 속성<ttm:name> 요소그리고 다음 값 조합 각각을 인식하고 변환할 수 있으면 지원한다:
type="person"인 <ttm:agent> 요소와
type="full"인 자식 <ttm:name> 요소;
type="character"인 <ttm:agent> 요소와
type="alias"인 자식 <ttm:name> 요소;
#agent 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.
변환 처리기는
<tt> 요소의
속성 값을 인식하고 변환할 수 있으면
ttp:contentProfiles#contentProfiles-root 확장을 지원한다.
표현 처리기는
<tt> 요소의
속성에 대한 표현 의미론 지원을 구현하면
ttp:contentProfiles#contentProfiles-root 확장을 지원한다.
#contentProfiles-root 확장은
기능의 구문 및 의미론 부분집합이다.
#contentProfiles
변환 처리기는
<daptm:daptOriginTimecode>
요소의 값을 인식하고 변환할 수 있으면
#daptOriginTimecode 확장을 지원한다.
#daptOriginTimecode 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.
변환 처리기는
<ttm:desc> 요소의
속성 값을
인식하고 변환할 수 있으면
daptm:descType#descType 확장을 지원한다.
#descType 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.
변환 처리기는
<div> 요소의
속성 값을
인식하고 변환할 수 있으면
daptm:onScreen#onScreen 확장을 지원한다.
#onScreen 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.
변환 처리기는
<tt> 요소의
속성 값을
인식하고 변환할 수 있으면
ttp:profile#profile-root 확장을 지원한다.
표현 처리기는
<tt> 요소의
속성에 대한
표현 의미론 지원을 구현하면
ttp:profile#profile-root 확장을 지원한다.
#profile-root 확장은
기능의 구문 및 의미론 부분집합이다.
#profile
변환 처리기는
속성 값을
인식하고 변환할 수 있으면
daptm:represents#represents 확장을 지원한다.
#represents 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.
변환 처리기는
DAPT 문서를
DAPT 데이터 모델의 내부 표현으로 매핑할 때,
6.3
<div> 및
<p> 요소 처리에 지정된 처리 요구사항을 구현하면
#scriptEventMapping 확장을 지원한다.
#scriptEventMapping 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.
변환 처리기는
<tt> 요소의
속성 값을 인식하고 변환할 수 있으면
daptm:scriptRepresents#scriptRepresents-root 확장을 지원한다.
#scriptRepresents-root 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.
#scriptRepresents-root 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.
변환 처리기는
<tt> 요소의
속성 값을
인식하고 변환할 수 있으면
daptm:scriptType#scriptType-root 확장을 지원한다.
#scriptType-root 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.
#serialization
확장과 관련하여 유효한 직렬화된 문서는
[xml] XML 1.0 문서이며,
[UNICODE]에 지정된 UTF-8 문자 인코딩을
사용하여 인코딩되고,
바이트 순서 표시(BOM)를 포함하지 않으며,
문서
유형 선언,
엔터티
선언,
그리고 미리 정의된
엔터티에 대한 것을 제외한
엔터티 참조를 포함하지 않는다.
변환 처리기 또는 표현 처리기는
위에 정의된 직렬화된 문서를 읽을 수 있으면
#serialization 확장을 지원한다.
문서를 쓰는 변환 처리기는
위에 정의된 직렬화된 문서를 쓸 수 있으면
#serialization 확장을 지원한다.
변환 처리기는
<data> 요소의 자식인
<source> 요소의 값을
인식하고 변환할 수 있으면
#source-data 확장을 지원한다.
표현 처리기는
<data> 요소의 자식인
<source> 요소에 대한
표현 의미론 지원을 구현하면
#source-data 확장을 지원한다.
변환 처리기는
속성 값을
인식하고 변환할 수 있으면
daptm:langSrc#textLanguageSource 확장을 지원한다.
#textLanguageSource 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.
변환 처리기는
<audio> 요소의 xml:lang 속성 값 중,
그 부모 요소 또는 그 자손이나 참조된
<source> 또는 <data> 요소의
동일한 속성의 계산된 값과 다른 값을 인식하고 변환할 수 있으면
#xmlLang-audio-nonMatching 확장을 지원한다.
이러한 값은 일치하지 않는
값이라고 한다.
표현 처리기는
그러한 일치하지 않는
xml:lang 속성 값에 대한 표현 의미론 지원을 구현하면
#xmlLang-audio-nonMatching 확장을 지원한다.
변환 처리기는
<tt> 요소의
xml:lang 속성 값과 4.1.2
기본 언어에 지정된 추가 의미론을
인식하고 변환할 수 있으면
#xmlLang-root 확장을 지원한다.
표현 처리기는
<tt> 요소의
xml:lang 속성과 4.1.2 기본
언어에 지정된 추가 의미론에 대한
표현 의미론 지원을 구현하면
#xmlLang-root 확장을 지원한다.
이 절은 이 문서에서 정의된 레지스트리 표의 관리 책임, 변경 절차 및 핵심 요구사항으로 구성되는 레지스트리 정의를 지정한다.
이 w3c registry의 관리자는 Timed Text Working Group (TTWG)이다. TTWG가 관리자의 역할을 수행할 수 없는 경우, 예를 들어 종료된 경우에는, 대체 관리자가 W3C 팀이다.
이 W3C Registry에 대한 변경은 다음 옵션 중 하나를 사용하여 요청되어야 MUST 한다(그 요청을 변경 요청이라 한다):
변경 요청은 관리자가 다음 모두를 식별할 수 있을 만큼 충분한 정보를 포함해야 MUST 한다:
provisional 레지스트리 항목(있는 경우);변경 제안자는 제안된 변경을 포함하는 pull request(또는 이에 준하는 것)를 버전 관리 시스템에 열 수 MAY 있다. pull request가 열린 경우 대응하는 이슈도 열어야 MUST 하며, 해당 pull request는 그 이슈에 연결되어야 MUST 한다.
승인된 변경 요청은 관련 pull request를 버전 관리 시스템에 병합하고 이 문서의 갱신된 버전을 발행함으로써 시행된다.
관리자가 W3C 팀인 경우, 팀은 변경 요청에 대한 광범위한 검토를 구해야 MUST 하며, 접수된 응답을 바탕으로 응답자 간 합의가 있는지 평가하기 전에 최소 4주의 검토 기간을 제공해야 한다.
팀은 검토의 근거로 버전 관리 시스템에 pull request가 열리도록 요구할 수 MAY 있다.
그러한 합의가 있는 경우, 팀은 제안된 변경을 수행해야 MUST 한다.
이 절은 이 문서에서 정의된 레지스트리 표에 대한 제약을 정의한다. 각 레지스트리 표는 레지스트리 항목의 집합으로 구성된다. 각 레지스트리 표는 H.2 레지스트리 표 정의에 관련 레지스트리 표 정의를 가지며, 이는 각 레지스트리 항목에 있는 필드를 나열한다.
각 레지스트리 항목은 상태, 고유한 키, 그리고 적절한 경우 기타 필드를 가진다. 예를 들어 참고, 설명 또는 다른 정의 엔터티에 대한 참조가 이에 해당한다.
레지스트리 표 정의는 각 레지스트리 항목에서 사용할 필드와 키를 정의해야 MUST 한다.
레지스트리 항목의 상태 필드는 해당 항목의 성숙도를 반영한다. 허용되는 값은 다음과 같다:
Provisional
Final
Deprecated
다른 값은 허용되지 않는다.
레지스트리 항목 중
Provisional
상태를 가진 것은 변경되거나 삭제될 수
MAY 있다.
그 상태는 또는
Final로 변경될 수 있다.
Deprecated
나중에 삭제된 항목의
레지스트리 항목
키는
재사용될 수 MAY 있다.
Provisional
새로 생성된 레지스트리 항목은
상태를 가져야
SHOULD 한다.
Provisional
레지스트리 항목 중
Final
상태를 가진 것은 삭제되거나 변경되어서는 안 된다
MUST NOT.
그 상태는 로 변경될 수
MAY 있다.
Deprecated
레지스트리 항목 중
Deprecated
상태를 가진 것은 삭제되거나 변경되어서는 안 된다
MUST NOT.
그 상태는, 그렇게 하면
상태가 또는 Provisional인 항목 집합 안에서
중복 키가 발생하는 경우가 아니라면,
Final로 변경될 수
MAY 있다.
Final
이전에 Provisional이었고 결코
이 아니었던
Final 항목의
레지스트리 항목
키는
재사용될 수 MAY 있다.
Deprecated
이전에 이었던
Final 항목의
레지스트리 항목
키는
재사용되어서는 안 된다 MUST NOT.
Deprecated
새로 생성된 레지스트리 항목은
상태를 가져서는 안 된다
MUST NOT.
Deprecated
이 절은 레지스트리 표를 정의하고 그 레지스트리 항목의 위치를 지정한다.
daptm:descType에 대한
레지스트리 표는
daptm:descType 속성에서 사용할 수 있는 값 집합을 정의한다.
키는
"daptm:descType" 필드이다.
"description" 필드는 각 값의 의도된 목적을 설명한다.
이 레지스트리 표의 레지스트리 항목은 4.8 대본 이벤트 설명에 위치한다.
<content-descriptor>에 대한
레지스트리 표는
daptm:represents 속성에서 사용할 수 있는 값 집합을 정의한다.
키는
"<content-descriptor>" 필드이다.
"Description" 필드는 각 값이 나타내는 미디어 콘텐츠의 유형을 설명한다.
"Example usage" 필드는 설명된 콘텐츠 유형이 일반적으로 발견되는 대본의 유형을 설명한다.
이 레지스트리 표의
레지스트리 항목은 4.1.6.2
<content-descriptor> 값에 위치한다.
이 절은 비규범적이다.
이 명세는 [ttml-imsc1.3] 및 [ttml2]의 다른 프로필과 호환되도록 설계되었다. 구체적으로, 이 명세에서 정의된 기능과 확장의 부분집합을 선택함으로써 [ttml-imsc1.3]에 적합하면서 동시에 DAPT 문서인 문서를 만들 수 있다.
DAPT 문서가 양쪽의 적합성 요구사항을 만족함으로써 IMSC Text Profile 문서이기도 할 수 있다.
DAPT
#serialization 기능은
사실상 IMSC 문서 인코딩 제약의 상위집합이므로,
적합한 DAPT 문서는
IMSC의 인코딩 제약을 만족한다.
IMSC Text Profile과 DAPT는 모두
다른 프로필에서 정의된 어휘,
예를 들어 메타데이터가 문서 인스턴스 안에 존재하는 것을 허용한다.
따라서 IMSC에서 정의된 어휘는
DAPT 문서에서 사용될 수
있지만,
양쪽 프로필을 모두 처리하도록 의도되지 않은 처리기는
metadata 요소 밖에 존재하는
인식되지 않는 어휘를
잘라낼 수 있다.
IMSC는 #resources에 제약을 부과하여 문서 인스턴스 안의 임베드된 오디오를 금지한다. 따라서 이 기능을 사용하는 DAPT 문서는 적합한 IMSC Text Profile 문서일 수 없다.
이 명세와 [ttml-imsc1.3]에
적합한 문서는,
ttp:contentProfiles 속성에
DAPT 1.0
Content Profile 및
IMSC Text Profile의 지정자를
포함함으로써, 문서가 적합한 다른 프로필과 더불어 양쪽에 대한 적합성을 신호한다.
DAPT 전사 단계와 선택적 번역 단계로 시작하는 자막 및 캡션 저작 워크플로는 IMSC Text Profile 문서의 생성 또는 표현을 지시하기 위해 DAPT 메타데이터를 사용할 수 있다. 예:
편집자들은 이 문서의 절차 또는 콘텐츠에 직접 또는 간접적으로 기여한 Timed Text Working Group의 현재 및 이전 구성원, 다른 W3C Working Group의 구성원, Audio Description Community Group의 구성원, 그리고 다른 포럼의 업계 전문가들에게 감사한다.
편집자들은 특히 다음 구성원들의 기여에 감사를 표한다: Glenn Adams, Skynav; Pierre-Anthony Lemieux, MovieLabs; Hewson Maxwell, Ericsson; Chris Needham, British Broadcasting Corporation; Atsushi Shimono, W3C; Matt Simpson, Invited Expert; Andreas Tai, Invited Expert.
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in: