This specification provides a draft version of an Audiobook specification for the web. It references the [[pub-manifest]] for its vocabulary. This document also contains references to [[lpf]] and [[sync-media-pub]].

This draft is still under consideration within the Publishing Working Group and is subject to change. The most prominent issues will be referenced in the document with links provided.

Introduction

This specification is a profile of the Publication Manifest specification. It will describe the requirements to create an Audiobook.

An Audiobook is defined as a collection of audio resources grouped together by a reading order, metadata, and resources, all contained in a manifest. This Audiobook can live on the Open Web Platform, or as a packaged entity.

This specification is intended to standardize the audiobooks distribution model on the web and between businesses. It should facilitate different user agent architectures for the consumption of Audiobooks. The primary goal is to bring clarity to a part of the publishing industry currently underserved by standards, while opening Audiobooks to the Open Web Platform and new user agents. This specification does not outline what file types or formats should be used by content creators, only a manifest format for delivering them.

This specification does not define how user agents are expected to render Audiobooks. Details about the types of affordances that user agents can provide to enhance the reading experience for users are instead defined in [[PWP-UCR]].

Terminology

Terms with meanings specific to the publishing industry are capitalized in this document (e.g., "Reading System"). A complete list of these terms and definitions is provided in [[pub-manifest]].

Only the first instance of a term in a section is linked to its definition.

In addition, the following terminology is defined for use in this specification:

Supplemental Content

Supplemental content is any content relating to the audiobook content but not required for the full experience of the publication. Examples of supplemental content include photographs, charts, or data relating to topics mentioned in the audiobook.

Specification

Construction

Bounds

An Audiobook consists of a finite set of resources that represent its content. This extent is known as its bounds and is defined within its manifest — it is obtained from the union of resources listed in the default reading order and resource list.

To determine whether a resource is within the bounds of an Audiobook, user agents MUST compare the absolute URL of a resource to the absolute URLs of the resources obtained from the union. If the resource is identified in the enumeration, it is within the bounds of the Audiobook. All other resources are external to the Audiobook.

Resources within the bounds of a Audiobook do not have to share the same domain.

Primary Entry Page

The primary entry page represents the preferred starting resource for an Audiobook and enables discovery of its manifest.

The primary entry page is an HTML resource that typically introduces the audiobook and provides access to the content. It SHOULD contain the table of contents to facilitate user consumption. The address of the primary entry page is also the canonical identifier (i.e., it serves as its unique identifier) for the audiobook when present.

It is not required that the primary entry page be included in the default reading order, as the Audiobooks profile requires that only audio resources be present. The primary entry page should instead, if present, be included as a resource.

Table of Contents

The table of contents provides a hierarchical list of links that reflects the structural outline of the major sections of the Audiobook and any supplemental content it may contain.

The table of contents is expressed via an [[html]] element (typically a nav element) in one of the resources. This element MUST be identified by the role attribute [[html]] value "doc-toc" [[dpub-aria-1.0]], and MUST be the first element in the document — in document tree order [[dom]] — with that role value.

If the table of contents is not located in the primary entry page, the manifest SHOULD identify the resource that contains the structure.

When an Audiobook contains additional resources (i.e. supplemental content) a table of contents SHOULD be included, the table of contents SHOULD include a link to all resources, and all links SHOULD refer to resources within publication bounds.

Manifest

Introduction

The Audiobook manifest is defined by a set of properties that describe the basic information a user agent requires to process and render an Audiobook. These properties are categorized in the Publication Manifest [[pub-manifest]]. Where these properties are extended from the Publication Manifest is specified in this section.

Manifest Contexts

An Audiobook manifest MUST start by setting the JSON-LD context [[!json-ld]]. The context has the following two major components:

  • the [[schema.org]] context: https://schema.org
  • the publication context: https://www.w3.org/ns/wp-context
		{
			"@context" : ["https://schema.org", "https://www.w3.org/ns/wp-context"],
			…
		}
					

Publication Type

An audiobook's< manifest MUST define its Publication Type using the type term [[!pub-manifest]], [[!json-ld]]. The type MUST be Audiobook [[schema.org]].

	{
			"@context" : ["https://schema.org", "https://www.w3.org/ns/wp-context"],
			"type"     : "Audiobook"
			…
	}
	

Properties

Requirements

The requirements for the expression of Audiobook properties are defined as follows:

REQUIRED:
RECOMMENDED:

These properties do not all have to be serialized in the authored manifest. Refer to each property's definition to determine whether it is required in the manifest or can be compiled into the canonical manifest from other information.

Creators

