TTML2의 더빙 및 오디오 설명 프로필

W3C 후보 권고안 초안

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2026/CRD-dapt-20260626/
최신 게시 버전:
https://www.w3.org/TR/dapt/
최신 편집자 초안:
https://w3c.github.io/dapt/
이력:
https://www.w3.org/standards/history/dapt/
커밋 이력
구현 보고서:
https://www.w3.org/wiki/TimedText/DAPT_Implementation_Report
편집자:
(Netflix)
(영국 방송 공사)
피드백:
GitHub w3c/dapt (풀 리퀘스트, 새 이슈, 열린 이슈)
public-tt@w3.org에 제목 줄 [dapt] … 메시지 주제 … 사용 (아카이브)

초록

이 명세는 DAPT, 즉 더빙 대본, 오디오 설명, 번역 자막 및 청각 장애인용 자막 (폐쇄 자막이라고도 함)의 제작에 사용되는 전사 및 번역 워크플로에서 시간 지정 텍스트 콘텐츠를 교환하기 위한 TTML 기반 파일 형식을 정의한다.

이 문서의 상태

이 절은 이 문서가 발행된 시점의 상태를 설명한다. 현재 W3C 발행물 목록과 이 기술 보고서의 최신 개정판은 W3C 표준 및 초안 색인에서 확인할 수 있다.

이 문서는 레지스트리 절 을 포함하며 레지스트리 표를 정의한다. 이는 w3c 레지스트리에 대한 [w3c-process] 요구사항에서 정의한 바와 같다. 레지스트리 표만 변경하는 문서 업데이트는 권고안 트랙 업데이트에 대한 다른 요구사항을 충족하지 않고도 수행할 수 있으며, 이는 레지스트리 표 업데이트에 명시된 바와 같다; 해당 레지스트리 표를 업데이트하기 위한 요구사항은 H. 레지스트리 절 내에서 규범적으로 지정된다.

워킹 그룹의 구현 보고서를 참조하기 바란다.

이 명세가 CR 단계를 벗어나기 위해서는, 이 명세에서 정의되었지만 [TTML2]에는 아직 존재하지 않는 모든 기능에 대해 최소 2개의 독립적인 구현이 구현 보고서에 문서화되어야 한다. 워킹 그룹은 구현이 공개적으로 이용 가능해야 한다고 요구하지는 않지만, 그렇게 하기를 권장한다.

초기 워킹 드래프트 이후 적용된 실질적 변경사항 목록은 substantive-changes-summary.txt에 있다.

워킹 그룹은 다음의 위험 상태 기능을 식별했다:

이슈 218: 위험 상태: 외부 리소스용 `<audio>`의 `src` 속성 지원 CR-exit-must-have위험 상태 기능

#113에 대한 가능한 해결안입니다.

이슈 219: 위험 상태: 외부 리소스용 `<audio>`의 `<source>` 요소 자식 지원 CR-exit-must-have위험 상태 기능

#113에 대한 가능한 해결안입니다.

이슈 220: 위험 상태: 임베드된 리소스를 가리키는 `<audio>` 요소의 `src` 속성 지원 CR-exit-must-have위험 상태 기능

#114#115에 대한 가능한 해결안입니다.

#115와의 연결점은, 이것이 어떤 참조 가능한 임베드된 오디오 리소스의 존재도 함축한다는 점이며, 이는 #115에서 설명된 옵션 중 하나입니다.

이슈 221: 위험 상태: 임베드된 리소스를 가리키는 `<audio>` 요소의 `<source>` 자식 지원 CR-exit-must-have위험 상태 기능

#114#115에 대한 가능한 해결안입니다.

#115와의 연결점은, 이것이 어떤 참조 가능한 임베드된 오디오 리소스의 존재도 함축한다는 점이며, 이는 #115에서 설명된 옵션 중 하나입니다.

이슈 222: 위험 상태: 인라인 오디오 리소스 지원 CR-exit-must-have위험 상태 기능

#115에 대한 가능한 해결안입니다.

이슈 223: 위험 상태: `<data>`의 `encoding`이 가질 수 있는 각 값 CR-exit-must-have위험 상태 기능

#117에 대한 가능한 해결안입니다.

이슈 224: 위험 상태: `<data>`의 `length` 속성 지원 CR-exit-must-have위험 상태 기능

#117에 대한 가능한 해결안입니다.

이슈 239: 위험 상태: 중첩 Div(이전의 Script Event Grouping) 및 Script Event Mapping CR-exit-must-have위험 상태 기능

#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의 적용을 받습니다.

1. 범위

이 명세는 Timed Text Markup Language version 2.0 [TTML2]의 텍스트 기반 프로파일을 정의하며, 전 세계의 더빙오디오 설명 워크플로를 지원하고, [DAPT-REQS]에 정의된 요구사항을 충족하며, [TTML2] 및 그 프로파일 내의 시각적 표시 기능 사용을 허용하기 위한 것입니다. 예를 들어 [ttml-imsc1.3]의 기능이 있습니다.

2. 소개

이 절은 비규범적이다.

2.1 전사본과 대본

일반적인 용법에서 script라는 단어의 한 의미는 영화, 텔레비전 프로그램, 연극 등의 서면 텍스트이다. script는 완성된 제작물의 기록, 즉 transcript일 수도 있고, 아직 만들어지지 않은 제작물을 위한 계획일 수도 있다. 이 문서에서는 도메인별 용어를 사용하며, 더 구체적으로 다음과 같이 정의한다:

DAPT script라는 용어는 transcriptsscripts 모두를 가리키는 일반적인 의미로 사용되며, 이 명세의 공식 요구사항에 대한 적합성 지점이다. DAPT Scripts는 시간 지정 텍스트와, 말하는 등장인물 같은 관련 메타데이터로 구성된다.

더빙 워크플로에서는 transcript가 생성되고 번역되어 script를 만든다. 오디오 설명 워크플로에서는 transcript가 비디오 이미지를 설명하며, 이후 오디오 등가물을 녹음하기 위한 script로 직접 사용된다.

DAPT는 현지화 및 오디오 설명 파이프라인에서 저작, 프롬프팅 및 재생 도구 간의 transcriptsscripts (즉 DAPT Scripts) 교환을 위한 TTML 기반 형식이다. DAPT documentDAPT Script의 직렬화 가능한 형식으로, 더빙 또는 오디오 설명에 필요한 정보를 담도록 설계된다. 여기에는 DAPT script의 유형, 대화, 설명, 타이밍, 메타데이터, 원어 전사 텍스트, 번역 텍스트, 언어 정보 및 오디오 믹싱 지시가 포함되며, 사용자 정의 주석 또는 향후 추가 기능을 허용하도록 확장 가능하다.

이 명세는 DAPT scripts의 데이터 모델과 [TTML2] 문서로서의 표현을 정의한다(4. DAPT 데이터 모델 및 해당 TTML 구문 참조). 여기에는 일부 제약과 제한이 있다(5. 제약 참조).

DAPT script는 원래 형식으로 이해할 수 없는 사용자를 위해 시청각 미디어를 접근 가능하게 만들거나 현지화하는 데 사용될 것으로 예상되며, [media-accessibility-reqs]에 설명된 접근성 요구를 포함하는 transcripts와 관련된 사용자 요구를 충족하는 해결책의 일부로 사용되고, 또한 더빙을 통해 대화를 다른 언어로 번역해야 하는 사용자를 지원하는 데 사용될 것으로 예상된다.

DAPT script 콘텐츠의 모든 부분은 관련 미디어에서 무엇을 나타내는지에 대한 표시를 Represents 속성을 통해 마크업해야 한다; 마찬가지로 전체 DAPT Script는 자신이 나타내는 모든 콘텐츠 유형을 나열해야 한다. 예를 들어 오디오 콘텐츠 또는 시각적 콘텐츠를 나타내는지, 시각적 콘텐츠라면 텍스트 또는 비텍스트 등을 나타내는지가 이에 해당한다. 계층적 콘텐츠 서술자의 레지스트리가 제공된다.

더빙과 오디오 설명 모두를 위한 저작 워크플로는 [DAPT-REQS]에 설명된 공통 요구사항을 공유하는 유사한 단계를 포함한다. 두 경우 모두 저자는 콘텐츠를 검토하고, 대화 또는 비디오 이미지에서 일어나는 일을 그것이 발생하는 시간과 함께 기록한다. 추가 변환 프로세스는 텍스트를 다른 언어로 바꾸고, 정확한 타이밍 제약에 맞도록 문구를 조정할 수 있다. 그런 다음 script의 오디오 렌더링이 생성되는 단계가 있고, 이는 최종적으로 프로그램 오디오에 믹싱된다. 그 믹싱은 배포 전에 발생할 수도 있고, 플레이어에서 직접 발생할 수도 있다.

2.1.1 더빙 scripts

더빙 프로세스는 더빙 스크립트를 만드는 것으로 이루어지며, 다음을 포함하는 복잡한 다단계 프로세스입니다:

  • 완성된 프로그램에서 그 자체 언어의 대사를 전사하고 타이밍을 지정하여 트랜스크립트를 생성하는 것;
  • 등장인물 정보 및 기타 주석으로 대사를 표기하는 것;
  • 추가 각색을 안내하기 위한 현지화 노트를 생성하는 것;
  • 대사를 대상 언어 스크립트로 번역하는 것;
  • 번역을 더빙에 맞게 조정하는 것; 예를 들어 더빙의 경우 배우의 입술 움직임에 맞추는 것입니다.

더빙 스크립트는 비대사 프로그램 오디오와 믹싱될 번역된 대사를 녹음하는 데 사용되는 트랜스크립트 또는 스크립트 (워크플로 단계에 따라 다름)입니다. 이는 다른 언어로 된 프로그램의 현지화 버전을 생성하기 위한 것이며, 이를 더빙판, 줄여서 더빙이라고 합니다.

더빙 스크립트는 대체 언어로 된 자막 또는 폐쇄 자막을 만들기 위한 출발점으로 유용할 수 있습니다. 이 명세는 TTML의 다른 프로파일에 있는 자막 및 캡션 문서를 추가하고, 또 그 문서로 변환하는 것을 용이하게 하도록 설계되었습니다. 예를 들어 [ttml-imsc1.3]와 같은 프로파일이 있으며, DAPT 문서에 자막 스타일링 구문을 포함할 수 있도록 허용하는 방식이 그 예입니다. 또는, 음성 아티스트가 스크립트화된 대사를 녹음할 때 도움을 주기 위해 스타일링을 적용할 수 있습니다.

2.1.2 오디오 설명 scripts

오디오 설명 콘텐츠 생성 역시 다단계 프로세스입니다. 오디오 설명은, 비디오 설명이라고도 하며 또는 [media-accessibility-reqs]에서는 설명된 비디오라고 하며, 시각적 표현을 완전히 볼 수 없는 시청자가 콘텐츠를 이해하도록 돕는 오디오 서비스입니다. 이는 주 프로그램 오디오와 각 설명의 오디오 렌디션을 믹싱한 결과이며, 대사와 충돌하지 않는 시간에 맞도록 작성되어, 오디오 설명이 믹싱된 오디오 트랙을 제공합니다. 주 프로그램 오디오는 추가 믹싱이 이루어지기 전 프로그램과 관련된 오디오를 가리킵니다. 설명은 프로그램 표현의 한 측면을 설명하는 단어들의 집합으로, 발성 및 녹음을 통해 오디오로 렌더링하기에 적합하거나, [WCAG22]에 정의된 것처럼 텍스트 음성 변환을 위한 텍스트 대체 소스로 사용됩니다. 오디오 설명이 무엇이며 어떻게 작동하는지에 대한 더 많은 정보는 [BBC-WHP051]에서 찾을 수 있습니다.

오디오 설명 스크립트 작성에는 일반적으로 다음이 포함됩니다:

  • 프로그램 또는 일련의 프로그램의 비디오 콘텐츠를 시청하는 것,
  • 설명을 말할 기회가 있는 핵심 순간을 식별하는 것,
  • 그 시점에서 프로그램의 중요한 시각적 부분을 설명하기 위한 설명 텍스트를 작성하는 것,
  • 인간 배우를 녹음하거나 텍스트 음성 변환을 사용하여 설명의 오디오 버전을 만드는 것,
  • 오디오를 프로그램 오디오와 결합하기 위한 믹싱 지침([TTML2] 오디오 스타일링을 사용하여 적용됨)을 정의하는 것.

오디오 믹싱은 미디어 배포 전에 발생할 수도 있고, 클라이언트에서 발생할 수도 있습니다. 오디오 설명 스크립트가 플레이어에 전달되는 경우, 텍스트는 대체 렌더링을 제공하는 데 사용될 수 있습니다. 예를 들어 점자 디스플레이에서, 또는 사용자가 구성한 스크린 리더를 사용하는 방식입니다.

2.1.3 기타 사용

DAPT Scripts는 다른 워크플로와 시나리오에서도 유용할 수 있다. 예를 들어 Original language transcripts는 다음과 같이 사용될 수 있다:

  • 번역이나 자막 또는 캡션 제작을 목적으로 하지 않더라도, 음성 인식 시스템의 출력 형식으로 사용;
  • 방송 산업에서 "포스트 프로덕션 대본"으로 알려진 문서로, 주로 미리보기, 편집 검토 및 판매 목적으로 사용;

Original language transcriptsTranslated transcripts 모두는 다음과 같이 사용될 수 있다:

  • 웹 페이지 또는 애플리케이션에서 오디오 또는 비디오와 함께 제시되는 접근 가능한 전사본; 이 사용에서는 타이밍을 유지하여 미디어와의 동기화 또는 미디어 내 탐색에 사용할 수도 있고, 전체 타임라인의 일반 텍스트 버전을 제시하기 위해 타이밍을 버릴 수도 있다.

2.2 예제 문서

2.2.1 기본 문서 구조

문서의 최상위 구조는 다음과 같다:

  • 네임스페이스 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]에 설명된 워크플로의 각 단계에서 생성되는 시간 지정 텍스트 transcriptsscripts에 해당한다.

첫 번째 예제는 설명 또는 전사를 위한 시간 지정 기회가 식별되었지만 아직 텍스트가 작성되지 않은 초기 단계 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>
...

다음 예제들은 더빙 및 오디오 설명 워크플로에서의 다양한 사용을 보여준다.

2.2.2 오디오 설명 예제

설명이 추가되면 이것은 Pre-Recording Script가 된다. 이 경우 대부분의 오디오 설명 콘텐츠가 고유한 언어가 없는 비디오 이미지를 전사한다는 점을 반영하기 위해, Text Language Sourcedaptm:langSrc 속성으로 표현되며, 문서의 최상위 수준에서 zxx로 설정된다. 이는 [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 Representsscript의 내용이 비텍스트 시각 정보에 더해 텍스트 시각 정보도 나타낸다는 것을 보여주도록 확장된다. 여기서는 그 텍스트가 실제로 위치임을 반영하기 위해 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> 요소는 첫 번째 오디오 딥이 끝난 뒤에만 시작되도록 시간이 지정된다.

오디오 녹음이 길고 일부분만 재생해야 하는 경우, clipBeginclipEnd를 사용하여 그렇게 할 수 있다. 파일의 오디오 중 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>
...

2.2.3 더빙 예제

예제 1의 기본 구조에서, 오디오를 전사하면 원어 더빙 transcript가 생성되며, 이는 다음과 같을 수 있다. 특정 스타일 또는 레이아웃은 정의되어 있지 않으며, 여기서는 대화의 전사에 초점을 둔다. 등장인물은 <metadata> 요소 안에서 식별된다. 언어와 text language source는 각각 xml:langdaptm: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:langdaptm: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>

3. 문서화 규약

이 문서는 다음 규약을 사용한다:

4. DAPT 데이터 모델 및 해당 TTML 구문

이 절은 DAPT의 데이터 모델과 해당 TTML 구문을 지정한다. 모델에는 속성을 가질 수 있고 다른 객체와 연관될 수 있는 객체들이 있다. TTML 구문에서 이러한 객체와 속성은 요소 및 속성으로 표현되지만, 객체가 항상 요소로 표현되고 속성이 항상 속성으로 표현되는 것은 아니다.

그림 1DAPT 데이터 모델을 설명하며, 모든 객체와 속성을 이 문서의 해당 절에 하이퍼링크한다. 공유 속성은 기울임꼴로 표시된다. 다이어그램의 다른 모든 규약은 [uml]을 따른다.

DAPT 대본 대본이 나타내는 것 대본 유형 기본 언어 (선택 사항) 텍스트 언어 소스 등장인물 등장인물 식별자 이름 (선택 사항) 성우 이름 대본 이벤트 대본 이벤트 식별자 나타내는 것 (선택 사항) 시작 (선택 사항) 끝 (선택 사항) 지속 시간 (선택 사항) 화면상 표시 대본 이벤트 설명 설명 (선택 사항) 설명 유형 (선택 사항) 언어 텍스트 텍스트 콘텐츠 (선택 사항) 텍스트 언어 소스 (선택 사항) 언어 (선택 사항) 나타내는 것 오디오 합성 오디오 속도 (선택 사항) 피치 오디오 녹음 소스 [ ] 유형 [ ] (선택 사항) 시작 (선택 사항) 끝 (선택 사항) 지속 시간 (선택 사항) 인 시간 (선택 사항) 아웃 시간 믹싱 지시 (선택 사항) 게인 (선택 사항) 팬 (선택 사항) 시작 (선택 사항) 끝 (선택 사항) 지속 시간 (선택 사항) 채우기 포함   0..* 포함 0..* 포함   0..* 포함   0..* 포함   0..* 0..* 0..* 포함   0..* 포함   0..* 포함 0..* 이다   이다  
그림 1 DAPT 데이터 모델의 주요 엔터티를 보여주는 (정보성) 클래스 다이어그램.
이슈 116: 인라인되지 않은 임베드된 오디오 리소스를 데이터 모델에 추가할까요? questionCR-exit-must-have

#115도 참조하십시오. 인라인이 아닌 임베드된 오디오 리소스를 지원하려는 경우, 이를 위한 객체를 만들고 데이터 모델에 추가해야 할까요?

4.1 DAPT 대본

DAPT 대본은 저작 워크플로 내에서 처리되거나 클라이언트에 의해 처리되는 문서에 해당하며, 이 명세의 제약을 따르는 전사본 또는 대본이다. 이는 다음 절에 정의된 속성과 객체를 가진다: 대본이 나타내는 것, 대본 유형, 기본 언어, 텍스트 언어 소스, 대본 이벤트, 그리고 더빙 대본의 경우 등장인물.

DAPT 문서DAPT 대본을 나타내는 [TTML2] 시간 지정 텍스트 콘텐츠 문서 인스턴스이다. DAPT 문서는 이 절과 다음 절들에 정의된 구조와 제약을 가진다.

참고

[TTML2] 시간 지정 텍스트 콘텐츠 문서 인스턴스는 TT 네임스페이스의 루트 <tt> 요소를 가진다.

4.1.1 대본이 나타내는 것

대본이 나타내는 것 속성은 DAPT 대본의 필수 속성이며, 문서의 내용이 관련 미디어 객체의 어떤 구성 요소를 나타내는지를 표시한다. 문서의 내용은 해당 구성 요소에 대한 접근 가능한 대체물을 제공하는 메커니즘의 일부로 사용될 수 있다.

참고

대본 이벤트에는 관련 속성인 나타내는 것이 있으며, 그 속성에 허용되는 값에는 대본이 나타내는 것의 값에 의존하는 제약이 있다.

이 속성을 나타내기 위해, daptm:scriptRepresents 속성은 <tt> 요소에 존재해야 MUST 하며, 다음 구문을 따르는 값을 가져야 한다:

daptm:scriptRepresents
: <content-descriptor> ( <lwsp>+ <content-descriptor>)*

<lwsp>                # as TTML2

4.1.2 기본 언어

기본 언어DAPT 대본의 필수 속성이며, 대본 이벤트텍스트 콘텐츠에 대한 기본 언어를 나타낸다. 이 언어는 원어 중 하나이거나 번역 언어일 수 있다. 번역 언어를 나타내는 경우, 이는 더빙 또는 오디오 설명 대본이 준비되는 최종 언어일 수 있으며, 이를 대상 녹음 언어라고 한다. 또는 워크플로에서 사용되는 중간 언어, 즉 피벗 언어일 수도 있다.

기본 언어DAPT 문서에서 다음 구조와 제약으로 표현된다:

  • xml:lang 속성은 <tt> 요소에 존재해야 MUST 하며 그 값은 비어 있지 않아야 MUST NOT 한다.

참고

DAPT 대본의 모든 텍스트 콘텐츠에는 지정된 언어가 있다. 여러 언어가 사용되는 경우, 기본 언어대본 이벤트의 다수 언어, 가장 긴 시간 동안 말해지는 언어, 또는 저자가 임의로 선택한 언어에 해당할 수 있다.

4.1.3 대본 유형

대본 유형 속성은 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>

4.1.4 대본 이벤트

DAPT 대본은 특정 시간 간격에 대한 대화, 화면상 텍스트 또는 설명에 각각 해당하는 대본 이벤트 객체를 0개 이상 포함할 수 MAY 있다.

대본 이벤트가 하나라도 존재하는 경우, DAPT 문서<tt> 요소의 자식 <body> 요소 하나를 가져야 MUST 한다.

4.1.5 등장인물

DAPT 대본대본 이벤트가 참조할 수 있는 등장인물을 각각 설명하는 등장인물 객체를 0개 이상 포함할 수 MAY 있다.

등장인물 객체가 하나라도 존재하는 경우, DAPT 문서<tt> 요소의 자식 <head> 요소 하나를 가져야 MUST 하며, 그 <head> 요소는 적어도 하나의 <metadata> 자식 요소를 가져야 MUST 한다.

참고

4.2 등장인물은 모든 등장인물 객체가 단일 <metadata> 요소 부모 안에 위치할 것을 권장하며, <head> 요소에 둘 이상의 <metadata> 자식 요소가 있는 경우, 등장인물 객체가 그러한 첫 번째 자식 안에 위치할 것을 권장한다.

4.1.6 공유 속성 및 값 집합

DAPT 데이터 모델의 일부 속성은 둘 이상의 객체 유형에서 공통으로 사용되며, 나타나는 모든 곳에서 동일한 의미를 가진다. 이러한 공유 속성은 이 절에 나열되어 있다.

DAPT의 일부 값 집합은 둘 이상의 속성에서 재사용되며, 나타나는 모든 곳에서 동일한 제약을 가진다. 이러한 공유 값 집합도 이 절에 나열되어 있다.

편집자 참고

"Timed Object" 클래스를 만들고 Script Event, Mixing Instruction 및 Audio Recording을 그 하위 클래스로 만드는 것이 더 나을까?

4.1.6.1 타이밍 속성

다음 타이밍 속성은 이를 포함하는 엔터티가 언제 활성 상태인지 정의한다:

  • 시작 속성은 객체가 언제 활성 상태가 되는지를 정의하며, 부모 객체의 활성 시작 시간에 상대적이다. DAPT 대본은 미디어 타임라인의 시간 0에서 시작한다.
  • 속성은 객체가 언제 활성 상태를 멈추는지를 정의하며, 부모 객체의 활성 시작 시간에 상대적이다.
  • 지속 시간 속성은 객체의 최대 지속 시간을 정의한다.
    참고

    지속 시간 속성이 모두 존재하는 경우, 종료 시간은 [TTML2]에 정의된 것처럼 시작 + 지속 시간 중 더 이른 시간이다.

참고
타이밍 속성 중 어느 하나가 생략되면, [TTML2]에 정의된 타이밍 의미론을 풀어 쓰면 다음 규칙이 적용된다:
  • 시작의 기본값은 0, 즉 부모 객체의 시작 시간과 같다.
  • 의 기본값은 indefinite, 즉 부모 시간 지정 객체가 있는 경우 그 종료 시간과 동일하게 해석된다.
  • 지속 시간의 기본값은 indefinite, 즉 종료 시간은 부모 객체의 종료 시간과 동일하게 해석된다.
참고

실제 목적상 DAPT 대본의 종료 시간은 관련 미디어 객체의 끝이다.

4.1.6.2 <content-descriptor>

대본이 나타내는 것나타내는 것 속성에서 허용되는 값은 <content-descriptor> 구문 정의와 그에 관련된 레지스트리 표에 의존한다.

<content-descriptor> 는 다음 구문을 따르는 값을 가진다:

<content-descriptor>  # see registry table below
: <descriptor-token> ( <descriptor-delimiter> <descriptor-token> )*

<descriptor-token>
: (descriptorTokenChar)+

descriptorTokenChar  # xsd:NMtoken without the "."
: NameStartChar | "-" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]

<descriptor-delimiter>
: "."  # FULL STOP U+002E

<content-descriptor> 는 구분자로 분리된 토큰의 순서 있는 목록 값이다.

<content-descriptor>B는 다른 <content-descriptor>Acontent descriptor 하위 유형 (하위 유형)이다. 이는 A의 descriptor-tokens 순서 있는 목록이 B의 descriptor-tokens 순서 있는 목록의 시작 부분에 존재하는 경우이다.

<content-descriptor> 에 허용되는 값은 다음 레지스트리 표에 나열된 값이거나, 사용자 정의 값일 수 있다.

유효한 사용자 정의 값은 x-로 시작해야 MUST 하거나, content-descriptor 레지스트리 표의 값의 하위 유형이어야 하며, 이때 첫 번째 추가 <descriptor-token> 구성 요소는 x-로 시작한다.

레지스트리 표: <content-descriptor> 구성요소용 레지스트리 정의는 H.2.2 <content-descriptor> 레지스트리 표 정의에 있음
<content-descriptor> 상태 설명 예시 용도
audio 임시 DAPT 콘텐츠가 오디오 프로그램의 어느 부분이든 나타냄을 표시합니다. 더빙, 번역, 난청자용 자막 및 캡션, 사전 및 후반 제작 스크립트
audio.dialogue 임시 DAPT 콘텐츠가 오디오 프로그램의 언어적 의사소통, 예를 들어 말로 이루어지는 대화를 나타냄을 표시합니다. 더빙, 번역, 난청자용 자막 및 캡션, 사전 및 후반 제작 스크립트
audio.nonDialogueSounds 임시 DAPT 콘텐츠가 언어적 의사소통이 아닌 소리에 해당하는 오디오 프로그램의 일부, 예를 들어 화가 나서 문을 쾅 닫는 소리와 같은 중요한 소리를 나타냄을 표시합니다. 번역 및 난청자용 자막과 캡션, 사전 및 후반 제작 스크립트
visual 임시 DAPT 콘텐츠가 프로그램의 시각 이미지의 어느 부분이든 나타냄을 표시합니다. 오디오 설명
visual.dialogue 임시 DAPT 콘텐츠가 프로그램의 시각 이미지 내에서의 언어적 의사소통, 예를 들어 수어 대화를 나타냄을 표시합니다. 더빙 또는 오디오 설명, 번역 및 난청자용 자막과 캡션, 사전 및 후반 제작 스크립트
visual.nonText 임시 DAPT 콘텐츠가 프로그램의 시각 이미지 중 텍스트가 아닌 부분, 예를 들어 장면 속 중요한 객체를 나타냄을 표시합니다. 오디오 설명
visual.text 임시 DAPT 콘텐츠가 프로그램의 시각 이미지 안의 텍스트 콘텐츠, 예를 들어 표지판, 시계, 신문 제목, 인스턴트 메시지 등을 나타냄을 표시합니다. 오디오 설명
visual.text.title 임시 텍스트가 관련 미디어의 제목인 visual.text하위 유형입니다. 오디오 설명
visual.text.credit 임시 텍스트가 크레딧, 예를 들어 배우의 이름인 visual.text하위 유형입니다. 오디오 설명
visual.text.location 임시 텍스트가 콘텐츠가 발생하고 있는 위치를 나타내는 visual.text하위 유형입니다. 오디오 설명
참고

레지스트리 항목은 JSON 형식으로 버전 관리 시스템/registries/content-descriptor.json에서 사용할 수 있습니다.

4.1.6.3 고유 식별자