A creator is an individual or entity responsible for the creation of the Web Publication. The Audiobooks profile can use the full list of creators specified in Web Publications.

The creators list includes two recommended creators for Audiobooks:

		{
		    "type"     : "Audiobook",
		    "@context" : ["https://schema.org","https://www.w3.org/ns/wp-context"],
		    …
		    "url"      : "https://publisher.example.org/janeeyre",
		    "author"   : {
		        "type"  : "Person",
		        "name"  : "Charlotte Bronte"
		    }
		}
		
		{
				"type"		: "Audiobook";
				"@context": ["https://schema.org", "https://www.w3.org/ns/wp-context"],
				…
				"url"			: "https://publisher.example.org/janeeyre",
				"author"	: {
						"type": "Person",
						"name": "Charlotte Bronte"
				}
				"readBy"	: {
						"type": "Person",
						"name": "Ivan Herman",
						"id"	: "https://www.w3.org/People/Ivan/"
				}
		}
						

Duration

A duration is the length of the audio resources in an Audiobook. The duration property is fully defined in the Web Publications specification.

Duration SHOULD be expressed for the entirety of the audiobook as part of the manifest, and SHOULD be present at the item level in the default reading order.

									{
									    "type"     : "Audiobook",
									    "@context" : ["https://schema.org","https://www.w3.org/ns/wp-context"],
									    …
									    "url"      : "https://publisher.example.org/janeeyre",
									    "author"   : {
									        "type"  : "Person",
									        "name"  : "Charlotte Bronte"
									    },
											"duration" : "123456789.123"
									}
								
									{
											"type"     : "Audiobook",
											"@context" : ["https://schema.org","https://www.w3.org/ns/wp-context"],
											…
											"url"      : "https://publisher.example.org/janeeyre",
											"author"   : {
													"type"  : "Person",
													"name"  : "Charlotte Bronte"
											},
											"duration" : "12345.235"
									}
								

Default Reading Order

The default reading order is a specific progression through the audio resources in the audiobook.

The default reading order MUST contain at least one audio resource, which MAY be identified by the type of LinkedResource.

								{
									"@context" : ["https://schema.org", "https://www.w3.org/ns/wp-context"],
									"type"		 : "Audiobook",
									"url"			 : "https://publisher.example.org/janeeyre",
									"name"		 : "Jane Eyre",
									"readingOrder" : [{
										"type"	: "LinkedResource",
										"url"   : "audio/janeeyre.mp3",
										"encodingFormat" : "audio/mp3",
										"name"  : "Jane Eyre",
										"duration" : "124503.123"
									}]
								}
							
								{
									"@context" : ["https://schema.org", "https://www.w3.org/ns/wp-context"],
									"type"		 : "Audiobook",
									"url"			 : "https://publisher.example.org/janeeyre",
									"name"		 : "Jane Eyre",
									"readingOrder" : [{
										"type"	: "LinkedResource",
										"url"   : "audio/part001.wav#0",
										"encodingFormat" : "audio/vnd-wav",
										"name"  : "Chapter 1",
										"duration" : "457.931"
									}, {
										"type"  : "LinkedResource",
										"url"   : "audio/part001.wav#457.932",
										"encodingFormat" : "audio/vnd-wav",
										"name"  : "Chapter 2",
										"duration" : "234.245"
									}]
								}
							

Resource List

The resource list enumerates any additional resources used in the processing and rendering of an audiobook that are not listed in the reading order. It is expressed using the resources property.

If an audiobook includes supplemental content it MUST be referenced in the resource list.

								{
									"@context" : ["https://schema.org", "https://www.w3.org/ns/wp-context"],
									"type"		 : "Audiobook",
									"url"			 : "https://publisher.example.org/janeeyre",
									"name"		 : "Jane Eyre",
									"resources" : [
										"cover.jpg",
										"portrait_CB.jpg",
										"supplement.pdf"
									]
								}
							

Packaging

Audiobooks will be packaged using the method described in the Lightweight Packaging Format note.

Accessibility

The history of the audiobook is rooted in the world of accessibility. To create a fully accessible audiobook, it is recommended to use the Synchronized Media note to create documents where text and audio can be completely synchronized.