데이터 모델의 일부 엔터티에는 고유 식별자가 포함됩니다. 고유 식별자는 다음 요구사항을 가집니다:

  • 이는 DAPT 스크립트 내에서 고유합니다. 즉, 고유 식별자의 값은 문서 내에서 한 번만 사용될 수 있으며, 그것이 어떤 특정 종류의 식별자인지는 관계없습니다.

    문자 식별자"abc" 값을 가지고 같은 문서 안의 스크립트 이벤트 식별자가 같은 값을 가진다면, 이는 오류입니다.

  • 그 값은 [XML]에 정의된 Name 요구사항을 따라야 합니다.

    참고

    다음으로 시작할 수 없습니다: 숫자, 결합 발음 구별 기호(악센트), 또는 다음 문자 중 하나:

        .
        -
        ·  // #xB7// #x203F// #x2040

    하지만 이러한 문자는 다른 위치에서는 사용할 수 있습니다.

엔터티의 고유 식별자DAPT 문서에서 해당 요소의 xml:id 속성으로 표현됩니다.

참고

xml:id의 의미론 및 처리에 대한 공식 요구사항은 [xml-id]에 정의되어 있습니다.

4.2 등장인물

이 절은 주로 더빙 워크플로와 관련된다.

프로그램의 등장인물은 다음 속성을 가진 등장인물 객체를 사용하여 설명할 수 있다:

등장인물DAPT 문서에서 다음 구조와 제약으로 표현된다:

참고
Issue 44: DAPT 전용 적합 구현 유형 정의 CR must-have

일반적인 "presentation processor" 또는 "transformation processor" 유형을 사용하지 않도록, 우리만의 적합 구현 유형 클래스를 정의해야 한다. 이에 링크할 수 있을 것이다.
현재로서는 다음 클래스들이 떠오른다:

  • DAPT 저작 도구: 적합한 DAPT 문서를 생성하거나 DAPT 적합 문서를 소비하는 도구. TTML2 프로세서에 매핑된다고 보지는 않는다.
  • DAPT 오디오 녹음기/렌더러: 예를 들어 믹싱 지시가 포함된 DAPT 오디오 설명 대본을 받아 WAVE 파일 같은 오디오 출력을 생성하는 도구. 이것은 "presentation processor"라고 생각한다
  • DAPT 검증기: DAPT 문서가 명세에 적합한지 검증하는 도구. TTML2 용어로 무엇에 매핑되는지는 확실하지 않다.

4.3 대본 이벤트

대본 이벤트 객체는 말해질 대화, 화면상 텍스트 또는 오디오 설명을 나타내며 다음 속성을 가진다:

대본 이벤트DAPT 문서에서 경로 /tt/head/body//div에 표현되며, 다음 구조와 제약을 가진다:

Issue 233: script events에 해당하는 div 식별 개선 검토 CR must-have

#216 (comment)에서의 논의를 바탕으로, div가 Script Event를 나타내는 경우를 표시하는 명시적 신호가 있어야 한다고 생각한다.

4.4 텍스트

텍스트 객체는 일반적으로 단일 언어의 텍스트 콘텐츠를 포함합니다. 이 언어는 원본 언어이거나 번역 언어일 수 있습니다.

텍스트는 다음 중 하나인 경우 원본으로 정의됩니다:

참고

텍스트는 다른 언어로 된 원본 텍스트 객체의 표현인 경우 번역으로 정의됩니다.

텍스트텍스트 언어 출처에 정의된 의미론에 따라, 그 언어와 텍스트 언어 출처를 함께 검사하여 원본 또는 번역으로 식별될 수 있습니다.

번역 텍스트 객체와, 해당되는 경우 원본 텍스트 객체의 출처 언어는 텍스트 언어 출처 속성을 사용하여 표시됩니다.

텍스트 객체 또는 그 일부가 부모 스크립트 이벤트보다 더 구체적이거나 다른 것을 나타내는 경우, 다른 나타냄 속성을 가질 수 있습니다.

텍스트 객체와 그 모든 부분은 유효한 나타냄 속성을 가져야 MUST 합니다. 속성 자체의 존재는 선택 사항으로 간주됩니다. 왜냐하면 텍스트 객체가 해당 속성을 생략하면, 그 속성은 부모 스크립트 이벤트로부터 상속되기 때문입니다.

참고

텍스트 객체에는 스타일을 적용할 수 있습니다.

텍스트 중에 프로그램 오디오를 수정하는 데 사용되는 믹싱 지침 객체가 0개 이상 존재할 MAY 있습니다.

텍스트 객체는 DAPT 문서에서 /tt/head/body//div/p 경로의 <p> 요소로 표현되며, 다음 제약 조건을 따릅니다:

4.5 텍스트 언어 소스

텍스트 언어 출처 속성은 텍스트 객체의 출처 언어를 나타내는 주석이며, 해당되는 경우, 또는 출처 콘텐츠에 고유 언어가 없었음을 나타냅니다:

텍스트 언어 출처는 상속 가능한 속성입니다.

텍스트 언어 출처 속성은 DAPT 문서에서 daptm:langSrc 속성으로 표현되며, 다음 구문, 제약 조건 및 의미론을 가집니다:

daptm:langSrc
: <empty-string> | <language-identifier>

<empty-string>
: ""                    # default

<language-identifier>   # well-formed BCP-47 language tag
참고

문서에서 텍스트 언어 출처를 사용하는 예는 텍스트 섹션에 있습니다.

4.6 화면상 표시

화면상 표시 속성은 대본 이벤트의 주체와 관련된 장면 내 위치를 나타내는 주석이다. 예를 들어 말하고 있는 등장인물의 위치가 이에 해당한다:

생략된 경우 기본값은 "ON"이다.

참고

화면상 표시 속성은 DAPT 문서에서 <div> 요소의 daptm:onScreen 속성으로 표현되며, 다음 제약을 가진다:

4.7 나타내는 것

나타내는 것 속성은 대본 이벤트 또는 텍스트(또는 그 일부)가 관련 미디어 객체의 어떤 구성 요소를 나타내는지를 표시한다.

나타내는 것 속성은 DAPT 문서에서 daptm:represents 속성으로 표현되며, 그 값은 단일 <content-descriptor>이어야 MUST 한다.

daptm:represents 속성은 다음 요소 중 어느 것에도 존재할 수 MAY 있다: <tt>, <body>, <div>, <p><span>.

나타내는 것 속성은 상속 가능하다. 요소에 없으면 그 계산된 값은 부모 요소의 나타내는 것 속성의 계산된 값이며, 부모 요소가 없으면 빈 문자열이다. 요소에 존재하면 그 계산된 값은 지정된 값이다.

참고

빈 <content-descriptor>는 없으므로, 이는 빈 계산된 나타내는 것 속성이 결코 유효할 수 없음을 의미한다. 유효한 DAPT 문서를 구성하는 한 방법은 DAPT 대본나타내는 것 속성을 지정하여, 나타내는 것 속성이 없는 모든 자손에게 상속되도록 하는 것이다.

나타내는 것 속성 값이 대본이 나타내는 것 속성에 있는 값 중 적어도 하나의 content descriptor 하위 유형이 아니면 오류이다.

4.8 대본 이벤트 설명

대본 이벤트 설명 객체는 대본 이벤트 콘텐츠의 어떤 측면에 대해 사람이 읽을 수 있는 설명을 제공하는 주석이다. 대본 이벤트 설명 자체는 설명 유형으로 분류될 수 있다.

대본 이벤트 설명 객체는 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에 허용되는 값은 다음 레지스트리 표에 나열된 값이거나, 사용자 정의 값일 수 있다:

레지스트리 표: daptm:descType 속성용 레지스트리 정의는 H.2.1 daptm:descType 레지스트리 표 정의에 있음
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>
...

4.9 오디오

오디오 객체는 텍스트의 오디오 렌더링을 지정하는 데 사용된다. 오디오 렌더링은 오디오 녹음 객체로서 녹음된 오디오 리소스일 수도 있고, 텍스트 음성 변환 엔진을 통해 텍스트의 렌더링을 합성하라는 지시일 수도 있으며, 이는 합성 오디오 객체이다. 둘 모두 오디오 객체의 유형이다.

오디오가 그 텍스트와 같은 언어가 아니면 오류이다.

오디오를 지원하는 표현 처리기는 지정된 시간에 관련 미디어 객체의 타임라인에서 오디오를 재생하거나 삽입한다.

참고

오디오 객체는 "추상적"이다. 이는 그 하위 유형인 오디오 녹음 또는 합성 오디오 중 하나로만 존재할 수 있다.

4.9.1 오디오 녹음

오디오 녹음은 오디오 리소스를 참조하는 오디오 객체이다. 이는 다음 속성을 가진다:

  • 하나 이상의 대체 소스. 각 소스는 1) 외부 오디오 리소스에 대한 링크 또는 2) 임베드된 오디오 녹음이다;
  • 소스마다, 오디오 리소스의 유형 ([MIME-TYPES]) 을 지정하는 필수 유형 하나가 있다. 예를 들어 audio/basic;
  • 부모 요소의 시간 간격과 관련하여 프로그램 타임라인에서 오디오 녹음의 시간 간격을 함께 정의하는 선택적 시작 속성, 선택적 속성, 그리고 선택적 지속 시간 속성;
  • 오디오 리소스의 시간적 하위 구간을 함께 정의하는 선택적 인 시간 및 선택적 아웃 시간 속성;

    기본 인 시간은 오디오 리소스의 시작이다.

    기본 아웃 시간은 오디오 리소스의 끝이다.

    오디오 리소스의 시간적 하위 구간이 오디오 녹음의 시간 간격 지속 시간보다 길면, 오디오 녹음의 시간 간격이 끝날 때 재생이 끝나도록 재생은 잘려야 MUST 한다.

    참고

    오디오 리소스의 시간적 하위 구간이 오디오 녹음의 시간 간격 지속 시간보다 짧으면, 오디오 리소스는 한 번 재생된다.

  • 오디오 녹음의 재생 특성을 수정하는 0개 이상의 믹싱 지시.

소스 목록이 제공되는 경우, 표현 처리기는 각 오디오 녹음에 대해 소스 중 하나를 넘지 않게 재생해야 MUST 한다.

이 기능은 브라우저 지문 식별 가능성에 기여할 수 있습니다. 구현은 어떤 소스를 재생할지 결정하기 위해 유형과, 존재하는 경우 관련 추가 형식 정보를 사용할 수 있다. 예를 들어 두 소스가 주어졌고 하나는 WAV 파일, 다른 하나는 MP3인 경우, 그 형식 중 하나만 재생할 수 있거나 둘 중 하나를 선호하도록 구성된 구현은 재생 가능한 버전 또는 선호되는 버전을 선택할 것이다.

오디오 녹음DAPT 문서에서 그것이 적용되는 텍스트에 해당하는 <p> 또는 <span> 요소의 자식 <audio> 요소로 표현된다. 다음 제약이 <audio> 요소에 적용된다:

  • begin, enddur 속성은 각각 시작, 지속 시간 속성을 나타낸다;
  • clipBeginclipEnd 속성은 예제 5에 설명된 것처럼 각각 인 시간아웃 시간 속성을 나타낸다;
  • 소스에 대해, 그것이 외부 오디오 리소스에 대한 링크인 경우, 소스유형 속성은 다음 중 정확히 하나로 표현된다:
    1. 프래그먼트 식별자가 아닌 src 속성과 각각의 type 속성;

      소스가 둘 이상인 경우 이 메커니즘은 사용할 수 없다.

      <audio src="https://example.com/audio.wav" type="audio/wave"/>
    2. 프래그먼트 식별자가 아닌 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> 요소의 사용을 "위험 기능"으로 표시하는 것을 고려할 것인가?

    Issue 113: `<audio>`의 `@src` 및 `<source>` 자식 둘 다 지원할 것인가(외부 리소스)? questionCR-exit-must-have
              오디오 녹음을 추가하기 위한 명세 작업을 하면서, 오디오 녹음이 임베드되고 참조될 수 있는 여러 방식이 있음을 다시 떠올렸으며, 총 최소 5가지가 있다. [DAPT](https://www.w3.org/TR/dapt-reqs/#requirements)의 요구사항 R15는 참조 옵션과 임베드 옵션이 모두 사용 가능해야 한다고 명확히 하지만, 각 옵션에 대해 구문적으로 제한해야 하는가? 별도의 이슈로 제기할 예정이다.
    

    원래 @nigelmegitt#105 (comment)에 게시함

    TTML2에는 외부 오디오 리소스를 참조하기 위한 다음 두 옵션이 있다:

    1. <audio> 요소의 src 속성.
    <audio src="https://example.com/audio_recording.wav" type="audio/wave"/>
    1. <audio> 요소의 <source> 자식 요소.
    <audio>
        <source src="https://example.com/audio_recording.wav" type="audio/wave"/>
    </audio>

    이 두 번째 옵션은 type이 부적절한 경우 format 속성을 지정할 수 있는 추가 가능성이 있다. 또한 여러 <source> 자식 요소를 허용하며, 이 경우 구현이 하나를 넘지 않게 선택해야 한다고 지정한다.

    [이슈가 열린 뒤 추가된 "하나를 넘지 않게 재생" 제약을 반영하기 위해 2023-03-29에 수정됨]

    Issue 218: 위험 기능: 외부 리소스용 `<audio>`의 `src` 속성 지원 CR-exit-must-haveAt risk feature

    #113에 대한 가능한 해결.

    Issue 219: 위험 기능: 외부 리소스용 `<audio>`의 `<source>` 자식 요소 지원 CR-exit-must-haveAt risk feature

    #113에 대한 가능한 해결.

  • 소스에 대해, 그것이 임베드된 오디오 리소스인 경우, 소스유형 속성은 다음 중 정확히 하나로 함께 표현된다:
    1. <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>
    2. <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>
    3. 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 안의 쉽게 찾을 수 있는 문서 부분에 있게 되어 잠재적으로 구현상의 이점을 가질 수 있다는 것이다. 임베드된 데이터 기능을 "위험 기능"으로 표시하는 것을 고려할 것인가?

    Issue 114: `<audio>`의 `@src` 및 `<source>` 자식 둘 다 지원할 것인가(임베드된 리소스)? questionCR-exit-must-have
              오디오 녹음을 추가하기 위한 명세 작업을 하면서, 오디오 녹음이 임베드되고 참조될 수 있는 여러 방식이 있음을 다시 떠올렸으며, 총 최소 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에는 임베드된 오디오 리소스를 참조하기 위한 다음 두 옵션이 있다:

    1. 임베드된 <audio> 또는 <data>를 참조하는 <audio> 요소의 src 속성:
    <audio src="#audioRecording1"/>
    ...
    <audio src="#audioRecording2"/>
    1. <audio> 요소의 <source> 자식 요소.
    <audio>
        <source src="#audioRecording1"/>
    </audio>

    이 두 번째 옵션은 type이 부적절한 경우 format 속성을 지정할 수 있는 추가 가능성이 있다. 또한 여러 <source> 자식 요소를 허용하지만, 여러 리소스가 지정된 경우 의도된 의미론이 무엇인지는 명확하지 않다. 아마 구현이 어떤 방식으로든 하나를 선택하는 것으로 추정된다.

    Issue 115: 참조된 임베드 오디오 녹음과 인라인 임베드 오디오 녹음 둘 다 지원할 것인가? questionCR-exit-must-have
              오디오 녹음을 추가하기 위한 명세 작업을 하면서, 오디오 녹음이 임베드되고 참조될 수 있는 여러 방식이 있음을 다시 떠올렸으며, 총 최소 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>
    이슈 220: 위험 상태: 임베드된 리소스를 가리키는 `<audio>` 요소의 `src` 속성 지원 CR-exit-must-have위험 상태 기능

    #114#115에 대한 가능한 해결안입니다.

    #115와의 연결점은 이것이 참조 가능한 어떤 임베드된 오디오 리소스의 존재도 함축한다는 점이며, 이는 #115에 설명된 옵션 중 하나입니다.

    이슈 221: 위험 상태: 임베드된 리소스를 가리키는 `<audio>` 요소의 `<source>` 자식 지원 CR-exit-must-have위험 상태 기능

    #114#115에 대한 가능한 해결안입니다.

    #115와의 연결점은 이것이 참조 가능한 어떤 임베드된 오디오 리소스의 존재도 함축한다는 점이며, 이는 #115에 설명된 옵션 중 하나입니다.

    이슈 222: 위험 상태: 인라인 오디오 리소스 지원 CR-exit-must-have위험 상태 기능

    #115에 대한 가능한 해결안입니다.

    이슈 116: 인라인되지 않은 임베드된 오디오 리소스를 데이터 모델에 추가할까요? questionCR-exit-must-have

    #115도 참조하십시오. 인라인이 아닌 임베드된 오디오 리소스를 지원하려는 경우, 이를 위한 객체를 만들어 데이터 모델에 추가해야 할까요?

    이슈 117: 임베드된 데이터: 허용된 모든 인코딩을 지원해야 할까요? length는 어떻게 해야 할까요? questionCR-exit-must-have

    TTML2의 <data> 요소에서는 encoding을 지정할 수 있으며, 그 값은 다음 중 하나입니다:

    • base16
    • base32
    • base32hex
    • base64
    • base64url

    그 모두에 대한 프로세서 지원을 요구해야 할까요, 아니면 기본값인 base64로 충분할까요?

    또한 디코딩된 데이터가 지정된 바이트 길이여야 하므로 오류 검사를 어느 정도 가능하게 하는 length 속성을 지정할 수 있습니다. 이에 대한 지원을 요구하는 것이 순이익이 될까요? 사용될까요?

    이슈 223: 위험 상태: `<data>`의 `encoding`이 가질 수 있는 각 값 CR-exit-must-have위험 상태 기능

    #117에 대한 가능한 해결안입니다.

    이슈 224: 위험 상태: `<data>`의 `length` 속성 지원 CR-exit-must-have위험 상태 기능

    #117에 대한 가능한 해결안입니다.

  • 믹싱 지시는 그 TTML 표현에 지정된 대로 적용될 수 MAY 있다;
  • xml:lang 속성의 계산된 값은 부모 요소, 모든 자식 <source> 요소, 그리고 참조된 모든 임베드 <data> 요소의 xml:lang 속성 계산된 값과 동일해야 MUST 한다.

4.9.2 합성 오디오

합성 오디오는 부모 텍스트 콘텐츠의 기계 생성 오디오 렌더링을 나타내는 오디오 객체이다. 이는 다음 속성을 가진다:

  • 발화 속도를 지정하는 필수 속도. 이는 normal, fast 또는 slow이다;
  • 말의 피치를 조정할 수 있게 하는 선택적 피치.

합성 오디오DAPT 문서에서 발화될 텍스트 객체를 나타내는 요소에 tta:speak 스타일 속성을 적용하여 표현된다. 여기서 속성의 계산된 값은 normal, fast 또는 slow이다. 이 속성은 속도 속성도 나타낸다.

tta:pitch 스타일 속성은 피치 속성을 나타낸다.

합성 오디오TTML 표현은 예제 7에 설명되어 있다.

참고

tta:rate 속성의 계산된 값이 none인 요소의 tta:pitch 속성은 아무 효과가 없다. 그러한 요소는 연관된 합성 오디오가 있는 것으로 간주되지 않는다.

참고

DAPT합성 오디오 어휘의 의미론은 [TTML2]에 표시된 것처럼 [SSML]의 동등한 기능에서 파생된다. 이 명세의 이 버전은 [SSML]의 다른 기능을 DAPT에서 생성하거나 DAPT 문서에 임베드하는 방법을 지정하지 않는다. 이 명세의 미래 버전에서 [SSML] 지원을 확장하는 옵션은 의도적으로 열어 두었다.

4.10 믹싱 지시

믹싱 지시 객체는 포함하는 객체와 관련된 오디오의 정적 또는 애니메이션 조정이다. 이는 다음 속성을 가진다:

믹싱 지시는 관련 객체에 해당하는 요소에 오디오 스타일 속성을 적용하여 표현된다. 이는 인라인으로, <style> 요소에 대한 참조로, 또는 자식(인라인) <animate> 요소 안에서 이루어진다:

믹싱 지시가 애니메이션되는 경우, 즉 포함하는 객체의 활성 시간 간격 동안 조정 속성이 변경되는 경우, 하나 이상의 자식 <animate> 요소로 표현된다. 둘 이상의 게인 또는 속성이 필요하거나, 타이밍 속성이 필요한 경우 이 표현이 요구된다.

<animate> 요소는 포함하는 객체에 해당하는 요소의 자식이어야 MUST 하며, 다음 제약을 가진다:

애니메이션된 믹싱 지시TTML 표현은 예제 4에 설명되어 있다.

E. 오디오 믹싱도 참조하라.

5. 제약

5.1 문서 인코딩

DAPT 문서는 [xml] XML 1.0의 올바른 형식 문서로 직렬화되어야 MUST 하며, [UNICODE]에 지정된 UTF-8 문자 인코딩을 사용하여 인코딩되어야 한다.

결과 [xml] 문서는 다음 물리적 구조를 어떤 것도 포함해서는 안 된다 MUST NOT:

참고

결과 [xml] 문서는 문자 참조와, 엔터티 참조미리 정의된 엔터티에 대한 참조를 포함할 수 있다.

미리 정의된 엔터티는 다음과 같다(앞의 앰퍼샌드와 뒤의 세미콜론 포함):

  • 앰퍼샌드 & (유니코드 코드 포인트 U+0026)에 대한 &amp;
  • 아포스트로피 ' (유니코드 코드 포인트 U+0027)에 대한 &apos;
  • 보다 큼 기호 > (유니코드 코드 포인트 U+003E)에 대한 &gt;
  • 보다 작음 기호 < (유니코드 코드 포인트 U+003C)에 대한 &lt;
  • 따옴표 기호 " (유니코드 코드 포인트 U+0022)에 대한 &quot;
참고

DAPT 문서는 처리용 인메모리 모델로도 사용될 수 있으며, 이 경우 직렬화 요구사항은 적용되지 않는다.

5.2 인식되지 않거나 외부인 요소 및 속성의 처리

이 절의 요구사항은 순방향 및 역방향 호환성을 용이하게 하기 위한 것이며, 구체적으로 다음을 허용하기 위한 것이다:

명세의 둘 이상의 버전에 적합한 DAPT 문서는 여러 DAPT content profile에 대한 적합성을 지정할 수 있다.

5.2.1 인식되지 않는 어휘

인식되지 않는 어휘는 처리기가 지원하는 기능과 연결되지 않은 요소 및 속성의 집합이다.

변환 처리기는 속성도 아니고 <metadata> 요소의 자손도 아닌 인식되지 않는 어휘를 잘라내야 MUST 한다.

변환 처리기는 속성이거나 <metadata> 요소의 자손인 인식되지 않는 어휘를 보존해야 SHOULD 한다.

참고

처리기가 지원하지 않는 프로필에 대한 프로필 적합성 신호를 금지하는 5.6.2 ttp:contentProfiles도 참조하라. 여기서 처리기는 변환 처리기이다.

속성 값 계산 후, 표현 처리기인식되지 않는 어휘를 무시해야 SHOULD 한다.

참고

위 제약이 속성 값 계산 이후로 지정된 이유는, 구현이 특정 요소에만 존재하는 속성, 예를 들어 DAPT 데이터 모델에 해당하는 속성을 인식하고 지원할 수 있기 때문이다. 6.4 계산된 속성 값 사용에 설명된 것처럼, 그러한 속성이 다른 요소에 존재할 때 처리기 구현이 이를 무시하지 않는 것이 중요하다.

5.2.2 외부 어휘에 대한 특별 고려사항

외부 어휘인식되지 않는 어휘의 하위 집합으로, 해당 네임스페이스가 5.3 네임스페이스에 나열된 네임스페이스 중 하나가 아닌 요소 및 속성과, 네임스페이스 값이 없으며 DAPT 또는 [TTML2]에서 달리 정의되지 않은 속성으로 구성된다.

DAPT 문서ttp:contentProfiles에 신호된 프로필에 의해 명시적으로 허용되거나 금지되지 않은 외부 어휘를 포함할 수 MAY 있다.

참고

검증 목적상, DAPT 문서 안에서 사용되는 모든 외부 어휘에 대해 명세, 예를 들어 content profile을 정의하고 사용하는 것이 좋은 관행이다.

5.2.3 독점 메타데이터와 외부 어휘

많은 더빙 및 오디오 설명 워크플로는 대본 이벤트 또는 문서에 독점 메타데이터로 주석을 다는 것을 허용한다. 이 명세 또는 [TTML2]에 정의된 메타데이터 어휘는 포함될 수 MAY 있다. 외부 어휘<metadata> 요소의 속성으로 또는 <metadata> 요소의 자손 요소로 포함될 수 MAY 있다.

참고

[TTML2] 구성을 사용하여 프로그램 제목 같은 정보를 추가할 수 있다.

...
  <head>
    <metadata>
      <ttm:title>예제 문서 제목</ttm:title>
    </metadata>
  </head>
...
참고

외부 네임스페이스를 사용하여 워크플로별 정보를 추가할 수 있다. 다음 예제에서는 "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> 요소 안에 배치하지 않을 것을 강하게 권장한다.

그러한 데이터는 문서 내용을 수정하지만 메타데이터는 보존하면서 그 의미론을 알지 못하는 변환 처리기에 의해 무효화될 수 있다.

5.2.3.1 메타데이터가 아닌 외부 어휘 정의 및 사용

이 절은 비규범적이다.

외부 어휘<metadata> 요소 이외의 위치에 포함되면, 해당 어휘와 연결된 기능을 지원하지 않는 변환 처리기에 의해 5.2.1 인식되지 않는 어휘에서 요구한 대로 잘려 나갈 것이다.

그러한 잘라내기를 방지하고 그러한 외부 어휘의 의미론을 정의하는 메커니즘이 제공된다. 이를 통해 외부 어휘는 잘려 나가지 않고 <metadata> 요소 밖에 위치할 수 있으며, 콘텐츠 및 처리기 적합성을 표시할 수 있다:

  1. 해당 의미론과 어휘에 대한 기능 정의를 포함하고 프로필 지정자를 가진 프로필을 정의한다.
  2. 5.6.2 ttp:contentProfiles를 사용하여 해당 프로필에 대한 문서 적합성을 신호한다

이를 통해 해당 기능을 지원하는 처리기는 적절한 어떤 방식으로든 그 어휘를 처리하고, 잘라내기를 피할 수 있으며, 해당 기능을 지원하지 않는 처리기는 예를 들어 일부 기능이 손실될 수 있음을 사용자에게 경고하는 등 적절한 조치를 취할 수 있다.

5.3 네임스페이스

이 명세에서는 다음 네임스페이스([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에 의한 미래 표준화를 위해 예약된다.

5.5 동기화

DAPT 문서가 [ttml-imsc1.3] 문서를 생성하기 위한 기반으로 사용되도록 의도된 경우, [ttml-imsc1.3]의 동기화 규정이 비디오와의 관계에서 적용됩니다.

DAPT 문서 내의 시간 지정 콘텐츠는 특정 오디오 샘플에서 시작하고 끝나도록 렌더링되는 것을 의도합니다.

참고

이 명세의 맥락에서 렌더링은 텍스트의 시각적 표시일 수 있습니다. 예를 들어 배우에게 말해야 할 단어를 보여주는 것일 수도 있고, 오디오 리소스의 가청 재생일 수도 있으며, 또는 점자 디스플레이와 같은 물리적 또는 촉각적 렌더링일 수도 있습니다.

실시간 오디오 믹싱 및 재생과 같은 제약된 애플리케이션에서, 렌더링된 출력에서 오디오 샘플에 대한 정확한 동기화를 달성할 수 없는 경우, 표시의 시간 지정 변경에서 작성 및 재생 부정확성이 결합된 효과는 [EBU-R37]의 동기화 요구사항을 충족하는 것이 SHOULD 좋습니다. 즉, 오디오 변경은 이미지 변경보다 40ms를 초과하여 앞서서는 안 되며, 60ms를 초과하여 뒤따라서도 안 됩니다.

마찬가지로, 작성 애플리케이션은 작성자가 [EBU-R37]의 요구사항을 충족할 수 있도록 하는 것이 SHOULD 좋습니다. 이를 위해 오디오 변경이 비디오 이미지의 관련 변경 이후 15ms 미만, 그리고 비디오 이미지의 관련 변경 이전 5ms 미만이 되도록 하는 정확도로 시간을 정의할 수 있어야 합니다.

종합하면, 전체 표시와 실시간 재생을 의도한 DAPT 문서에 대한 위의 두 제약은 콘텐츠 프로세서가 오디오 표시 변경을 DAPT 문서에 지정된 시간보다 35ms를 초과하여 앞서 완료하지 않고, 지정된 시간보다 45ms를 초과하여 늦게 완료하지 않는 것이 SHOULD 좋다는 것을 의미합니다.

5.6 프로필 신호

이 절은 TTML 문서 인스턴스DAPT 문서임을 신호하는 방법과, 적용되는 모든 처리 요구사항을 신호하는 방법을 정의한다. 또한 7.1 DAPT 문서의 적합성도 참조하라. 이 절은 DAPT 문서가 이 명세에 적합함을 확립하는 방법을 정의한다.

5.6.1 프로필 지정자

이 프로필은 다음 프로필 지정자와 연결된다:

프로필 이름 프로필 유형 프로필 지정자
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

5.6.2 ttp:contentProfiles

ttp:contentProfiles 속성은 문서가 적합한 [TTML2] 프로필을 선언하는 데 사용된다.

DAPT 문서<tt> 요소에 ttp:contentProfiles 속성을 지정해야 MUST 하며, 여기에는 5.6.1 프로필 지정자에 지정된 content profile 지정자와 같은 값을 적어도 하나 포함해야 한다. 다른 값은 [TTML2]의 다른 프로필에 대한 적합성을 선언하기 위해 존재할 수 MAY 있으며, 독점 네임스페이스의 프로필 지정자를 포함할 수 MAY 있다.

DAPT 문서가 자신이 적합하지 않은 content profile에 대한 적합성을 신호하는 것은 오류이다.

변환 처리기는 자신(처리기)이 지원하지 않는 프로필과 연결된 값을 ttp:contentProfiles 속성 안에 포함해서는 안 된다 MUST NOT; 정의상 그러한 프로필에 대한 콘텐츠의 적합성을 검증할 수 없기 때문이다.

5.6.3 ttp:profile

ttp:profile 속성은 [TTML1] 안에서 문서 인스턴스의 처리 요구사항을 선언하는 메커니즘이다. 이는 [TTML2]에서 실질적으로 ttp:processorProfiles로 대체되었다.

DAPT 문서<tt> 요소에 ttp:profile 속성을 지정해서는 안 된다 MUST NOT.

5.6.4 ttp:processorProfiles

ttp:processorProfiles 속성은 문서 인스턴스의 처리 요구사항을 선언하는 데 사용된다.

DAPT 문서<tt> 요소에 ttp:processorProfiles 속성을 지정할 수 MAY 있다. 존재하는 경우, ttp:processorProfiles 속성은 5.6.1 프로필 지정자에 지정된 processor profile 지정자와 같은 값을 적어도 하나 포함해야 MUST 한다. 추가 처리 제약을 선언하기 위해 다른 값이 존재할 수 MAY 있으며, 독점 네임스페이스의 프로필 지정자를 포함할 수 MAY 있다.

참고

ttp:processorProfiles 속성은 추가 프로필의 기능 및 확장이 문서 인스턴스를 성공적으로 처리하는 데 지원되어야 함을 신호하는 데 사용할 수 있다. 예를 들어 로컬 워크플로가 특정 메타데이터 요구사항을 도입하고, 추가 processor profile 지정자를 사용하여 처리기가 이를 지원해야 함을 신호할 수 있다.

참고

콘텐츠 작성자가 DAPT가 정의한 것보다 추가적인 처리기 요구사항이 DAPT 문서를 처리하는 데 필요하다고 신호할 필요가 없다면, ttp:processorProfiles 속성은 존재하지 않을 것으로 예상된다.

5.6.5 기타 TTML2 프로필 어휘

[TTML2]는 문서 인스턴스가 사용할 수 있거나 처리기가 지원해야 하는 기능 집합을 정의하는 데 사용할 수 있는 어휘와 의미론을 지정하며, 이는 프로필로 알려져 있다.

명시된 경우를 제외하고, 이 프로필 어휘가 처리기에서 지원되어야 한다는 것은 DAPT의 요구사항이 아니다. 그렇지만 그러한 지원은 허용된다.

이 프로필 어휘의 대부분은 문서 인스턴스를 성공적으로 처리하기 위해 처리기가 지원해야 하는 기능 집합을 계산하는 방법을 나타내는 데 사용된다. 이 어휘 자체는 TTML2 기능의 관점에서 정의된다. 이러한 프로필 관련 기능은 F. 프로필 안에 선택 사항으로 나열되어 있다. 이들은 처리기에서 구현될 수 MAY 있으며, 그 관련 어휘는 DAPT 문서에 존재할 수 MAY 있다.

참고

이러한 기능 및 어휘에 대한 처리기 지원이 (대역 외 프로토콜을 사용하여) 마련되지 않은 한, 해당 어휘는 존재하지 않을 것으로 예상된다.

DAPT에서 처리기 지원이 요구되지는 않지만 허용되는 추가 프로필 관련 어휘는 다음과 같다:

5.7 타이밍 제약

DAPT 대본 안에서는 시간 속성과 시간 표현식과 관련하여 다음 제약이 적용된다:

5.7.1 ttp:timeBase

허용되는 유일한 ttp:timeBase 속성 값은 media이다. F. 프로필#timeBase-media를 제외한 모든 timeBase 기능을 금지하기 때문이다.

이는 문서 타임라인의 시작, 즉 시간 "0"이 관련 미디어 객체의 시작임을 의미한다.

5.7.2 timeContainer

timeContainer 속성의 유일하게 허용되는 값은 기본값인 par이다.

문서는 모든 요소에서 timeContainer 속성을 생략해야 SHOULD 한다.

문서는 어떤 요소에서도 timeContainer 속성을 par 이외의 어떤 값으로도 설정해서는 안 된다 MUST NOT.

참고

이는 모든 시간 지정 요소의 begin 속성 값이 그 부모 요소의 계산된 시작 시간에 상대적이며, <body> 요소의 경우 시간 0에 상대적임을 의미한다.

5.7.3 ttp:frameRate

문서에 f 측정 단위를 사용하는 시간 표현식이 있거나, 프레임 구성 요소를 포함하는 시간 표현식이 있으면, ttp:frameRate 속성이 <tt> 요소에 존재해야 MUST 한다.

참고

5.7.4 ttp:tickRate

문서에 t 측정 단위를 사용하는 시간 표현식이 있으면, ttp:tickRate 속성이 <tt> 요소에 존재해야 MUST 한다.

5.7.5 시간 표현식

문서 안의 모든 시간 표현식은 [TTML2]에 정의된 대로, DAPT 제약이 적용된 clock-time 또는 offset-time 중 하나의 동일한 구문을 사용해야 SHOULD 한다.

참고

DAPT clock-time은 다음 형식 중 하나를 가진다:

  • hh:mm:ss.sss
  • hh:mm:ss

여기서 hh는 시간, mm은 분, ss는 초, 그리고 ss.sss는 초의 소수 부분이 있는 초(임의 정밀도)이다.

참고

"time code"와 비슷해 보이는 프레임 구성 요소를 사용하는 clock time 표현식은 그것이 사용될 때, 특히 비정수 프레임 레이트, "drop modes" 및 서브프레임 레이트와 함께 사용될 때 다른 곳에서 관찰된 의미론적 혼동 때문에 금지된다.

참고

offset-time은 다음 형식 중 하나를 가진다:

  • nn metric
  • nn.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 프레임에 해당한다.

5.8 레이아웃 및 스타일

이 명세는 [ttml-imsc1.3]에 정의된 레이아웃 및 렌더링 기능에 추가 제약을 두지 않습니다.

참고
문단의 레이아웃은 기본 TTML 영역에 의존할 수 있습니다(즉, <head> 요소에 <layout> 요소가 사용되지 않은 경우). 또는 /tt/head/layout/region에 존재하는 <region> 요소를 참조하기 위해 region 속성을 사용하여 명시적으로 지정될 수 있습니다.

스타일 참조 또는 인라인 스타일은 [TTML2] 또는 [ttml-imsc1.3]에 정의된 대로 style 속성, <style> 요소 및 인라인 스타일 속성의 임의 조합을 사용하여 사용될 MAY 있습니다.

5.9 양방향 텍스트

다음 메타데이터 요소는 DAPT에서 허용되며, [TTML2]에서 #PCDATA, 즉 요소 콘텐츠가 없는 텍스트 데이터만 포함하는 것으로 지정되어 있다. 그러한 요소 안의 문자 콘텐츠에서 양방향 텍스트가 필요한 경우, 유니코드 제어 문자를 사용하여 텍스트의 임의 범위 안에서 기본 방향을 정의할 수 있다.

참고

이 메커니즘의 사용에 관한 더 자세한 지침은 HTML의 인라인 마크업과 양방향 텍스트에서 확인할 수 있다.

<p><span> 콘텐츠 요소는 tts:directiontts:unicodeBidi 속성을 사용하여 텍스트의 방향을 지정하는 것을 허용한다. 문서 작성자는 유니코드 제어 문자를 사용하는 것보다 이 더 견고한 메커니즘을 사용해야 한다.

참고

[TTML2]에서 가져온 다음 예제는 <p><span> 요소 안에서의 양방향 텍스트 마크업 구문을 보여 준다.

<p>
책 제목은
"<span tts:unicodeBidi="embed" tts:direction="rtl">نشاط التدويل، W3C</span>"이다
</p>

위 조각의 예제 렌더링은 아래에 표시되어 있다.

방향 예제의 예제 렌더링: 왼쪽에서 오른쪽으로 The title of the book is W3C가 표시되고 이어서 오른쪽에서 왼쪽으로 해당 아랍어 텍스트가 표시됨

6. TTML에서 DAPT 데이터 모델로의 매핑

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 문서를 기반으로 오디오 믹스를 렌더링할 수 있다. 그 경우 이 절은 무시될 수 있다.

6.1 부적합 문서의 조기 식별

이 절은 비규범적이다.

이 절과 관련된 규범 조항은 [TTML2]에 정의되어 있다.

DAPT에서는 DAPT 문서가 루트 요소에 ttp:contentProfiles 속성을 포함하고, 그 속성이 5.6.2 ttp:contentProfiles에 지정된 대로 DAPT content profile 지정자를 포함해야 한다. 따라서 그러한 속성을 포함하지 않거나, 그러한 프로필 지정자를 포함하지 않는 모든 TTML 문서는 DAPT 문서가 아닌 것으로 간주될 수 있다. 그러므로 DAPT에 대한 엄격한 준수를 요구하는 처리기는 그러한 문서의 처리를 중단할 수 있다.

6.2 콘텐츠 프로필에서 제외된 기능을 지원하지 않기

처리기가 입력으로 받는 DAPT 문서가 처리기가 지원하는 기능과 관련된 어휘를 포함하지만, 문서가 적합성을 주장하는 콘텐츠 프로필에서 해당 기능의 지원이 제외되어 있는 경우, 처리기는 그 문서의 맥락에서 해당 기능을 구현하지 않아야 SHOULD NOT 한다.

6.3 <div><p> 요소 처리

[TTML2]는 <div> 요소가 <div> 요소와 <p> 요소의 임의 조합을 포함하는 것을 허용한다. DAPT 데이터 모델은 각 대본 이벤트가 0개 이상의 <p> 요소를 포함하는 <div> 요소로 어떻게 표현되는지를 설명한다. 또한 <body> 요소와 그러한 대본 이벤트 <div> 요소 사이의 경로에 다른 중간 <div> 요소가 있는 것도 허용한다. 이에 더해, DAPT 데이터 모델의 속성에 해당하지 않는 속성도 허용된다.

이는 다음과 같은 가능성을 발생시킨다:

다음 처리 규칙은 이러한 경우를 해결한다.

대본 이벤트를 식별하기 위한 규칙:

  1. <div> 요소 자식을 가지지 않고, 대본 이벤트의 모든 비메타데이터 필수 속성의 TTML 표현을 포함하는 <div> 요소는, 추가 인식되지 않는 어휘를 포함하더라도, 대본 이벤트로 매핑되어야 MUST 한다. 예를 들어 대본 이벤트 식별자를 나타내는 유효한 xml:id를 가지는 경우가 이에 해당한다;

  2. <div> 요소 자식을 포함하는 <div> 요소는 대본 이벤트로 매핑되어서는 안 된다 MUST NOT; 대신 처리기는 그러한 <div> 요소 자식을 (깊이 우선 순회로 재귀적으로) 반복 처리하고, 각 요소가 대본 이벤트의 요구사항을 충족하는지 고려해야 MUST 한다;
  3. 남아 있는 매핑되지 않은 모든 <div> 요소는 대본 이벤트로 매핑되어서는 안 된다 MUST NOT.

텍스트 객체를 식별하기 위한 규칙:

  1. 대본 이벤트로 매핑되는 <div> 요소의 자식인 <p> 요소는 텍스트 객체로 매핑되어야 MUST 한다.
  2. 대본 이벤트로 매핑되는 <div> 요소의 자식이 아닌 <p> 요소는 텍스트 객체로 매핑되어서는 안 된다 MUST NOT.
참고

DAPT의 미래 버전은 이러한 구조적 가능성을 다르게 사용하는 기능을 포함할 수 있으며, 따라서 여기 정의된 규칙과 상호 배타적인 다른 처리 규칙을 정의할 수 있다.

6.4 계산된 속성 값 사용

일부 속성은 다른 어떤 요소에 있는 속성의 계산된 값에 의존하여 그 값을 계산하는 의미론을 가진다. 예를 들어 xml:lang 속성이 어떤 요소에 지정되지 않은 경우, 그 계산된 값은 해당 요소의 부모에 있는 같은 속성의 계산된 값이다.

정의된 DAPT 데이터 모델 엔터티에 해당하는 요소가 아닌 다른 요소에도 지정될 수 있는 속성 표. 스타일링 속성(예: fill, tta:gaintta:pan) 같은 추가 허용 속성은 여기에 나열되어 있지 않다는 점에 유의하라.
속성 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:onScreendaptm:descType 속성은 특정 요소에 지정된 경우에만 정의된다.

또 다른 예로, DAPT 문서에서 어떤 요소의 계산된 시간은 그 요소 부모의 시작 시간에 상대적이다. <div> 요소가 begin 속성을 지정하면, 그 자식 <div> 요소들의 계산된 시간은 그 부모 <div> 요소의 시작 시간에 상대적이며, 계층 아래로 계속 그렇게 적용된다. 처리 대상이 DAPT 데이터 모델의 인스턴스여서 이러한 "중간" <div> 요소들이 직접 대응하는 것이 없더라도, 그 시간들을 계산에 포함하는 것이 중요하다. 그렇지 않으면 대본 이벤트시작 시간이 잘못될 것이다.

이 상황을 더 일반적으로 고려하면, DAPT 문서 안에는 TTML 요소가 있을 수 있으며, 이 요소들은 DAPT 데이터 모델의 객체에 직접 대응하지 않을 수 있다. 또한 그러한 요소들은 DAPT 데이터 모델의 객체에 대응하는 요소에 적용되는 속성 값의 계산에 영향을 주는 속성을 지정할 수 있다.

이 시나리오에서는 [TTML2]가 정의한 의미론, 또는 여기에서 정의된 어휘의 경우 이 명세가 정의한 의미론이 우선한다. 구현은 계산된 값을 DAPT 데이터 모델 객체에 적용하기 전에, 문서 인스턴스의 내용을 기반으로 속성 값을 계산해야 MUST 한다. 예를 들어 TTML2 스타일링 기능을 지원하는 처리기는 tts:fontSize 같은 속성의 상속 및 상대 값 계산에 대한 TTML2 의미론을 구현해야 한다.

구현이 내부적으로 DAPT 데이터 모델 객체, 예를 들어 위 예제에 표시된 대본 이벤트를 생성하는 경우, 상호 운용성을 위해 계산된 값을 사용하는 것이 중요하다.

6.5 변환 및 검증 처리기에 대한 고려사항

이 절은 비규범적이다.

6.5.1 인식되지 않는 어휘 유지

5.2.1 인식되지 않는 어휘에 따라, DAPT 처리기 구현자는 DAPT 문서<metadata> 요소 안에 있는 인식되지 않는 어휘를 유지하도록 권장된다. 실제로는 DAPT 문서를 입력하고 DAPT 문서를 출력하는 구현이 입력 문서 구조와 내용을 수정하면서, 출력 문서에서 인식되지 않는 어휘를 가진 해당 엔터티들을 사실상 잘라낼 가능성이 있다.

6.5.2 검증 경고 및 오류

이 절과 관련된 규범 조항은 [TTML2]에 정의되어 있다.

[TTML2]는 검증 처리기를 정의한다. 이는 문서 인스턴스를 평가하고 그것이 유효한지 아닌지 결정하는 것을 목적으로 하는 구현 클래스이다. 일반적으로 이는 처리 워크플로 안에서 문서가 이후 사용에 적합한지 확인하는 데 사용될 것이다. 실제 세계의 예는 단순히 "좋음" 또는 "나쁨"을 반환하지 않고, 입력 문서의 특이하거나 예상치 못했거나 문제가 있는 내용을 설명하는 정보, 경고 및 오류 메시지도 출력할 가능성이 크다.

DAPT 문서를 위한 검증 처리기를 구현할 때, 엄격한 [TTML2] 검증 처리 규칙을 적용할 수 있다. 이렇게 하려면 프로필에 정의된 필수 또는 선택 기능과 관련된 구문 및 콘텐츠의 존재와 의미론적 유효성을 확인하고, 금지된 기능과 관련된 구문이 없는지 확인해야 한다.

인식되지 않는 네임스페이스의 어휘를 처리하기 위한 [TTML2] 메커니즘은 검증 전에 이를 잘라내는 것이다. 이 접근 방식을 사용할 수 있으며, 추가로 구현이 잘려 나간 속성과 요소를 정보로 보고하는 것도 합리적일 수 있다.

참고

여기서 "어휘"라는 용어는 XML 요소와 속성을 가리킨다.

잘라내기 후 인식된 네임스페이스에서 지원되지 않거나 폐기된 어휘가 발견되거나, 지원되는 어휘가 예상치 못했지만 유효하지는 않은 콘텐츠를 포함하는 경우 검증 경고가 발행될 수 있다. 그러나 이러한 시나리오에서 오류는 예상되지 않는다.

금지된 어휘가 존재하거나, 허용된 어휘 안에서 의미론적으로 유효하지 않은 콘텐츠가 발견되는 경우에는 검증 오류가 예상된다.

7. 적합성

비규범으로 표시된 절뿐 아니라, 이 명세의 모든 저작 지침, 다이어그램, 예제 및 참고는 비규범적이다. 이 명세의 그 밖의 모든 것은 규범적이다.

이 문서의 핵심어 MAY, MUST, MUST NOT, SHOULDSHOULD NOT은 여기 표시된 것처럼 모두 대문자로 나타나는 경우에, 그리고 그 경우에만 BCP 14 [RFC2119] [RFC8174]에 설명된 대로 해석되어야 한다.

[TTML2]는 Profiling 하위 시스템 안에서 문서 및 처리기 요구사항을 표현하기 위한 형식 언어를 지정한다. 이 명세의 규범적 요구사항은 위에 설명된 적합성 용어를 사용하여 정의되며, 이 TTML2 프로필 메커니즘을 사용해서도 정의된다. TTML2 어휘가 참조되는 경우, [TTML2]에 정의된 해당 어휘와 관련된 구문 및 의미론 요구사항이 적용된다.

일반적으로 DAPT 처리기가 TTML2 프로필 처리 의미론을 구현해야 한다는 요구사항은 없지만, 구현자는 F. 프로필에 정의된 TTML2 프로필을 예를 들어 체크리스트처럼, 자신의 구현이 DAPT의 규범적 요구사항을 충족하는지 검증하는 수단으로 사용할 수 있다.

반대로, TTML2 프로필 처리 의미론을 지원하는 범용 [TTML2] 처리기는 F. 프로필에 정의된 TTML2 프로필을 직접 사용하여 DAPT 문서를 처리할 수 있는지 판단할 수 있다.

7.1 DAPT 문서의 적합성

적합한 DAPT 문서는 이 명세의 규범 조항에 적합한 [TTML2] timed text content document instances이다. 이러한 조항은 F. 프로필에 정의된 content profile 안에서 [TTML2]의 profile 어휘를 사용하여 표현된다.

참고

DAPT 문서에는 [TTML2]의 Section 3.1에 지정된 콘텐츠 적합성 요구사항이 계속 적용된다. 특히, DAPT 문서외부 어휘를 포함할 수 있다. 이는 그러한 요소와 속성이 콘텐츠 적합성을 평가하기 전에 [TTML2]의 Section 4 알고리즘에 의해 잘려 나가기 때문이다.

7.2 DAPT 처리기의 적합성

적합한 DAPT 처리기는 이 명세의 규범 조항에 적합한 [TTML2] content processors이다. 이러한 조항은 F. 프로필에 정의된 processor profile 안에서 [TTML2]의 profile 어휘를 사용하여 표현된다.

참고

A. 색인

A.1 이 명세에서 정의된 용어

A.2 참조로 정의된 용어

B. 개인정보 보호 고려사항

이 절은 비규범적이다.

다음을 제외하고는 [ttml2]의 개인정보 보호 고려사항이 적용된다:

B.1 개인 정보

DAPT 문서는 일반적으로 관련 미디어에 등장하는 가상 또는 실제 등장인물이나 사람의 이름을 포함한다. 일반적으로 이 정보는 미디어 자체 안에 존재하거나 다른 경로를 통해 공개되어 있을 것이다. 그러한 신원이 포함된 DAPT 문서에 접근할 수 있는 사람들에게 그 신원이 알려지는 것과 관련해 민감성이 있다면, 그러한 접근은 적절한 기밀성으로 관리되어야 한다. 예를 들어 그러한 문서는 폐쇄된 저작 환경 안에서만 사용 가능하게 하고, 더 넓은 대상에게 배포하기 전에 민감한 정보를 제거하도록 편집할 수 있다. 이러한 시나리오가 발생하는 경우, 폐쇄 환경 안에서 문서를 "저장 상태" 및 이동 중에 암호화하고, 인증 플랫폼으로 접근을 제어하는 등 정보 보안 모범 관행을 적용해야 한다.

B.2 오디오 형식 선호

이 기능은 브라우저 지문 식별 가능성에 기여할 수 있습니다. DAPT 문서는 동일한 오디오 조각에 대해 일련의 대체 외부 오디오 리소스를 참조할 수 있으며, 이때 처리기는 형식 지원 같은 기능에 기반하여 대안 중 하나를 선택할 것으로 예상된다. 이 패턴이 사용되는 경우, 처리기의 오디오 리소스 선택이 출처에 노출되어, 선호하는 오디오 형식 같은 해당 처리기에 대한 정보가 드러날 수 있다.

참고

C. 보안 고려사항

이 절은 비규범적이다.

DAPT가 [ttml2]의 프로필이므로, [ttml2]의 보안 고려사항이 적용된다; 모든 적합한 DAPT 문서는 TTML 문서 인스턴스이다.

[ttml2]의 XML 관련 고려사항에도 불구하고, DAPT 문서는 필수 #serialization 확장 기능에 의해 문서 유형 선언을 선언하거나 참조하는 것을 피하고, [xml] 엔터티 확장 메커니즘 사용을 피하도록 요구된다. 따라서 구현은 DAPT 문서를 파싱할 때 XML의 그러한 기능들을 지원하지 않음으로써, 해당 기능들과 관련된 잠재적 서비스 거부 공격이나 외부 콘텐츠 주입으로부터 보호할 수 있다.

DAPT 문서는 "하위 리소스"라고도 설명되는 외부 오디오 리소스의 참조를 허용한다. 그러한 참조와 관련된 잠재적 위협 중 하나는 출처가 저작 시점에 의도한 것과 다른 오디오 리소스를 반환할 수 있다는 점이다. 현재 그러한 하위 리소스의 무결성을 검증하기 위한 방식은 제공되지 않는다. 적절한 오디오 리소스가 제공됨을 보장할 수 없는 콘텐츠 제공자, 예를 들어 체인의 일부가 자신의 통제 밖에 있는 경우에는, 하위 리소스 무결성 메타데이터를 추가하는 것을 고려할 수 있다. 예를 들어 의도한 하위 리소스의 해시를 포함하는 속성을 추가하고, 수신된 하위 리소스가 의도한 것인지 검증하기 위해 이를 사용하는 클라이언트 측 검사를 구현할 수 있다.

E. 오디오 믹싱

이 절은 비규범적이다.

이 절은 구현자를 위한 오디오 믹싱에 관한 추가 정보를 포함한다.

E.1 Web Audio

믹싱 지시의 적용은 [webaudio]를 사용하여 구현할 수 있다. 그림 2는 프로그램 오디오의 흐름과, 오디오 생성 요소가 활성 상태일 때 대본 이벤트의 팬과 게인(설정된 경우)이 어떻게 적용되는지를 보여 준다. 그런 다음 출력은 텍스트로 전달되고, 이 텍스트는 활성 오디오 녹음에서 온 오디오를 믹스한다. 이 오디오 녹음 자체도 자신의 믹싱 지시의 적용을 받으며, 그 결과에는 마스터 버스로 믹스되어 출력되기 전에 텍스트믹싱 지시가 적용된다.

(활성) ScriptEventPanGain (활성) AudioRecordingPanGain (활성) TextPanGain 프로그램오디오 오디오믹싱이 활성일 때 오디오 믹싱이비활성일 때
그림 2 객체 간 단순 오디오 라우팅 예

위 예제는 그림 3에서 [webaudio] 노드로 표시된다.

GainNode (ScriptEvent) PanNode (ScriptEvent) GainNode (Text) PanNode (Text) GainNode (AudioRecording) PanNode (AudioRecording) 암시적 믹서 마스터 버스 프로그램 오디오 AudioRecording소스 오디오 출력 오디오
그림 3 필요한 오디오 처리를 나타내는 Web Audio 노드.

위 예제는 적어도 두 가지 방식으로 단순화되어 있다:

E.2 팝 방지

오디오 녹음이 들리는 소리로 시작하거나 끝나는 경우, 즉 인 시간의 첫 번째 샘플 또는 아웃 시간의 마지막 샘플이 0이 아닌 경우, 재생의 시작 또는 끝에서 오디오 변환기가 바람직하지 않은 "팝" 소음을 내도록 유도될 가능성이 있다.

이 팝 효과를 피하기 위한 여러 잠재적 전략이 존재한다. 예를 들면 다음과 같다:

이 접근 방식 중 마지막 방식을 사용하는 경우, 그리고 이 측면에서 표현 처리기의 동작에 대한 다른 외부 제어가 없다면, 오디오 녹음 또한 시작 또는 끝에, 들리지 않게 렌더링될 경우 의미가 바뀌는 샘플을 포함하지 않는 것이 권장된다. 예를 들어 단어 "cat"의 시작에 있는 "c" 같은 파열성 발화를 생략하면 단어가 "at"처럼 들리게 될 것이다.

F. 프로필

이 절은 [TTML2] content profileprocessor 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 <ttp:feature> 또는 <ttp:extension> 요소의 value 속성 값
content profile processor profile
required required required
permitted optional required
optional optional optional
prohibited prohibited optional
참고

이 문서 안에서 presentation processortransformation 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> 요소가 허용되거나 금지되는 것으로 지정되는 것을 가리키지 않는다.

F.1 기능 및 확장의 Disposition

이 절에 나열된 기능확장DAPT 문서, Presentation ProcessorsTransformation Processors에 대한 최소 요구사항을 표현한다. DAPT 문서는 추가로 다른 프로필에 적합할 수 MAY 있으며, DAPT content profile에서 금지하지 않은 구문을 포함할 수 있다. Presentation ProcessorsTransformation Processors는 다른 프로필과 관련된 추가 구문 및 의미론을 지원할 수 MAY 있다.

참고

예를 들어, DAPT 스크립트는 오디오를 녹음하는 배우에게 스크립트의 표현을 향상시키거나, 나중에 자막 또는 캡션 생성에 사용할 때 중요한 스타일링을 추가하기 위해 [TTML2]의 IMSC([ttml-imsc1.3]) Text Profile에서 허용하는 구문을 포함할 수 있습니다.

편집자 참고

편집 작업: 이 기능 목록을 검토하고 각 항목의 처리 상태를 확인합니다. IMSC에서 허용되는 금지 기능은 없어야 합니다.

기능 또는 확장 Disposition 추가 조항
TT Feature 네임스페이스 기준
#animate-fill 허용됨
#animate-minimal 허용됨
#animation-out-of-line 금지됨 4.10 믹싱 지시를 참조하라.
#audio 허용됨
#audio-description 허용됨
#audio-speech 허용됨
#bidi 허용됨
#bidi-version-2 허용됨
#chunk 허용됨
#clockMode 금지됨
#clockMode-gps 금지됨
#clockMode-local 금지됨
#clockMode-utc 금지됨
#content 허용됨
#contentProfiles 허용됨 5.6.2 ttp:contentProfilesG.3 #contentProfiles-root를 참조하라.
#contentProfiles-combined 선택 사항 5.6.5 기타 TTML2 프로필 어휘를 참조하라.
#core 허용됨
#data 허용됨
#direction 허용됨
#dropMode 금지됨
#dropMode-dropNTSC 금지됨
#dropMode-dropPAL 금지됨
#dropMode-nonDrop 금지됨
#embedded-audio 허용됨
#embedded-data 허용됨
#frameRate 허용됨 5.7.3 ttp:frameRate를 참조하라.
#frameRateMultiplier 허용됨
#gain 허용됨
#markerMode 금지됨
#markerMode-continuous 금지됨
#markerMode-discontinuous 금지됨
#metadata 허용됨
#metadata-item 허용됨
#metadata-version-2 허용됨
#pan 허용됨
#permitFeatureNarrowing 선택 사항 5.6.5 기타 TTML2 프로필 어휘를 참조하라.
#nested-div 허용됨 이는 4.3 대본 이벤트에 설명된 <div> 요소 중첩 허용의 프로필 표현이다.
#permitFeatureWidening 선택 사항 5.6.5 기타 TTML2 프로필 어휘를 참조하라.
#pitch 허용됨
#presentation-audio 허용됨
#processorProfiles 선택 사항 5.6.4 ttp:processorProfiles를 참조하라.
#processorProfiles-combined 선택 사항 5.6.5 기타 TTML2 프로필 어휘를 참조하라.
#profile 부분적으로 허용됨 5.6.3 ttp:profile을 참조하라.
#profile-full-version-2 부분적으로 허용됨 5.6.5 기타 TTML2 프로필 어휘를 참조하라.
#profile-version-2 부분적으로 허용됨 5.6.5 기타 TTML2 프로필 어휘를 참조하라.
#resources 허용됨
#set 허용됨
#set-fill 허용됨
#set-multiple-styles 허용됨
#source 허용됨
#speak 허용됨
#speech 허용됨
#structure 필수
#styling 허용됨
#styling-chained 허용됨
#styling-inheritance-content 허용됨
#styling-inline 허용됨
#styling-referential 허용됨
#subFrameRate 금지됨
#tickRate 허용됨 5.7.4 ttp:tickRate를 참조하라.
#time-clock 허용됨
#time-clock-with-frames 금지됨
#time-offset-with-frames 허용됨 5.7.3 ttp:frameRate를 참조하라.
#time-offset-with-ticks 허용됨 5.7.4 ttp:tickRate를 참조하라.
#time-offset 허용됨
#time-wall-clock 금지됨
#timeBase-clock 금지됨
#timeBase-media 필수

5.7.1 ttp:timeBase를 참조하라.

참고: [TTML1]은 ttp:timeBase 속성이 <tt> 요소에 지정되지 않은 경우, 기본 timebase가 "media"라고 지정한다.

#timeBase-smpte 금지됨
#timeContainer 금지됨 5.7.2 timeContainer를 참조하라.
#timing 허용됨 5.7.5 시간 표현식을 참조하라.
#transformation 허용됨 #profile의 제약을 참조하라.
#unicodeBidi 허용됨
#unicodeBidi-isolate 허용됨
#unicodeBidi-version-2 허용됨
#xlink 허용됨
DAPT 확장 네임스페이스 기준
#agent 허용됨 이는 4.2 등장인물의 프로필 표현이다.
#contentProfiles-root 필수 이는 5.6.2 ttp:contentProfiles의 프로필 표현이다.
#daptOriginTimecode 허용됨 이는 D.1 DAPT 원점 타임코드의 프로필 표현이다.
#descType 허용됨 이는 daptm:descType의 프로필 표현이다.
#onScreen 허용됨 이는 4.6 화면상 표시의 프로필 표현이다.
#profile-root 금지됨 이는 5.6.3 ttp:profile에 지정된 것처럼, <tt> 요소의 ttp:profile 속성 금지의 프로필 표현이다.
#represents 필수 이는 대본 이벤트에 적용되는 나타내는 것의 프로필 표현이다.
#scriptEventMapping 선택 사항 이는 6.3 <div><p> 요소 처리의 프로필 표현이다.
#scriptRepresents-root 필수 이는 대본이 나타내는 것의 프로필 표현이다.
#scriptType-root 필수 이는 4.1.3 대본 유형의 프로필 표현이다.
#serialization 필수 이는 5.1 문서 인코딩의 프로필 표현이다.
#source-data 금지됨 이는 4.9.1 오디오 녹음에 지정된 것처럼, <data> 요소의 <source> 자식 요소 금지의 프로필 표현이다.
#textLanguageSource 허용됨 이는 4.4 텍스트에서 요구되는 4.5 텍스트 언어 소스의 프로필 표현이다.
#xmlLang-audio-nonMatching 금지됨 이는 4.9.1 오디오 녹음에 지정된 것처럼, <audio> 요소의 xml:lang 속성이 부모 요소 및 자손 또는 참조된 <source><data> 요소와 다른 계산된 값을 가지는 것에 대한 금지의 프로필 표현이다.
#xmlLang-root 필수 이는 4.1.2 기본 언어의 프로필 표현이다.

F.2 DAPT Content Profile

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>

F.3 DAPT Processor 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>

G. 확장

G.1 일반

다음 절들은 확장 지정을 정의하며, 이는 DAPT 확장 네임스페이스 기본 URI에 상대적인 상대 URI(프래그먼트 식별자)로 표현된다. 이러한 확장 지정은 F. 프로필에서 [TTML2] 프로필 기능으로 표현되지 않는 DAPT의 규범 조항을 설명하는 데 사용된다.

G.2 #agent

변환 처리기<ttm:agent> 요소의 다음 요소 및 속성 값을 인식하고 변환할 수 있으면 #agent 확장을 지원한다:

그리고 다음 값 조합 각각을 인식하고 변환할 수 있으면 지원한다:

#agent 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.

G.3 #contentProfiles-root

변환 처리기<tt> 요소의 ttp:contentProfiles 속성 값을 인식하고 변환할 수 있으면 #contentProfiles-root 확장을 지원한다.

표현 처리기<tt> 요소의 ttp:contentProfiles 속성에 대한 표현 의미론 지원을 구현하면 #contentProfiles-root 확장을 지원한다.

#contentProfiles-root 확장은 #contentProfiles 기능의 구문 및 의미론 부분집합이다.

참고

G.4 #daptOriginTimecode

변환 처리기<daptm:daptOriginTimecode> 요소의 값을 인식하고 변환할 수 있으면 #daptOriginTimecode 확장을 지원한다.

#daptOriginTimecode 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.

G.5 #descType

변환 처리기<ttm:desc> 요소의 daptm:descType 속성 값을 인식하고 변환할 수 있으면 #descType 확장을 지원한다.

#descType 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.

G.6 #onScreen

변환 처리기<div> 요소의 daptm:onScreen 속성 값을 인식하고 변환할 수 있으면 #onScreen 확장을 지원한다.

#onScreen 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.

G.7 #profile-root

변환 처리기<tt> 요소의 ttp:profile 속성 값을 인식하고 변환할 수 있으면 #profile-root 확장을 지원한다.

표현 처리기<tt> 요소의 ttp:profile 속성에 대한 표현 의미론 지원을 구현하면 #profile-root 확장을 지원한다.

#profile-root 확장은 #profile 기능의 구문 및 의미론 부분집합이다.

참고

G.8 #represents

변환 처리기daptm:represents 속성 값을 인식하고 변환할 수 있으면 #represents 확장을 지원한다.

#represents 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.

G.9 #scriptEventMapping

변환 처리기DAPT 문서DAPT 데이터 모델의 내부 표현으로 매핑할 때, 6.3 <div><p> 요소 처리에 지정된 처리 요구사항을 구현하면 #scriptEventMapping 확장을 지원한다.

#scriptEventMapping 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.

참고

DAPT 문서DAPT 데이터 모델의 내부 표현으로 매핑해야 하거나 이에 의존하는 표현 의미론이 없기 때문에, 표현 처리기에는 #scriptEventMapping 확장 지원이 요구되지 않는다. 그러한 매핑을 수행하는 표현 처리기는 이 확장의 목적상 변환 처리기로도 간주될 수 있다.

G.10 #scriptRepresents-root

변환 처리기<tt> 요소의 daptm:scriptRepresents 속성 값을 인식하고 변환할 수 있으면 #scriptRepresents-root 확장을 지원한다.

#scriptRepresents-root 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.

#scriptRepresents-root 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.

G.11 #scriptType-root

변환 처리기<tt> 요소의 daptm:scriptType 속성 값을 인식하고 변환할 수 있으면 #scriptType-root 확장을 지원한다.

#scriptType-root 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.

G.12 #serialization

#serialization 확장과 관련하여 유효한 직렬화된 문서는 [xml] XML 1.0 문서이며, [UNICODE]에 지정된 UTF-8 문자 인코딩을 사용하여 인코딩되고, 바이트 순서 표시(BOM)를 포함하지 않으며, 문서 유형 선언, 엔터티 선언, 그리고 미리 정의된 엔터티에 대한 것을 제외한 엔터티 참조를 포함하지 않는다.

변환 처리기 또는 표현 처리기는 위에 정의된 직렬화된 문서를 읽을 수 있으면 #serialization 확장을 지원한다.

문서를 쓰는 변환 처리기는 위에 정의된 직렬화된 문서를 쓸 수 있으면 #serialization 확장을 지원한다.

G.13 #source-data

변환 처리기<data> 요소의 자식인 <source> 요소의 값을 인식하고 변환할 수 있으면 #source-data 확장을 지원한다.

표현 처리기<data> 요소의 자식인 <source> 요소에 대한 표현 의미론 지원을 구현하면 #source-data 확장을 지원한다.

G.14 #textLanguageSource

변환 처리기daptm:langSrc 속성 값을 인식하고 변환할 수 있으면 #textLanguageSource 확장을 지원한다.

#textLanguageSource 확장에 대해서는 표현 처리기 동작이 정의되지 않는다.

G.15 #xmlLang-audio-nonMatching

변환 처리기<audio> 요소의 xml:lang 속성 값 중, 그 부모 요소 또는 그 자손이나 참조된 <source> 또는 <data> 요소의 동일한 속성의 계산된 값과 다른 값을 인식하고 변환할 수 있으면 #xmlLang-audio-nonMatching 확장을 지원한다. 이러한 값은 일치하지 않는 값이라고 한다.

표현 처리기는 그러한 일치하지 않는 xml:lang 속성 값에 대한 표현 의미론 지원을 구현하면 #xmlLang-audio-nonMatching 확장을 지원한다.

G.16 #xmlLang-root

변환 처리기<tt> 요소의 xml:lang 속성 값과 4.1.2 기본 언어에 지정된 추가 의미론을 인식하고 변환할 수 있으면 #xmlLang-root 확장을 지원한다.

표현 처리기<tt> 요소의 xml:lang 속성과 4.1.2 기본 언어에 지정된 추가 의미론에 대한 표현 의미론 지원을 구현하면 #xmlLang-root 확장을 지원한다.

H. 레지스트리 절

H.1 레지스트리 정의

이 절은 이 문서에서 정의된 레지스트리 표의 관리 책임, 변경 절차 및 핵심 요구사항으로 구성되는 레지스트리 정의를 지정한다.

H.1.1 관리 책임

w3c registry관리자Timed Text Working Group (TTWG)이다. TTWG관리자의 역할을 수행할 수 없는 경우, 예를 들어 종료된 경우에는, 대체 관리자W3C이다.

H.1.2 변경 절차

H.1.2.1 변경 요청

W3C Registry에 대한 변경은 다음 옵션 중 하나를 사용하여 요청되어야 MUST 한다(그 요청을 변경 요청이라 한다):

변경 요청관리자가 다음 모두를 식별할 수 있을 만큼 충분한 정보를 포함해야 MUST 한다:

변경 제안자는 제안된 변경을 포함하는 pull request(또는 이에 준하는 것)를 버전 관리 시스템에 열 수 MAY 있다. pull request가 열린 경우 대응하는 이슈도 열어야 MUST 하며, 해당 pull request는 그 이슈에 연결되어야 MUST 한다.

참고
H.1.2.2 변경 요청 평가 절차

변경 요청을 평가하는 절차는 관리자에 따라 달라진다.

H.1.2.2.1 관리자가 TTWG인 경우

관리자TTWG인 경우:

  • 변경 제안자가 버전 관리 시스템에 pull request를 열지 않았다면, TTWG 구성원이 그러한 pull request를 열 때까지 평가가 일시 중지된다. 이 pull request는 요청된 변경을 나타내야 MUST 하며, 관련 이슈에 연결되어야 MUST 한다.
  • TTWG는 pull request의 제안을 검토하기 위해 자신의 결정 정책을 따른다.
  • 결정 검토 기간 종료 시 TTWG 의장이 승인에 대한 합의가 있다고 선언하면, 변경 요청은 승인된다.
  • 승인에 대한 합의가 없는 경우, 변경 요청자를 포함하여 논의가 이루어질 것으로 예상된다. 이 논의의 결과는 다음 중 하나일 수 있다:
    1. 변경 요청이 포기된다;
    2. 변경 요청이 또 다른 검토를 위해 수정된다;
    3. 논의가 이의를 해결하고 TTWG 의장이 승인에 대한 합의를 선언하면, 변경 요청은 승인될 수 있다.

승인된 변경 요청은 관련 pull request를 버전 관리 시스템에 병합하고 이 문서의 갱신된 버전을 발행함으로써 시행된다.

H.1.2.2.2 관리자가 W3C 팀인 경우

관리자W3C인 경우, 팀은 변경 요청에 대한 광범위한 검토를 구해야 MUST 하며, 접수된 응답을 바탕으로 응답자 간 합의가 있는지 평가하기 전에 최소 4주의 검토 기간을 제공해야 한다.

팀은 검토의 근거로 버전 관리 시스템에 pull request가 열리도록 요구할 수 MAY 있다.

그러한 합의가 있는 경우, 팀은 제안된 변경을 수행해야 MUST 한다.

H.1.3 레지스트리 표 제약

이 절은 이 문서에서 정의된 레지스트리 표에 대한 제약을 정의한다. 각 레지스트리 표레지스트리 항목의 집합으로 구성된다. 각 레지스트리 표H.2 레지스트리 표 정의에 관련 레지스트리 표 정의를 가지며, 이는 각 레지스트리 항목에 있는 필드를 나열한다.

H.1.3.1 레지스트리 항목

레지스트리 항목상태, 고유한 , 그리고 적절한 경우 기타 필드를 가진다. 예를 들어 참고, 설명 또는 다른 정의 엔터티에 대한 참조가 이에 해당한다.

레지스트리 표 정의는 각 레지스트리 항목에서 사용할 필드를 정의해야 MUST 한다.

참고
H.1.3.1.1 상태

레지스트리 항목상태 필드는 해당 항목의 성숙도를 반영한다. 허용되는 값은 다음과 같다:

Provisional
Final
Deprecated

다른 값은 허용되지 않는다.

H.1.3.1.1.1 임시

레지스트리 항목Provisional 상태를 가진 것은 변경되거나 삭제될 수 MAY 있다. 그 상태Final 또는 Deprecated로 변경될 수 있다.

나중에 삭제된 Provisional 항목의 레지스트리 항목 는 재사용될 수 MAY 있다.

새로 생성된 레지스트리 항목Provisional 상태를 가져야 SHOULD 한다.

H.1.3.1.1.2 최종

레지스트리 항목Final 상태를 가진 것은 삭제되거나 변경되어서는 안 된다 MUST NOT. 그 상태Deprecated로 변경될 수 MAY 있다.

Final 항목의 레지스트리 항목 는 재사용되어서는 안 된다 MUST NOT.

새로 생성된 레지스트리 항목Final 상태를 가질 수 MAY 있다.

H.1.3.1.1.3 폐기됨

레지스트리 항목Deprecated 상태를 가진 것은 삭제되거나 변경되어서는 안 된다 MUST NOT. 그 상태는, 그렇게 하면 상태Provisional 또는 Final인 항목 집합 안에서 중복 가 발생하는 경우가 아니라면, Final로 변경될 수 MAY 있다.

이전에 Provisional이었고 결코 Final이 아니었던 Deprecated 항목의 레지스트리 항목 는 재사용될 수 MAY 있다.

이전에 Final이었던 Deprecated 항목의 레지스트리 항목 는 재사용되어서는 안 된다 MUST NOT.

새로 생성된 레지스트리 항목Deprecated 상태를 가져서는 안 된다 MUST NOT.

H.2 레지스트리 표 정의

이 절은 레지스트리 표를 정의하고 그 레지스트리 항목의 위치를 지정한다.

H.2.1 daptm:descType 레지스트리 표 정의

daptm:descType에 대한 레지스트리 표daptm:descType 속성에서 사용할 수 있는 값 집합을 정의한다.

는 "daptm:descType" 필드이다. "description" 필드는 각 값의 의도된 목적을 설명한다.

레지스트리 표레지스트리 항목4.8 대본 이벤트 설명에 위치한다.

레지스트리 표 값은 사용자 확장을 위해 예약된 x-로 시작해서는 안 된다 MUST NOT.

H.2.2 <content-descriptor> 레지스트리 표 정의

<content-descriptor>에 대한 레지스트리 표daptm:represents 속성에서 사용할 수 있는 값 집합을 정의한다.

는 "<content-descriptor>" 필드이다. "Description" 필드는 각 값이 나타내는 미디어 콘텐츠의 유형을 설명한다. "Example usage" 필드는 설명된 콘텐츠 유형이 일반적으로 발견되는 대본의 유형을 설명한다.

레지스트리 표레지스트리 항목4.1.6.2 <content-descriptor>에 위치한다.

레지스트리 표 값은 사용자 확장을 위해 예약된 x-로 시작해서는 안 된다 MUST NOT.

I. 다른 TTML 기반 명세와의 호환성

이 절은 비규범적이다.

I.1 개요

이 명세는 [ttml-imsc1.3] 및 [ttml2]의 다른 프로필과 호환되도록 설계되었다. 구체적으로, 이 명세에서 정의된 기능과 확장의 부분집합을 선택함으로써 [ttml-imsc1.3]에 적합하면서 동시에 DAPT 문서인 문서를 만들 수 있다.

I.2 IMSC Text Profile

DAPT 문서가 양쪽의 적합성 요구사항을 만족함으로써 IMSC Text Profile 문서이기도 할 수 있다.

DAPT #serialization 기능은 사실상 IMSC 문서 인코딩 제약의 상위집합이므로, 적합한 DAPT 문서는 IMSC의 인코딩 제약을 만족한다.

IMSC Text Profile과 DAPT는 모두 다른 프로필에서 정의된 어휘, 예를 들어 메타데이터가 문서 인스턴스 안에 존재하는 것을 허용한다. 따라서 IMSC에서 정의된 어휘는 DAPT 문서에서 사용될 수 있지만, 양쪽 프로필을 모두 처리하도록 의도되지 않은 처리기는 metadata 요소 밖에 존재하는 인식되지 않는 어휘를 잘라낼 수 있다.

IMSC는 #resources에 제약을 부과하여 문서 인스턴스 안의 임베드된 오디오를 금지한다. 따라서 이 기능을 사용하는 DAPT 문서는 적합한 IMSC Text Profile 문서일 수 없다.

I.2.1 IMSC에 대한 적합성 신호

이 명세와 [ttml-imsc1.3]에 적합한 문서는, ttp:contentProfiles 속성에 DAPT 1.0 Content ProfileIMSC Text Profile의 지정자를 포함함으로써, 문서가 적합한 다른 프로필과 더불어 양쪽에 대한 적합성을 신호한다.

I.2.2 자막 및 캡션 워크플로에서 DAPT 메타데이터 사용

DAPT 전사 단계와 선택적 번역 단계로 시작하는 자막 및 캡션 저작 워크플로는 IMSC Text Profile 문서의 생성 또는 표현을 지시하기 위해 DAPT 메타데이터를 사용할 수 있다. 예:

  • 화자(등장인물) 데이터는 스타일링을 적용하거나, 일반적으로 사용되는 화자 변경 기호를 텍스트 앞에 붙이거나 화자의 이름을 붙이는 것처럼 화자 변경을 나타내는 콘텐츠를 삽입하는 데 사용될 수 있다.
  • 표현 데이터(즉, 어떤 콘텐츠관련 비디오 객체 안에서 텍스트 콘텐츠가 나타내는 것인지를 설명하는 메타데이터)는 텍스트 콘텐츠의 부분집합을 필터링하거나 선택하는 데 사용될 수 있다. 예를 들어 비대사 사운드 캡션을 포함하거나 제외하는 경우가 이에 해당한다.
  • 언어 및 텍스트 언어 소스 메타데이터는 원하는 언어로 번역된 텍스트를 선택함으로써 번역 자막 문서를 생성하는 데 사용될 수 있다.
  • 언어 및 텍스트 언어 소스 메타데이터는 자막이 번역인지 식별하는 데 사용될 수 있다. 이는 forced content로 표시하거나, 사용자의 선호를 충족하기에 적절한 경우 번역된 자막에 대해 텍스트 음성 변환을 트리거하는 데 쓰일 수 있으며, 이러한 관행은 "spoken subtitles"로 알려져 있다.

J. 감사의 말

편집자들은 이 문서의 절차 또는 콘텐츠에 직접 또는 간접적으로 기여한 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.

K. 참고문헌

K.1 규범적 참고문헌

[BCP47]
언어 식별을 위한 태그. A. Phillips, 편집.; M. Davis, 편집. IETF. 2009년 9월. 현행 모범 사례. URL: https://www.rfc-editor.org/info/rfc5646/
[EBU-R37]
EBU Recommendation R37-2007. 텔레비전 신호의 음향 및 영상 구성요소의 상대적 타이밍. EBU/UER. 2007년 2월. URL: https://tech.ebu.ch/publications/r037
[EBU-TT-3390]
EBU-TT Part M, 메타데이터 정의. EBU/UER. 2017년 5월. URL: https://tech.ebu.ch/publications/tech3390
[MIME-TYPES]
Multipurpose Internet Mail Extensions (MIME) Part Two: 미디어 유형. N. Freed; N. Borenstein. IETF. 1996년 11월. 표준 초안. URL: https://www.rfc-editor.org/info/rfc2046/
[namespaceState]
XML 네임스페이스에서 이름의 처리 상태. Norman Walsh. W3C. 2006년 3월 29일. W3C 작업 초안. URL: https://www.w3.org/TR/namespaceState/
[RFC2119]
RFC에서 요구사항 수준을 나타내기 위해 사용하는 핵심어. S. Bradner. IETF. 1997년 3월. 현행 모범 사례. URL: https://www.rfc-editor.org/info/rfc2119/
[RFC8174]
RFC 2119 핵심어에서 대문자와 소문자의 모호성. B. Leiba. IETF. 2017년 5월. 현행 모범 사례. URL: https://www.rfc-editor.org/info/rfc8174/
[ttml-imsc1.3]
IMSC Text Profile 1.3. Pierre-Anthony Lemieux. W3C. 2026년 5월 21일. W3C 권고안. URL: https://www.w3.org/TR/ttml-imsc1.3/
[TTML1]
Timed Text Markup Language 1 (TTML1) (제3판). Glenn Adams; Pierre-Anthony Lemieux. W3C. 2018년 11월 8일. W3C 권고안. URL: https://www.w3.org/TR/ttml1/
[TTML2]
Timed Text Markup Language 2 (TTML2) (제2판). W3C. 2021-03-09. URL: https://www.w3.org/TR/2021/CR-ttml2-20210309
[UNICODE]
유니코드 표준. Unicode Consortium. URL: https://www.unicode.org/versions/latest/
[w3c-process]
W3C Process Document. Elika J. Etemad (fantasai); Florian Rivoal. W3C. 2025년 8월 18일. URL: https://www.w3.org/policies/process/
[XML]
Extensible Markup Language (XML) 1.0 (제5판). Tim Bray; Jean Paoli; Michael Sperberg-McQueen; Eve Maler; François Yergeau 외. W3C. 2008년 11월 26일. W3C 권고안. URL: https://www.w3.org/TR/xml/
[xml-names]
XML 1.0의 네임스페이스(제3판). Tim Bray; Dave Hollander; Andrew Layman; Richard Tobin; Henry Thompson 외. W3C. 2009년 12월 8일. W3C 권고안. URL: https://www.w3.org/TR/xml-names/
[xmlschema-2]
XML Schema Part 2: Datatypes Second Edition. Paul V. Biron; Ashok Malhotra. W3C. 2004년 10월 28일. W3C 권고안. URL: https://www.w3.org/TR/xmlschema-2/
[XPath]
XML Path Language (XPath) Version 1.0. James Clark; Steven DeRose. W3C. 1999년 11월 16일. W3C 권고안. URL: https://www.w3.org/TR/xpath-10/

K.2 정보성 참고문헌

[BBC-WHP051]
BBC R&D White Paper WHP 051. 오디오 설명: 그것이 무엇이며 어떻게 작동하는가. N.E. Tanton, T. Ware and M. Armstrong. 2002년 10월(2004년 7월 개정). URL: https://www.bbc.co.uk/rd/publications/whitepaper051
[DAPT-REQS]
DAPT 요구사항. Cyril Concolato; Nigel Megitt. W3C. 2025년 5월 12일. W3C 워킹 그룹 노트. URL: https://www.w3.org/TR/dapt-reqs/
[I18N-INLINE-BIDI]
HTML에서의 인라인 마크업 및 양방향 텍스트. W3C. 2021-06-25. URL: https://www.w3.org/International/articles/inline-bidi-markup
[media-accessibility-reqs]
미디어 접근성 사용자 요구사항. Shane McCarron; Michael Cooper; Mark Sadecki. W3C. 2015년 12월 3일. W3C 워킹 그룹 노트. URL: https://www.w3.org/TR/media-accessibility-reqs/
[SSML]
Speech Synthesis Markup Language (SSML) Version 1.1. Daniel Burnett; Zhi Wei Shuang. W3C. 2010년 9월 7일. W3C 권고안. URL: https://www.w3.org/TR/speech-synthesis11/
[uml]
OMG Unified Modeling Language. Open Management Group. OMG. 2015년 3월 1일. 규범. URL: http://www.omg.org/spec/UML/
[WCAG22]
Web Content Accessibility Guidelines (WCAG) 2.2. Michael Cooper; Andrew Kirkpatrick; Alastair Campbell; Rachael Bradley Montgomery; Charles Adams. W3C. 2024년 12월 12일. W3C 권고안. URL: https://www.w3.org/TR/WCAG22/
[webaudio]
Web Audio API 1.1. Paul Adenot; Hongchan Choi. W3C. 2024년 11월 5일. FPWD. URL: https://www.w3.org/TR/webaudio-1.1/
[xml-id]
xml:id Version 1.0. Jonathan Marsh; Daniel Veillard; Norman Walsh. W3C. 2005년 9월 9일. W3C 권고안. URL: https://www.w3.org/TR/xml-id/