To create an accessible audiobook using Synchronized Media, you need to both reference the alternative file on the item in the reading order, as well as list the file in the resources.

					{
						"@context" : ["https://schema.org", "https://www.w3.org/ns/wp-context"],
						"type"		 : "Audiobook",
						"url"      : "https://publisher.example.org/janeeyre",
						"name"     : "Jane Eyre",
						"readingOrder" : [{
							"type"	: "LinkedResource",
							"url"   : "audio/part001.wav#0",
							"encodingFormat" : "audio/vnd-wav",
							"name"  : "Chapter 1",
							"duration" : "457.931",
							"alternative" : "sync-media/part001-1.json"
						}, {
							"type"  : "LinkedResource",
							"url"   : "audio/part001.wav#457.932",
							"encodingFormat" : "audio/vnd-wav",
							"name"  : "Chapter 2",
							"duration" : "234.245",
							"alternative" : "sync-media/part001-2.json"
						}],
						"resources" : [{
				      "type": "LinkedResource",
				      "url": "sync-media/part001-1.json",
				      "encodingFormat" : "application/vnd.wp-sync-media+json"
				    }, {
							"type": "LinkedResource",
							"url" : "sync-media/part001-2.json",
							"encodingFormat" : "application/vnd.wp-sync-media+json"
						}...
						]
					}
				

Security

Placeholder for security issues.

Privacy

Placeholder for privacy issues.

Manifest Examples

Simple Audiobook

A manifest for an audiobook. The canonical version of this manifest is also available.


			

Audiobook with Supplemental Content

A manifest for an audiobook with supplemental content.

					{
						"@context": ["https://schema.org", "https://www.w3/org/ns/wp-context"],
						"type": "Audiobook",
						"id": "https://publisher.example.com/janeeyre",
						"url": "https://publisher.example.com/janeeyre",
						"name": "Jane Eyre",
						"author": "Charlotte Bronte",
						"readBy": "Jane Doe",
						"duration": "123456.789",
						"inLanguage": "en",
						"dateModified": "2019-03-29T15:59:00Z",
						"datePublished": "2019-03-29",

						"readingOrder": [
							{"url": "audio/chapter001.aac", "encodingFormat": "audio/aac", "name": "Chapter 1", "duration": "1234.567"},
							{"url": "audio/chapter002.aac", "encodingFormat": "audio/aac", "name": "Chapter 2", "duration": "890.123"},
							{"url": "audio/chapter003.aac", "encodingFormat": "audio/aac", "name": "Chapter 3", "duration": "456.789"},
							{"url": "audio/chapter004.aac", "encodingFormat": "audio/aac", "name": "Chapter 4", "duration": "987.654"},
							{"url": "audio/chapter005.aac", "encodingFormat": "audio/aac", "name": "Chapter 5", "duration": "321.987"}
						],

						"resources": [
						{"rel": "cover", "url": "images/cover.jpg", "encordingFormat": "image/jpeg"},
						{"rel": "contents", "url": "toc.html", "encodingFormat": "text/html"},
						{"url": "haworth_house.pdf", "encodingFormat": "application/pdf"}
						]
					}
				

Table of Contents Examples

Primary Entry Page with a Table of Contents

A primary entry page with a simple table of contents for an audiobook.

					<head>
				    …
				    <script type="application/ld+json">
				    {
				        "@context"        : ["https://schema.org","https://www.w3.org/ns/wp-context"],
				        "type"            : "Audiobook",
				        …
				        "url"             : "https://publisher.example.org/janeeyre",
				        …
				    }
				    </script>
				    …
				</head>
				<body>
				    …
				    <section role="doc-toc">
							<ol>
							 <li><a href="audio/chapter001.wav">Chapter 1. There was no possibility of taking a walk that day...</a></li>
							 <li><a href="audio/chapter002.wav">Chapter 2. I resisted all the way:...</a></li>
							 <li><a href="audio/chapter003.wav">Chapter 3. The next thing I remember is,...</a></li>
							 …
							</ol>
				    </section>
				    …
				</body>
				

Simple Table of Contents

A table of contents for a simple audiobook.

					<nav role="doc-toc">
						 <h2>JANE EYRE</h2>

						 <ol>
							<li><a href="audio/chapter001.mp3">Chapter 1. There was no possibility of taking a walk that day...</a></li>
							<li><a href="audio/chapter002.mp3">Chapter 2. I resisted all the way:...</a></li>
							<li><a href="audio/chapter003.mp3">Chapter 3. The next thing I remember is,...</a></li>
							…
						 </ol>
						</nav>
				

Table of Contents with Media Fragments

A table of contents using media fragment references to locations in a single audio track.

					<nav role="doc-toc">
						<h2>JANE EYRE</h2>

						<ol>
							<li><a href="https://example.publisher.org/janeeyre/part001.mp3">Chapter 1</a></li>
							<li><a href="https://example.publisher.org/janeeyre/part001.mp3#456.789">Chapter 2</a></li>
							<li><a href="https://example.publisher.org/janeeyre/part001.mp3#1234.567">Chapter 3</a></li>
						</ol>
					</nav>