W3C

SSML 1.1 Implementation Report Plan

Version: 27 August 2009

Contributors:

Daniel C. Burnett, Voxeo (Chief Editor)
双志伟 (Zhi Wei Shuang), IBM
Paolo Baggia, Loquendo
Paul Bagshaw, France Telecom
黄德智 (De Zhi Huang), France Telecom
康永国 (Yongguo Kang), Panasonic
楼晓雁 (Lou Xiaoyan), Toshiba
Scott McGlashan, HP
Laura Ricotti, Loquendo
严峻 (Yan Jun), iFLYTEK


Table of Contents

1. Introduction

The SSML 1.1 Specification entered the Candidate Recommendation period on 13 October 2008.

The planned date for entering Proposed Recommendation is 27 November 2009. Preparation of an Implementation Report is a key criterion for moving beyond the Candidate Recommendation phase. This document describes the requirements for the Implementation Report and the process that the Voice Browser Working Group will follow in preparing the report.

1.1 Implementation Report Objectives

  1. Must verify that the specification is implementable.
  2. Must demonstrate interoperability of implementations of the specification.

1.2 Implementation Report Non-objectives

  1. The IR does not attempt conformance testing of implementations.

2. Work During the Candidate Recommendation Period

During the CR period, the Working Group will carry out the following activities:

  1. Clarification and improvement of the exposition of the specification.
  2. Disposing of Comments that are communicated to the WG during the CR period.
  3. Preparation of an Implementation Report meeting the criteria outlined in this document.

3. Participating in the Implementation Report

You are invited to contribute to the assessment of the W3C SSML 1.1 Specification by participating in the Implementation Report process.

4. Entrance Criteria for the Proposed Recommendation phase

The Voice Browser Working Group established the following entrance criteria for the Proposed Recommendation phase in the Request for CR:

  1. Sufficient reports of implementation experience have been gathered to demonstrate that synthesis processors based on the specification are implementable and have compatible behavior.
  2. Specific Implementation Report Requirements (outlined below) have been met.
  3. The Working Group has formally addressed and responded to all public comments received by the Working Group.

5. Implementation Report Requirements

5.1 Detailed requirements for Implementation Report

  1. Testimonials from implementers will be included in the IR when provided to document the utility and implementability of the specification.
  2. IR must cover all specified features in the specification. For each feature the IR should indicate:
  3. Feature status is a factor in test coverage in the report:

5.2 Notes on Testing

  1. A test report must indicate the outcome of each test. Possible outcomes are "pass", "fail" or "not-impl". "pass" requires output of the synthesis processor that has been judged valid by one or more test validators (see below). Note that the evaluation criteria for some tests are subjective. A report must document the way test output was verified. "not-impl" means the synthesis processor has not implemented the specific feature required by a test.
  2. A test report may contain an additional comment for each test. If a test fails, a comment should be added (see also Detailed requirements for Implementation Report).
  3. Every attempt has been made to keep the tests language-neutral through the use of the Test API described in Appendix A. Tests are written in US English, with the exception of some tests, which are language-dependent.
  4. Some tests contain notes that should be read before executing them. These notes are contained in the instructions inside the tests. See Appendix A for a detailed description of the coding rules.

5.4 Out of Scope

The SSML Implementation Report will not cover:

6. Systems

Note: The testimonials with pink background from "Acme Labs" and "Beta Inc." are just examples and will be replaced with the actually submitted testimonials.

Acme Labs

Exec Summary

The W3C SSML 1.1 Specification is well-written, easily implementable and extremely useful. Acme Labs used it to describe a brief tour in Turin bars to taste the famous drink "Il bicerin".

Beta Inc.

Exec Summary

The W3C SSML 1.1 Specification is extremely useful, easily implementable and well-written. Beta Inc. used it to make waffles, to transcribe telephone calls, to chase roadrunners, and to straighten the Tower of Pisa.

7. Test Classification

7.1 Introduction

The aim of this section is to describe the taxonomy of tests developed for the SSML 1.1 Specification. Some basic assumptions (described in the sections below) led to the development of criteria that were used to categorize different tests according to what would be needed to structure, run, and pass the test. This categorization approach was then verified against each element and attribute described in the SSML 1.1 Specification. The overall work has resulted in a classification of the tests outlined below, where each test assertion has to be labelled.

7.2 Method

It is assumed that most effects generated by SSML testing are only subjectively verifiable via human perception of a given quality or characteristic of the TTS output. Consequently, the evaluation approach is based on subjective assessment methods present in the literature; each test is to be performed by presenting to testers the outputs of one or more SSML documents fed into a synthesis processor. The outputs are to be judged with respect to the perceived (or just detected) subjective effect. This approach is an adaptation of the classical "Paired Comparisons" (PC) method (see [PM], [PC]). Normally, in PC the respondents are presented with two objects at a time and asked to pick the one they prefer or the one that has the higher level of a given attribute. In this case, the task of ranking objects with respect to one feature is not difficult, since only a few characteristics are compared at a time. The simplifications applied were in line with the general recommendation to keep the features to be compared as isolated as possible, since as the number of items increases, the number of comparisons increases geometrically (n*(n -1)/2), and if the number of comparisons is too great, testers may be stressed and no longer carefully discriminate among them.

There are four separate assumptions:

  1. The tests fall into three categories based on how they are to be executed: by giving an "absolute" answer to a single test; by comparing a reference test (raw text or not marked-up text rendered by a synthesis processor) and a marked test (marked-up text with SSML elements); and by comparing two or more marked tests with different features to be assessed. In the test labels below the second and third categories are combined together to be called "paired" comparisons.
  2. In the interest of simplicity, the evaluation results are expressed as either "pass" or "fail"
  3. The tests are classified according to the difficulty of evaluation: a) The ones that generate an effect that is easily detected by a single tester and b) The ones that measure the effect of features which are subject to individual differences. This reduced perception reliability may also result in a single tester generating a less precise answer. In these cases, repeated test sessions from a single user or the use of a panel of testers is suggested. For some of these tests, the effects on processor output can only be assessed properly by an expert: thus the use of expert or well trained testers is recommended.
  4. Almost all the test cases simply result in a series of comparisons, including tests which are intended to distinguish among an ordinal scale of values (i.e. monotonically non-decreasing scale).

These assumptions are reflected in the implementation test table (see below) in the form of additional labels for each test assertion.

7.3 Test categories

Based on the method described above, a two-dimensional test classification was developed. Sections 7.3.1 and 7.3.2 describe the two dimensions, and section 7.3.3 describes the test categories that resulted.

7.3.1 Test Class

Test class identifies a classification of the test assertion based on its testing complexity. A test assertion may belong to one of two possible cases:

7.3.2 Test Level

Test level characterizes a test assertion according to the easiness of discrimination of the audio feature under test.

7.3.3 Test Category

The combination of the two dimensions above results in four different test categories:

8. Test Results

The following table lists all the assertions that were derived from the SSML 1.1 Specification.

The Assert ID column uniquely identifies the assertion and is linked to the corresponding test.

The Spec column identifies the section of the SSML 1.1 Specification from which the assertion was derived.

The Conformance column indicates whether or not the SSML 1.1 Specification requires the synthesis processor to implement the feature described by the test assertion.

The Test Type column indicates whether or not the associated test requires an adaptation to the testing environment. If the test assertion is considered manual, then in the instructions section of the associated test gives more details about how the test must be modified (see Appendix A.1).

Test Category is described in the Test Assertion Categories section. Profile identifies the SSML Profile of the feature. Finally the Assertion column describes the assertion.

Note: An anonymous column for each company that runs the test suite will be added, and each cell will specify "pass" or "fail" to reflect actual submitted implementation results.

Assert ID Spec Conformance Test Type Test Category Profile Assertion
343 [2.1] Required Auto Abs_rating_simple Core The meta element must occur before all other elements and text contained within the root speak element.
344 [2.1] Required Auto Abs_rating_simple Core metadata elements must occur before all other elements and text contained within the root speak element.
345 [2.1] Required Auto Abs_rating_simple Core lexicon elements must occur before all other elements and text contained within the root speak element.
178 [3.1.1] Required Auto Abs_rating_simple Core The version number for this specification is 1.1.
179 [3.1.1] Required Auto Abs_rating_simple Core The xml:lang attribute is required on the element.
180 [3.1.1] Required Auto Abs_rating_simple Core The xml:base attribute may be present on the element.
181 [3.1.1] Required Auto Abs_rating_simple Core The version attribute must be present on the element.
182 [3.1.1] Required Auto Abs_rating_simple Core The onlangfailure attribute is permitted in speak element.
251 [3.1.1] Required Auto Abs_rating_simple Core Before the speak element is executed, the synthesis processor must select a default voice.
252 [3.1.1] Required Manual Abs_rating_simple Core A language speaking failure will occur as soon as the first text is encountered if the language of the text is one that the default voice cannot speak.
389 [3.1.1] Required Auto Abs_rating_simple Core The lookup element can occur in a speak element.
379 [3.1.1.1] Required Auto Paired_Simple Core The startmark can be used to specify that rendering begins from a specific mark. If the startmark is specified, then rendering starts at the startmark. If startmark is not specified, rendering begins at the beginning of the document.
380 [3.1.1.1] Required Auto Paired_Simple Core The end of rendering can be specified using the endmark. If the endmark is specified, then rendering ends at the endmark. If the endmark is not specified, rendering ends at the document end.
381 [3.1.1.1] Required Auto Paired_Simple Core Startmark and endmark can be used to control both the start and end of rendering
382 [3.1.1.1] Required Auto Paired_Simple Core If the startmark is after the endmark, then no audio is generated.
383 [3.1.1.1] Required Auto Abs_rating_simple Core It is an error if the value given for either startmark or endmark is not a valid mark in the document.
340 [3.1.2] Required Auto Abs_rating_simple Core Language information is inherited down the document hierarchy.
341 [3.1.2] Required Auto Abs_rating_simple Core Language information nests, i.e. inner attributes overwrite outer attributes.
3 [3.1.3] Required Auto Abs_rating_simple Core The base URI declaration affects the interpretation of a relative URI specified by the audio element's src attribute.
4 [3.1.3] Required Manual Paired_Simple Core The base URI declaration affects the interpretation of a relative URI specified by the lexicon element's uri attribute.
5 [3.1.3.1] Required Auto Abs_rating_simple Core When both are available, the base URI is defined by xml:base instead of by metadata discovered during a protocol interaction.
6 [3.1.3.1] Required Auto Abs_rating_simple Core When both are available, the base URI is defined by xml:base instead of by the current document.
7 [3.1.3.1] Required Manual Abs_rating_simple Core When both are available, the base URI is defined by metadata discovered during a protocol interaction instead of by the current document.
253 [3.1.4] Required Auto Abs_rating_simple Core xml:id attribute must be unique to the document
254 [3.1.4] Required Auto Abs_rating_simple Core The xml:id attribute is a permitted in p elements.
255 [3.1.4] Required Auto Abs_rating_simple Core The xml:id attribute is a permitted attribute in s elements.
256 [3.1.4] Required Auto Abs_rating_simple Core The xml:id attribute is a permitted attribute in w elements.
333 [3.1.5.1] Required Auto Abs_rating_simple Core The pronunciation information contained within a lexicon document is used for words defined within the enclosing document.
334 [3.1.5.1] Required Auto Abs_rating_simple Core Any number of lexicon elements may occur as immediate children of the speak element.
335 [3.1.5.1] Required Auto Abs_rating_simple Core The lexicon element must have an xml:id attribute.
336 [3.1.5.1] Required Auto Abs_rating_simple Core The name of xml:id attribute must be unique to the current SSML document.
338 [3.1.5.1] Required Auto Abs_rating_simple Core A type attribute is optional to specify the media type of the pronunciation lexicon document.
339 [3.1.5.1] Required Auto Abs_rating_simple Core The default value of the type attribute is application/pls+xml.
346 [3.1.5.1] Required Auto Abs_rating_simple Core The lexicon element MUST have a uri attribute.
348 [3.1.5.1] Required Auto Abs_rating_simple Core The lexicon element MAY have a fetchtimeout attribute that specifies the timeout for fetches.
349 [3.1.5.1] Required Auto Abs_rating_simple Core The lexicon element MAY have a maxage attribute that indicates that the document is willing to use content whose age is no greater than the specified time
350 [3.1.5.1] Required Auto Abs_rating_simple Core The lexicon element MAY have a maxstale attribute that indicates that the document is willing to use content that has exceeded its expiration time by no more than the specified amount of time.
316 [3.1.5.2] Required Auto Abs_rating_simple Core The lookup element must have a ref attribute.
318 [3.1.5.2] Required Auto Abs_rating_simple Core A lookup element may contain other lookup elements.
319 [3.1.5.2] Required Auto Abs_rating_simple Core The child lookup elements have higher precedence.
320 [3.1.5.2] Required Auto Abs_rating_simple Core The audio element can occur into lookup element.
321 [3.1.5.2] Required Auto Abs_rating_simple Core The break element can occur into lookup element.
322 [3.1.5.2] Required Auto Abs_rating_simple Core The emphasis element can occur into lookup element.
323 [3.1.5.2] Required Auto Abs_rating_simple Core The lang element can occur into lookup element.
324 [3.1.5.2] Required Auto Abs_rating_simple Core The mark element can occur into lookup element.
325 [3.1.5.2] Required Auto Abs_rating_simple Core The p element can occur into lookup element.
326 [3.1.5.2] Required Auto Abs_rating_simple Core The phoneme element can occur into lookup element.
327 [3.1.5.2] Required Auto Abs_rating_simple Core The prosody element can occur into lookup element.
328 [3.1.5.2] Required Auto Abs_rating_simple Core The say-as element can occur into lookup element.
329 [3.1.5.2] Required Auto Abs_rating_simple Core The sub element can occur into lookup element.
330 [3.1.5.2] Required Auto Abs_rating_simple Core The s element can occur into lookup element.
331 [3.1.5.2] Required Auto Abs_rating_simple Core The voice element can occur into lookup element.
332 [3.1.5.2] Required Auto Abs_rating_simple Core The w element can occur into lookup element.
8 [3.1.6] Required Manual Abs_rating_simple Core The seeAlso property of name attribute is used to specify a resource that might provide additional metadata information about the content.
9 [3.1.6] Required Auto Abs_rating_simple Core Either a name or http-equiv attribute is required.
10 [3.1.6] Required Auto Abs_rating_simple Core It is an error to provide both name and http-equiv attributes.
11 [3.1.7] Required Manual Abs_rating_simple Core The metadata element is a container in which information about the document can be placed using a metadata schema.
12 [3.1.7] Required Auto Abs_rating_simple Core Any metadata schema can be used with metadata, but it is recommended that the Resource Description Format (RDF) schema [RDF-SCHEMA] be used in conjunction with the general metadata properties defined in the Dublin Core Metadata Initiative [DC].
361 [3.1.8.1] Required Auto Abs_rating_simple Core The lookup element can occur in a p element.
362 [3.1.8.1] Required Auto Abs_rating_simple Core The lookup element can occur in a s element.
193 [3.1.8.2] Required Auto Paired_Complex Core The token element allows the author to indicate its content is a token and to eliminate token (word) segmentation ambiguities of the synthesis processor.
195 [3.1.8.2] Required Auto Paired_Complex Core xml:lang is a defined attribute on the token element to identify the written language of the content.
196 [3.1.8.2] Required Auto Abs_rating_simple Core xml:id is a defined attribute on the token element.
199 [3.1.8.2] Required Auto Abs_rating_simple Core The text contents of the token element and its subelements are together considered to be one token for lexical lookup purposes as follows:1. All markup within the token element is removed (leaving the contents of the markup). 2. All remaining text is concatenated together in the order in which it appears in the document. 3. Leading and trailing spaces are removed from this single block of text. 4. Multiple contiguous white space characters are converted into a single space. 5. The result is treated as a sinjunyan@iflytek.com
200 [3.1.8.2] Required Auto Abs_rating_simple Core role is an OPTIONAL defined attribute on the token element.
201 [3.1.8.2] Required Auto Abs_rating_simple Core The role attribute takes as its value one or more white-space separated QNames.
202 [3.1.8.2] Required Auto Abs_rating_simple Core The w element can contain text to be rendered.
203 [3.1.8.2] Required Auto Abs_rating_simple Core The audio element can occur in a w element.
204 [3.1.8.2] Required Auto Abs_rating_simple Core The break element can occur in a w element.
205 [3.1.8.2] Required Auto Abs_rating_simple Core The emphasis element can occur in a w element.
206 [3.1.8.2] Required Auto Abs_rating_simple Core The mark element can occur in a w element.
207 [3.1.8.2] Required Auto Abs_rating_simple Core The phoneme element can occur in a w element.
208 [3.1.8.2] Required Auto Abs_rating_simple Core The prosody element can occur in a w element.
209 [3.1.8.2] Required Auto Abs_rating_simple Core The say-as element can occur in a w element.
210 [3.1.8.2] Required Auto Abs_rating_simple Core The sub element can occur in a w element.
212 [3.1.8.2] Required Auto Abs_rating_simple Core The w element can occur in a audio element.
213 [3.1.8.2] Required Auto Abs_rating_simple Core The w element can occur in a emphasis element.
214 [3.1.8.2] Required Auto Abs_rating_simple Core The w element can occur in a lang element.
215 [3.1.8.2] Required Auto Abs_rating_simple Core The w element can occur in a lookup element.
216 [3.1.8.2] Required Auto Abs_rating_simple Core The w element can occur in a prosody element.
217 [3.1.8.2] Required Auto Abs_rating_simple Core The w element can occur in a speak element.
218 [3.1.8.2] Required Auto Abs_rating_simple Core The w element can occur in a p element.
219 [3.1.8.2] Required Auto Abs_rating_simple Core The w element can occur in a s element.
220 [3.1.8.2] Required Auto Abs_rating_simple Core The w element can occur in a voice element.
347 [3.1.8.2] Required Auto Paired_Complex Core The w element is an alias for the token element.
13 [3.1.9] Required Manual Paired_Simple Core When the value for the interpret-as attribute is unknown or unsupported by a processor, it must render the contained text as if no interpret-as value were specified.
14 [3.1.9] Required Manual Paired_Simple Core When the value for the format attribute is unknown or unsupported by a processor, it must render the contained text as if no format value were specified.
15 [3.1.9] Required Manual Abs_rating_simple Core The interpret-as attribute is always required.
16 [3.1.9] Required Manual Abs_rating_simple Core The format attribute is optional.
17 [3.1.9] Required Manual Abs_rating_simple Core When the content of the element contains other text in addition to the indicated content type, the synthesis processor must attempt to render such text.
18 [3.1.9] Optional Manual Abs_rating_simple Core A synthesis processor should pronounce the contained text in a manner in which such content is normally produced for the language.
19 [3.1.9] Required Manual Paired_Simple Core The detail attribute can be used for all say-as interpret-as types.
20 [3.1.9] Required Manual Paired_Simple Core Every value of the detail attribute must render all of the informational content in the contained text.
21 [3.1.9] Required Manual Paired_Simple Core If the detail attribute is not specified, the level of detail that is produced by the synthesis processor depends on the text content and the language.
22 [3.1.9] Required Manual Paired_Simple Core When the value for the detail attribute is unknown or unsupported by a processor, it must render the contained text as if no value were specified for the detail attribute.
23 [3.1.9] Required Manual Abs_rating_simple Core The say-as element can only contain text to be rendered.
24 [3.1.9] Required Manual Abs_rating_simple Core When the content of the say-as element contains additional text next to the content that is in the indicated format and interpret-as type, then this additional text MUST be rendered.
25 [3.1.9] Required Manual Abs_rating_simple Core When the content of the say-as element contains no content in the indicated interpret-as type or format, the processor must render the content as if the attributes are not present.
26 [3.1.9] Optional Manual Abs_rating_simple Core When the content of the say-as element contains no content in the indicated interpret-as type or format the processor should notify the environment of the mismatch.
183 [3.1.10] Required Auto Paired_Simple Core The phoneme element may be empty.
184 [3.1.10] Required Manual Paired_Simple Core The phoneme element provides a phonetic pronunciation for the contained text.
185 [3.1.10] Required Manual Abs_rating_simple Core The ph attribute is a required attribute that specifies the phoneme string.
186 [3.1.10] Required Manual Paired_Simple Core The alphabet attribute is an optional attribute that specifies the phonetic alphabet. The default value is processor-specific.
187 [3.1.10] Optional Manual Paired_Simple Core Synthesis processors should support a value for alphabet of "ipa", corresponding to characters composing the International Phonetic Alphabet [IPA].
188 [3.1.10] Required Manual Abs_rating_simple Core It is an error if a value for alphabet is specified that is not known or cannot be applied by a synthesis processor.
189 [3.1.10] Required Manual Abs_rating_simple Core No elements can occur within the content of the phoneme element
191 [3.1.10] Optional Manual Abs_rating_simple Core For processors that support IPA, the processor must syntactically accept all legal ph values.
192 [3.1.10] Optional Auto Abs_rating_simple Core For processors supporting the IPA alphabet, the processor should produce output when given unicode IPA codes that can reasonably be considered to belong to the current language.
393 [3.1.10] Required Auto Abs_rating_simple Core The type attribute is an optional attribute that indicates additional information about how the pronunciation information is to be interpreted. One of the allowed values for this attribute is "default", which has no implications.
394 [3.1.10] Required Manual Abs_rating_simple Core The type attribute is an optional attribute that indicates additional information about how the pronunciation information is to be interpreted. One of the allowed values for this attribute is "ruby", which indicates that the pronunciation information is from ruby text.
395 [3.1.10] Required Auto Paired_Simple Core The default value of the 'type' attribute is "default"
190 [3.1.10.1] Required Manual Abs_rating_simple Core The only valid values for the alphabet attribute are "ipa",registered values and vendor-defined strings of the form "x-organization" or "x-organization-alphabet".
27 [3.1.11] Required Auto Abs_rating_simple Core The sub element is employed to indicate that the specified text replaces the contained text for pronunciation.
28 [3.1.11] Required Auto Abs_rating_simple Core The alias attribute is required.
30 [3.1.11] Optional Auto Paired_Simple Core The processor should apply text normalization to the alias value.
31 [3.1.11] Required Auto Abs_rating_simple Core The sub element can only contain text (no elements).
235 [3.1.12] Required Auto Abs_rating_simple Core The lang element must have an xml:lang attribute.
236 [3.1.12] Required Auto Abs_rating_simple Core There is no text structure associated with the language change indicated by the lang element.It may be used to specify the language of the content at a level other than a paragraph, sentence or word level.
237 [3.1.12] Required Auto Abs_rating_simple Core The lang element can contain text to be rendered.
238 [3.1.12] Required Manual Abs_rating_simple Core The lang element can contain the audio element.
239 [3.1.12] Required Auto Abs_rating_simple Core The lang element can contain the break element.
240 [3.1.12] Required Auto Abs_rating_simple Core The lang element can contain the emphasis element.
241 [3.1.12] Required Auto Abs_rating_simple Core The lang element can contain the p element.
242 [3.1.12] Required Auto Abs_rating_simple Core The lang element can contain the phoneme element.
243 [3.1.12] Required Auto Abs_rating_simple Core The lang element can contain the prosody element.
244 [3.1.12] Required Auto Abs_rating_simple Core The lang element can contain the say-as element.
245 [3.1.12] Required Auto Abs_rating_simple Core The lang element can contain the sub element.
246 [3.1.12] Required Auto Abs_rating_simple Core The lang element can contain the s element.
247 [3.1.12] Required Auto Abs_rating_simple Core The lang element can contain the voice element.
248 [3.1.12] Required Auto Abs_rating_simple Core The lang element can contain the w element.
249 [3.1.12] Required Auto Abs_rating_simple Core The lang element can contain the lang element.
250 [3.1.12] Required Auto Abs_rating_simple Core The lang element can contain the mark element.
367 [3.1.12] Required Auto Abs_rating_simple Core The lookup element can occur in a lang element.
221 [3.1.13] Required Auto Abs_rating_simple Core The onlangfailure attribute is a defined attribute for the speak element.
222 [3.1.13] Required Auto Abs_rating_simple Core The onlangfailure attribute is a defined attribute for the lang element.
223 [3.1.13] Required Auto Abs_rating_simple Core The onlangfailure attribute is a defined attribute for the desc element.
224 [3.1.13] Required Auto Abs_rating_simple Core The onlangfailure attribute is a defined attribute for the p element.
225 [3.1.13] Required Auto Abs_rating_simple Core The onlangfailure attribute is a defined attribute for the s element.
226 [3.1.13] Required Auto Abs_rating_simple Core The onlangfailure attribute is a defined attribute for the w element.
227 [3.1.13] Required Auto Abs_rating_simple Core A language speaking failure occurs whenever the synthesis processor decides that the currently-selected voice cannot speak the declared language of the text.
228 [3.1.13] Required Manual Abs_rating_simple Core If the onlangfailure attribute is set to "changevoice", the processor must report a language speaking failure and, if a voice exists that can speak the language, the processor must switch to that voice and speak the content.
229 [3.1.13] Required Auto Abs_rating_simple Core If the onlangfailure attribute is set to "changevoice", the processor must report a language speaking failure and, if a voice does not exist that can speak the language, the processor must choose another behavior (either ignoretext or ignorelang).
230 [3.1.13] Required Auto Abs_rating_simple Core If the onlangfailure attribute is set to "ignoretext", the processor must report a language speaking failure and will not attempt to render the text that is in the failed language.
231 [3.1.13] Required Auto Abs_rating_simple Core If the onlangfailure attribute is set to "ignorelang", the processor must report a language speaking failure and will ignore the change in language and speak as if the content were in the previous language.
232 [3.1.13] Required Manual Abs_rating_simple Core If the onlangfailure attribute is set to "processorchoice", the processor must report a language speaking failure and chooses the behavior (either changevoice, ignoretext, or ignorelang).
233 [3.1.13] Required Auto Abs_rating_simple Core The value of this attribute is inherited down the document hierarchy.
234 [3.1.13] Required Manual Abs_rating_simple Core The top-level default value for this attribute is "processorchoice".
257 [3.2.1] Required Auto Abs_rating_simple Core gender: attribute indicating the preferred gender of the voice to speak the contained text. value : "female".
258 [3.2.1] Required Auto Abs_rating_simple Core gender: attribute indicating the preferred gender of the voice to speak the contained text. value : "male".
259 [3.2.1] Required Auto Abs_rating_simple Core gender: attribute indicating the preferred gender of the voice to speak the contained text. value : "neutral".
260 [3.2.1] Required Auto Abs_rating_simple Core age: attribute indicating the preferred age of the voice to speak the contained text. integer value : 5
261 [3.2.1] Required Manual Abs_rating_simple Core variant: attribute indicating a preferred variant of the other voice characteristics to speak the contained text. Integer value : manual
262 [3.2.1] Required Manual Abs_rating_simple Core name: attribute indicating a platform-specific voice name to speak the contained text. value : manual.
263 [3.2.1] Required Manual Abs_rating_simple Core name: attribute indicating a platform-specific voice name to speak the contained text. The value may be a space-separated list of names. Value : manual.
267 [3.2.1] Required Manual Abs_rating_simple Core Although each attribute individually is optional, at least one must be specified any time the voice element is used.
268 [3.2.1] Optional Manual Paired_Complex Core Relative changes in prosodic parameters should be carried across voice changes. Test with pitch attribute.
269 [3.2.1] Optional Manual Paired_Complex Core Relative changes in prosodic parameters should be carried across voice changes. Test with range attribute.
270 [3.2.1] Optional Manual Paired_Complex Core Relative changes in prosodic parameters should be carried across voice changes. Test with rate attribute.
271 [3.2.1] Optional Manual Paired_Complex Core Relative changes in prosodic parameters should be carried across voice changes. Test with volume attribute.
272 [3.2.1] Required Auto Abs_rating_simple Core gender: attribute indicating the preferred gender of the voice to speak the contained text. value : "".
273 [3.2.1] Required Auto Abs_rating_simple Core age: attribute indicating the preferred age of the voice to speak the contained text. value : ""
274 [3.2.1] Required Auto Abs_rating_simple Core variant: attribute indicating a preferred variant of the other voice characteristics to speak the contained text. value : ""
275 [3.2.1] Required Manual Abs_rating_simple Core languages: optional attribute indicating the list of languages the voice can speak, with optional accent indication per language, value: "en:zh zh:zh".
276 [3.2.1] Required Manual Abs_rating_simple Core languages: optional attribute indicating the list of languages the voice can speak, with optional accent indication per language, value: "".
277 [3.2.1] Required Manual Abs_rating_simple Core A voice satisfies the languages feature if, for each language/accent pair in the list, the voice is documented (see Voice descriptions) as reading/speaking a language that matches the Extended Language Range given by language according to the Extended Filtering matching algorithm [BCP47, Matching of Language Tags (3.3.2)]
278 [3.2.1] Required Manual Abs_rating_simple Core A voice satisfies the languages feature if, for each language/accent pair in the list, if an accent is given, the voice is documented (see Voice descriptions) as reading/speaking the language above with an accent that matches the Extended Language Range given by accent according to the Extended Filtering matching algorithm [BCP47, Matching of Language Tags (3.3.2)], except that the script and extension subtags of the accent MUST be ignored by the synthesis processor.
279 [3.2.1] Required Manual Abs_rating_simple Core Language/accent pairs must be separated by white space
280 [3.2.1] Required Auto Abs_rating_simple Core The top-level default value for all feature attributes is "", the empty string.
281 [3.2.1] Required Manual Abs_rating_simple Core If no voice is identified for which the values of all voice feature attributes listed in the required attribute value are matched, there is voice selection failure.
282 [3.2.1] Required Manual Abs_rating_simple Core Valid values of required are a space-separated list composed of values from the list of feature names: "name", "languages", "gender", "age", "variant" or the empty string "".
283 [3.2.1] Required Manual Abs_rating_simple Core The default value for required attribute is "languages".
284 [3.2.1] Required Manual Abs_rating_simple Core ordering: OPTIONAL attribute that specifies the matching priority ordering for voice selection.
285 [3.2.1] Required Auto Abs_rating_simple Core Valid values of ordering are a space-separated list composed of values from the list of feature names: "name", "languages", "gender", "age", "variant" or the empty string "".
287 [3.2.1] Required Auto Abs_rating_simple Core The default value of ordering attribute is "languages".
288 [3.2.1] Required Manual Abs_rating_simple Core If there is voice selection failure and onvoicefailure="priorityselect",then if there is at least one voice that matches by feature priority, one such voice must be used.
291 [3.2.1] Required Manual Abs_rating_simple Core A conforming synthesis processor must report an onvoicefailure if voice selection is not successful.
292 [3.2.1] Required Manual Abs_rating_simple Core The default value for onvoicefailure attribute is "priorityselect".
293 [3.2.1] Required Manual Abs_rating_simple Core If one or more available voice is identified for which the values of all voice feature attributes listed in the required attribute value are matched, then voice selection is successful.
294 [3.2.1] Required Manual Abs_rating_simple Core priorityselect: the synthesis processor uses the values of all voice feature attributes to select a voice by feature priority, where the starting candidate set is the set of all available voices.
295 [3.2.1] Required Manual Abs_rating_simple Core keepexisting - if voice selection fail the voice does not change.
296 [3.2.1] Required Manual Abs_rating_simple Core processorchoice - if voice selection failthe synthesis processor chooses the behavior (either priorityselect or keepexisting).
297 [3.2.1] Required Manual Abs_rating_simple Core Although each attribute individually is optional, it is an error if no attributes are specified when the voice element is used.
299 [3.2.1] Required Manual Abs_rating_simple Core When the value of the required attribute is the empty string "", if one or more voices are available any of the voices is considered a successful match; otherwise there is voice selection failure.
300 [3.2.1] Required Manual Abs_rating_simple Core If one or more voices are identified for which the values of all voice feature attributes listed in the required attribute value are matched, then out of those voices, one that matches by feature priority must be selected.
301 [3.2.1] Required Manual Abs_rating_simple Core voice attributes are inherited down the tree including to within elements that change the language.
302 [3.2.1] Required Manual Abs_rating_simple Core if a voice is changed by the processor as a result of a language speaking failure, the prior voice is restored when that voice is again able to speak the content.
304 [3.2.1] Required Manual Abs_rating_simple Core changes in voice are scoped and apply only to the content of the element in which the change occurred.
351 [3.2.1] Required Auto Abs_rating_simple Core The voice element can contain audio element.
352 [3.2.1] Required Auto Paired_Complex Core The voice element can contain the break element.
353 [3.2.1] Required Auto Abs_rating_simple Core The voice element can contain emphasis element.
354 [3.2.1] Required Auto Abs_rating_simple Core The voice element can contain lang element.
355 [3.2.1] Required Auto Abs_rating_simple Core The voice element can contain mark element.
356 [3.2.1] Required Auto Abs_rating_simple Core The voice element can contain p, s, w element.
357 [3.2.1] Required Auto Abs_rating_simple Core The voice element can contain phoneme element.
358 [3.2.1] Required Auto Abs_rating_simple Core The voice element can contain prosody element.
359 [3.2.1] Required Auto Abs_rating_simple Core The voice element can contain say-as element.
360 [3.2.1] Required Auto Abs_rating_simple Core The voice element can contain sub element.
363 [3.2.1] Required Auto Abs_rating_simple Core The lookup element can occur in a voice element.
32 [3.2.2] Required Auto Abs_rating_simple Core level: the level attribute indicates the strength of emphasis to be applied. Value : "moderate".
33 [3.2.2] Required Auto Paired_Complex Core level: the level attribute indicates the strength of emphasis to be applied. The default level is "moderate".
34 [3.2.2] Required Auto Paired_Complex Core level: the level attribute indicates the strength of emphasis to be applied. "strong" >= "moderate".
35 [3.2.2] Required Auto Paired_Complex Core level: the optional level attribute indicates the strength of emphasis to be applied. Value : "strong".
36 [3.2.2] Required Auto Paired_Simple Core level: The "none" level is used to prevent the speech synthesis processor from emphasizing words that it might typically emphasize.
37 [3.2.2] Required Manual Paired_Simple Core comparison with/without 'none' emphasis on specified sentences. must be customized by hand : IR participant must write a sentence where their TTS automatically puts emphasis.
38 [3.2.2] Required Manual Paired_Complex Core level: The "reduced" level is effectively the opposite of emphasizing a word.
39 [3.2.2] Required Auto Paired_Complex Core level: the level attribute indicates the strength of emphasis to be applied. "moderate" >= "none".
366 [3.2.2] Required Auto Abs_rating_simple Core The lookup element can occur in an emphasis element.
40 [3.2.3] Required Auto Paired_Simple Core A break with no attributes, must produce a break with a prosodic strength greater than that which the processor would otherwise have used if no break element was supplied.
41 [3.2.3] Required Auto Abs_rating_simple Core time and strength: The time and strength attributes are optional for the break element.
42 [3.2.3] Required Auto Abs_rating_simple Core The break element must always be empty.
43 [3.2.3] Required Auto Abs_rating_simple Core strength: legal value: "x-strong".
44 [3.2.3] Required Auto Abs_rating_simple Core strength: legal value: "strong".
45 [3.2.3] Required Auto Abs_rating_simple Core strength: legal value: "medium".
46 [3.2.3] Required Auto Abs_rating_simple Core strength: legal value: "weak".
47 [3.2.3] Required Auto Abs_rating_simple Core strength: legal value: "x-weak".
48 [3.2.3] Required Auto Abs_rating_simple Core strength: legal value: "none".
49 [3.2.3] Required Auto Paired_Simple Core strength: default value == medium.
50 [3.2.3] Required Auto Abs_rating_simple Core time: legal value in seconds "s".
51 [3.2.3] Required Auto Abs_rating_simple Core time: legal value in milliseconds "ms".
52 [3.2.3] Required Auto Paired_Complex Core strength: comparative test, "weak" equal to or stronger than "x-weak"
53 [3.2.3] Required Auto Paired_Complex Core strength: comparative test, "medium" equal to or stronger than "weak".
54 [3.2.3] Required Auto Paired_Complex Core strength: comparative test, "strong" equal to or stronger than "medium".
55 [3.2.3] Required Auto Paired_Complex Core strength: comparative test, "x-strong" equal to or stronger than "strong".
56 [3.2.3] Required Auto Abs_rating_simple Core If both 'strength' and 'time' are supplied, the processor will insert a break with a duration as specified by the time attribute, with other prosodic changes in the output based on the value of the strength attribute.
57 [3.2.3] Optional Manual Paired_Simple Core strength: comparative test, the value "none" indicates that no prosodic break boundary should be outputted, which can be used to prevent a prosodic break which the processor would otherwise produce.
58 [3.2.4] Required Auto Abs_rating_simple Core Although each attribute individually is optional, it is an error if no attributes are specified.
59 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value, number followed by "Hz".
60 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value, relative positive change, "+" number followed by "Hz".
61 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value, relative negative change, "-" number followed by "Hz".
62 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value, relative negative semitone change, "-" number followed by "st".
63 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value, relative positive semitone change, "+" number followed by "st".
64 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value: "x-high".
65 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value: "high".
66 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value: "medium".
67 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value: "low".
68 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value: "x-low".
69 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value: "default".
70 [3.2.4] Required Auto Paired_Simple Core pitch: comparative test, no pitch is equal to "default".
71 [3.2.4] Required Auto Paired_Simple Core pitch: comparative test, "low" higher or equal then "x-low".
72 [3.2.4] Required Auto Paired_Simple Core pitch: comparative test, "medium" higher or equal then "low".
73 [3.2.4] Required Auto Paired_Simple Core pitch: comparative test, "high" higher than or equal to "medium".
74 [3.2.4] Required Auto Paired_Simple Core pitch: comparative test, "x-high" higher than or equal to "high".
75 [3.2.4] Required Auto Abs_rating_simple Core range: legal value, number followed by "Hz".
76 [3.2.4] Required Auto Abs_rating_simple Core range: legal value, relative positive change, "+" number followed by "Hz".
77 [3.2.4] Required Auto Abs_rating_simple Core range: legal value, relative negative change, "-" number followed by "Hz".
78 [3.2.4] Required Auto Abs_rating_simple Core range: legal value, relative negative semitone change, "-" number followed by "st".
79 [3.2.4] Required Auto Abs_rating_simple Core range: legal value, relative positive semitone change, "+" number followed by "st".
80 [3.2.4] Required Auto Abs_rating_simple Core range: legal value: "x-high".
81 [3.2.4] Required Auto Abs_rating_simple Core range: legal value: "high".
82 [3.2.4] Required Auto Abs_rating_simple Core range: legal value: "medium".
83 [3.2.4] Required Auto Abs_rating_simple Core range: legal value: "low".
84 [3.2.4] Required Auto Abs_rating_simple Core range: legal value: "x-low".
85 [3.2.4] Required Auto Abs_rating_simple Core range: legal value: "default".
86 [3.2.4] Required Auto Paired_Complex Core range: comparative test, no range is equal to "default".
87 [3.2.4] Required Auto Paired_Complex Core range: comparative test, "low" higher than or equal to "x-low".
88 [3.2.4] Required Auto Paired_Complex Core range: comparative test, "medium" higher than or equal to "low".
89 [3.2.4] Required Auto Paired_Complex Core range: comparative test, "high" higher than or equal to "medium".
90 [3.2.4] Required Auto Paired_Complex Core range: comparative test, "x-high" higher than or equal to "high".
92 [3.2.4] Required Auto Abs_rating_simple Core rate: legal value: "x-fast".
93 [3.2.4] Required Auto Abs_rating_simple Core rate: legal value: "fast".
94 [3.2.4] Required Auto Abs_rating_simple Core rate: legal value: "medium".
95 [3.2.4] Required Auto Abs_rating_simple Core rate: legal value: "slow".
96 [3.2.4] Required Auto Abs_rating_simple Core rate: legal value: "x-slow".
97 [3.2.4] Required Auto Abs_rating_simple Core rate: legal value: "default".
98 [3.2.4] Required Auto Paired_Complex Core rate: comparative test, no rate is equal to "default".
99 [3.2.4] Required Auto Paired_Complex Core rate: comparative test, "slow" faster than or equal to "x-slow".
100 [3.2.4] Required Auto Paired_Complex Core rate: comparative test, "medium" faster than or equal to "slow".
101 [3.2.4] Required Auto Paired_Complex Core rate: comparative test, "fast" faster than or equal to "medium".
102 [3.2.4] Required Auto Paired_Complex Core rate: comparative test, "x-fast" faster than or equal to "fast".
103 [3.2.4] Required Auto Abs_rating_simple Core duration: legal value in seconds.
104 [3.2.4] Required Auto Abs_rating_simple Core duration: legal value in milliseconds.
106 [3.2.4] Required Auto Abs_rating_simple Core volume: legal value, a number preceded by "+" and immediately followed by "dB".
107 [3.2.4] Required Auto Abs_rating_simple Core volume: legal value, a number preceded by "-" and immediately followed by "dB".
108 [3.2.4] Required Auto Abs_rating_simple Core volume: legal value: "x-loud".
109 [3.2.4] Required Auto Abs_rating_simple Core volume: legal value: "loud".
110 [3.2.4] Required Auto Abs_rating_simple Core volume: legal value: "medium".
111 [3.2.4] Required Auto Abs_rating_simple Core volume: legal value: "soft".
112 [3.2.4] Required Auto Abs_rating_simple Core volume: legal value: "x-soft".
113 [3.2.4] Required Auto Abs_rating_simple Core volume: legal value: "silent".
114 [3.2.4] Required Auto Abs_rating_simple Core volume: legal value: "default".
115 [3.2.4] Optional Auto Paired_Complex Core volume: comparative test, no volume is equal to "default".
117 [3.2.4] Required Auto Paired_Simple Core volume: comparative test, "silent" amounts to specifying minus infinity decibels (dB).
118 [3.2.4] Required Auto Paired_Complex Core volume: comparative test, "soft" louder than or equal to "x-soft".
119 [3.2.4] Required Auto Paired_Complex Core volume: comparative test, "medium" louder than or equal to "soft".
120 [3.2.4] Required Auto Paired_Complex Core volume: comparative test, "loud" louder than or equal to "medium".
121 [3.2.4] Required Auto Paired_Complex Core volume: comparative test, "x-loud" louder than or equal to "loud".
122 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value, relative negative percentage change, "-" number followed by "%".
123 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value, number followed by "Hz".
125 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value, relative positive percentage change, "+" number followed by "%".
126 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value, relative positive change, "+" number followed by "Hz".
127 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value, relative negative change, "-" number followed by "Hz".
128 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value, relative negative semitone change, "-" number followed by "st".
129 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value, relative positive semitone change, "+" number followed by "st".
130 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value: "x-high".
131 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value: "high".
132 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value: "medium".
133 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value: "low".
134 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value: "x-low".
135 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value: "default".
136 [3.2.4] Required Auto Paired_Complex Core contour: comparative test, time positions less then 0% are ignored.
137 [3.2.4] Required Auto Paired_Complex Core contour: comparative test, time positions greater then 100% are ignored.
138 [3.2.4] Required Auto Abs_rating_complex Core contour: comparative test, relative values for pitch are relative to the pitch just before the contained text.
139 [3.2.4] Required Auto Paired_Complex Core contour: comparative test, contour takes precedence over pitch.
140 [3.2.4] Required Auto Paired_Complex Core contour: comparative test, contour takes precedence over range.
142 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value, relative positive percentage change, "+" number followed by "%".
143 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value, relative negative percentage change, "-" number followed by "%".
145 [3.2.4] Required Auto Abs_rating_complex Core range: legal value, relative positive percentage change, "+" number followed by "%".
146 [3.2.4] Required Auto Abs_rating_complex Core range: legal value, relative negative percentage change, "-" number followed by "%".
147 [3.2.4] Required Auto Abs_rating_simple Core rate: legal value, relative percentage change, number followed by "%".
153 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value, "Hz" is case-sensitive.
154 [3.2.4] Required Auto Abs_rating_simple Core pitch: legal value, "st" is case-sensitive.
155 [3.2.4] Required Auto Abs_rating_simple Core range: legal value, "Hz" is case-sensitive.
156 [3.2.4] Required Auto Abs_rating_simple Core range: legal value, "st" is case-sensitive.
158 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value, "Hz" is case-sensitive.
159 [3.2.4] Required Auto Abs_rating_simple Core contour: legal value, "st" is case-sensitive.
160 [3.2.4] Required Auto Paired_Simple Core duration: comparative test, duration takes precedence over rate.
161 [3.2.4] Optional Auto Abs_rating_complex Core rate: the default rate for a voice should be such that it is experienced as a normal speaking rate for the voice when reading aloud text.
364 [3.2.4] Required Auto Abs_rating_simple Core The lookup element can occur in a prosody element.
162 [3.3.1] Required Manual Abs_rating_simple Core If text only output is not required, the processor must try to play the referenced audio document (Raw (headerless) 8kHz 8-bit mono mu-law [PCM] single channel).
163 [3.3.1] Required Auto Paired_Simple Core If the audio document cannot be played and text only output is not required, the alternate content must be rendered. The alternate content may be empty.
164 [3.3.1] Required Auto Paired_Simple Core If the alternate content contains an audio element that cannot be played, the processor must recursively attempt to find its alternate content to render.
165 [3.3.1] Optional Auto Abs_rating_simple Core If the audio element is not successfully rendered, the synthesis processor should continue processing and should notify the hosting environment.
166 [3.3.1] Required Auto Paired_Simple Core If the audio document cannot be played and text only output is not required, the alternate content must be rendered. The alternate content may contain text.
167 [3.3.1] Required Auto Paired_Simple Core If the audio document cannot be played and text only output is not required, the alternate content must be rendered. The alternate content may contain other markup.
168 [3.3.1] Required Auto Paired_Simple Core If the audio document cannot be played and text only output is not required, the alternate content must be rendered. The alternate content may contain desc elements.
169 [3.3.1] Required Auto Paired_Simple Core If the audio document cannot be played and text only output is not required, the alternate content must be rendered. The alternate content may contain other audio elements.
170 [3.3.1] Required Manual Abs_rating_simple Core If text only output is not required, the processor must try to play the referenced audio document (Raw (headerless) 8kHz 8-bit mono A-law [PCM] single channel).
171 [3.3.1] Required Auto Abs_rating_simple Core If text only output is not required, the processor must try to play the referenced audio document (WAV (RIFF) 8kHz 8-bit mono mu-law [PCM] single channel).
172 [3.3.1] Required Auto Abs_rating_simple Core If text only output is not required, the processor must try to play the referenced audio document (WAV (RIFF) 8kHz 8-bit mono A-law [PCM] single channel).
365 [3.3.1] Required Auto Abs_rating_simple Core The lookup element can occur in an audio element.
386 [3.3.1] Required Auto Abs_rating_simple Core fetchhint tells the synthesis processor whether or not it can attempt to optimize rendering by pre-fetching audio. The value is prefetch to permit, but not require the processor to pre-fetch the audio.
387 [3.3.1] Required Auto Abs_rating_simple Core fetchhint tells the synthesis processor whether or not it can attempt to optimize rendering by pre-fetching audio. The value is safe to say that audio is only fetched when it is needed, never before.
388 [3.3.1] Required Auto Abs_rating_simple Core If src is absent, the audio element behaves as if src were present with a legal URI but the document could not be fetched.
390 [3.3.1] Required Auto Abs_rating_simple Core fetchtimeout:The timeout for fetches.
391 [3.3.1] Required Auto Abs_rating_simple Core maxage:indicates that the document is willing to use content whose age is no greater than the specified time (cf. 'max-age' in HTTP 1.1 [RFC2616]). The document is not willing to use stale content, unless maxstale is also provided.
392 [3.3.1] Required Auto Abs_rating_simple Core maxstale:Indicates that the document is willing to use content that has exceeded its expiration time (cf. 'max-stale' in HTTP 1.1 [RFC2616]). If maxstale is assigned a value, then the document is willing to accept content that has exceeded its expiration time by no more than the specified amount of time.
371 [3.3.1.1] Required Auto Paired_Simple Extended clipBegin:offset from start of media to begin rendering. This offset is measured in normal media playback time from the beginning of the media.
372 [3.3.1.1] Required Auto Paired_Simple Extended clipEnd:offset from start of media to end rendering. This offset is measured in normal media playback time from the beginning of the media.
373 [3.3.1.1] Required Auto Paired_Simple Extended repeatCount:number of iterations of media to render. A fractional value describes a portion of the rendered media.
374 [3.3.1.1] Required Auto Paired_Simple Extended repeatDur:total duration for repeatedly rendering media. This duration is measured in normal media playback time from the beginning of the media.
375 [3.3.1.1] Required Auto Paired_Simple Extended repeatDur takes precedence over repeatCount in determining the total time for rendering media.
384 [3.3.1.1] Required Auto Abs_rating_simple Extended If clipBegin is after clipEnd, no audio will be produced.
385 [3.3.1.1] Required Auto Abs_rating_simple Extended If clipEnd is after the end of the audio, then rendering ends at the audio end.
377 [3.3.1.2] Required Auto Paired_Simple Extended The soundLevel attribute specifies the relative volume of the referenced audio.
378 [3.3.1.3] Required Auto Paired_Simple Extended The speed attribute controls the playback speed of the referenced audio, to speed up or slow down the effective rate of play relative to the original speed of the waveform.
173 [3.3.2] Required Auto Paired_Simple Core The mark element does not affect the speech output process. Test of markers at word boundaries.
174 [3.3.2] Required Manual Abs_rating_simple Core When processing a mark element, the synthesis processor must do one or both of the following: (1) inform the hosting environment with the value of the name attribute and with information allowing the platform to retrieve the corresponding position in the rendered output or (2) when audio output of the SSML document reaches the mark, issue an event that includes the value of the name attribute. The processor must send the event to the destination specified by the hosting environment.
175 [3.3.2] Required Auto Paired_Simple Core The mark element does not affect the speech output process Test of markers at the boundaries of the input text.
176 [3.3.3] Optional Manual Paired_Simple Core If text only output is required, the content of the desc element(s) should be rendered instead of other alternative content.
177 [3.3.3] Optional Manual Paired_Simple Core If text only output is required, the content of the desc element(s) should be rendered instead of other alternative content. The xml:lang attribute can be used to indicate that the content of the element is in a different language from that of the content surrounding the element.

9. References

[PM]
Psychometric methods, Guilford J.P., 1954, New York, McGraw-Hill.
[PC]
The method of paired comparisons for social values, Thurstone L.L., in "Journal of Social Psychology", 1927, nr. 11, pp. 384-400.

Appendices

Appendix A - Test assertion XML API definition

This appendix describes a lightweight framework for authoring SSML tests. The framework encourages a consistent format for writing tests by facilitating Absolute Rating and Paired Comparison tests to be authored in a straightforward manner. By employing a stylesheet, vendors may adapt the framework to their own test infrastructure. For example, a test infrastructure may present the instruction for a test visually instead of via synthesized text.

The Test API consists of a superset of the schema specified in the SSML 1.1 Specification with the addition of a set of four elements in their own namespace (http://www.w3.org/2002/ssml-conformance). The main element of the test API is <conf:test>; it can contain the following element containers:

A.1 Instruction

This <conf:instruction> element marks the instructions for the tester to successfully evaluate the test. For example, for a Paired Comparison test, the instruction might describe the expected differences between the audio produced for the reference and markup test to be assessed as "pass". The instruction is written in plain text and is compulsory. If the test assertion is labelled as Manual, then the instruction will specify the adaptation of the testing environment that is required to execute the test. There are two kinds of possible adaptations:

A.2 Reference markup

This (optional) <conf:reference_markup> element is used to indicate the reference SSML document for Paired Comparison tests. If the element contains no children, the raw text from the test markup is used instead as the reference. Otherwise the contained SSML markup is employed. Note that the SSML markup must include the <speak> element.

A.3 Test markup

The <conf:test_markup> element indicates the SSML test markup. This element always contains SSML markup and is compulsory. Note that (as with the reference) the SSML markup must include the <speak> element.

A.4 Document Type Definition

This section contains the DTD (ssml11-conf.dtd) for the Test API markup. The Test API DTD includes a placeholder for SSML content and hence test documents may be validated directly against the Test API DTD.

<!-- Placeholder for SSML -->
<!ELEMENT speak ANY>
<!ATTLIST speak
    version CDATA #REQUIRED
    xml:lang CDATA #IMPLIED
    xmlns CDATA #IMPLIED
    xmlns:xsi CDATA #IMPLIED
    xsi:schemaLocation CDATA #IMPLIED
    xml:base CDATA #IMPLIED
    onlangfailure CDATA #IMPLIED
    startmark CDATA #IMPLIED
    endmark CDATA #IMPLIED
>

<!-- Control prefixing - can be 'switched off' in internal subset -->
<!ENTITY % Conf.prefixed "INCLUDE" >

<!-- Declare the actual namespace -->
<!ENTITY % Conf.xmlns "http://www.w3.org/2002/ssml-conformance" >

<!-- Declare the prefix -->
<!ENTITY % Conf.prefix "conf" >

<![%Conf.prefixed;[
<!ENTITY % Conf.pfx "%Conf.prefix;:" >
]]>
<!ENTITY % Conf.pfx "" >

<![%Conf.prefixed;[
<!ENTITY % Conf.xmlns.attrib
    "xmlns:%Conf.prefix; CDATA #FIXED '%Conf.xmlns;'"
>
]]>
<!ENTITY % Conf.xmlns.attrib
     "xmlns CDATA  #FIXED '%Conf.xmlns;'"
>

<!-- Qualified names -->
<!ENTITY % Conf.test.qname "%Conf.pfx;test" >
<!ENTITY % Conf.instruction.qname "%Conf.pfx;instruction" >
<!ENTITY % Conf.reference_markup.qname "%Conf.pfx;reference_markup" >
<!ENTITY % Conf.test_markup.qname "%Conf.pfx;test_markup" >

<!-- Define the content model -->
<!ELEMENT %Conf.test.qname;
    (%Conf.instruction.qname;,
    (%Conf.reference_markup.qname;)?,
    %Conf.test_markup.qname;) >

<!ATTLIST %Conf.test.qname; %Conf.xmlns.attrib; >

<!ELEMENT %Conf.instruction.qname; (#PCDATA) >

<!ELEMENT %Conf.reference_markup.qname; (speak)? >

<!ELEMENT %Conf.test_markup.qname; (speak) >

A.5 Test examples

The following examples illustrate the use of the Test API. These examples were written to help validate the stylesheet (see section A.6) used to generate the tests.

Example 1 - abs_rating_simple

The following test illustrates an abs_rating_simple test where no reference markup is required:

<?xml version="1.0" encoding="UTF-8" ?> 
<!-- @ Copyright 2008 W3C (MIT, ERCIM, Keio), All Rights Reserved.
     See http://www.w3.org/Consortium/Legal/. @ -->
	 
<conf:test xmlns:conf="http://www.w3.org/2002/ssml-conformance">
    <conf:instruction>
        Must hear the audio to pass.
    </conf:instruction>
	
    <conf:test_markup>
        <speak xml:lang="en-US" version="1.1"
               xmlns="http://www.w3.org/2001/10/synthesis">
            <w>listen<audio src="turca.wav"/></w>
        </speak>
    </conf:test_markup>
	
</conf:test> 

After transformation, the instruction markup is:

<?xml version="1.0" encoding="UTF-8"?>
<speak xmlns="http://www.w3.org/2001/10/synthesis"
       version="1.1" xml:lang="en-US" >
    Must hear the audio to pass.
</speak>

After transformation, the test markup is:

<?xml version="1.0" encoding="UTF-8"?>
<speak version="1.1" xml:lang="en-US"
 xmlns="http://www.w3.org/2001/10/synthesis">
   <metadata>
      <rdf:RDF xmlns:dc="http://purl.org/metadata/dublin_core#"
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:rdfs="http://www.w3.org/TR/1999/PR-rdf-schema-19990303#">
         <rdf:Description
          dc:Description="Must hear the audio to pass."/>
      </rdf:RDF>
   </metadata>
   <w>listen<audio src="turca.wav"/></w>
</speak>

Example 2 - abs_rating_complex

The following test illustrates an abs_rating_complex test where no reference markup is required:

<?xml version="1.0" encoding="UTF-8" ?> 
<!-- @ Copyright 2003 W3C (MIT, ERCIM, Keio), All Rights Reserved.
     See http://www.w3.org/Consortium/Legal/. @ -->
	 
<conf:test xmlns:conf="http://www.w3.org/2002/ssml-conformance">
    <conf:instruction>
        The word moon in this sentence should sound
        at a higher pitch (+20Hz) to pass this test.
    </conf:instruction>
	
    <conf:test_markup>
        <speak xml:lang="en-US" version="1.1"
               xmlns="http://www.w3.org/2001/10/synthesis">
            The cat jumped over the <prosody contour="(0%,+20Hz)">moon</prosody>.
        </speak>
    </conf:test_markup>
	
</conf:test> 

After transformation, the instruction markup is:

<?xml version="1.0" encoding="UTF-8"?>
<speak xmlns="http://www.w3.org/2001/10/synthesis"
       version="1.1" xml:lang="en-US" >
    The word moon in the sentence should sound
    at a higher pitch (+20Hz) to pass this test.
</speak>

After transformation, the test markup is:

<?xml version="1.0" encoding="UTF-8"?>
<speak version="1.1" xml:lang="en-US"
 xmlns="http://www.w3.org/2001/10/synthesis">
   <metadata>
      <rdf:RDF xmlns:dc="http://purl.org/metadata/dublin_core#"
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:rdfs="http://www.w3.org/TR/1999/PR-rdf-schema-19990303#">
         <rdf:Description
          dc:Description="The word moon in the sentence should sound
                          at a higher pitch (+20Hz) to pass this test."/>
      </rdf:RDF>
   </metadata>
   The cat jumped over the <prosody contour="(0%,+20Hz)> moon</prosody>.
</speak>

Example 3 - paired_simple

The following test illustrates a paired_simple comparison where the reference is constructed from the supplied SSML markup:

<?xml version="1.0" encoding="UTF-8"?>
<conf:test xmlns:conf="http://www.w3.org/2002/ssml-conformance">
   <conf:instruction>
    In order for the test to pass, the test audio
    should be louder than or equal to the reference audio
   </conf:instruction>

   <conf:reference_markup>
      <speak version="1.1" xml:lang="en-US"
       xmlns="http://www.w3.org/2001/10/synthesis">
         <prosody volume="medium">The cat jumped over the moon</prosody>
      </speak>
   </conf:reference_markup>

   <conf:test_markup>
      <speak version="1.1" xml:lang="en-US"
       xmlns="http://www.w3.org/2001/10/synthesis">
         <prosody volume="loud">The cat jumped over the moon</prosody>
      </speak>
   </conf:test_markup>
</conf:test>

After transformation, the instruction markup is:

<?xml version="1.0" encoding="UTF-8"?>
<speak version="1.1" xml:lang="en-US"
 xmlns="http://www.w3.org/2001/10/synthesis">
   In order for the test to pass, the test audio
   should be louder than or equal to the reference audio
</speak>

After transformation, the reference markup is:

<?xml version="1.0" encoding="UTF-8"?>
<speak version="1.1" xml:lang="en-US"
 xmlns="http://www.w3.org/2001/10/synthesis">
   <metadata>
      <rdf:RDF xmlns:dc="http://purl.org/metadata/dublin_core#"
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:rdfs="http://www.w3.org/TR/1999/PR-rdf-schema-19990303#">
         <rdf:Description
           dc:Description="In order for the test to pass, the test audio
                          should be louder than or equal to the reference audio"/>
      </rdf:RDF>
   </metadata>
   <prosody volume="medium">The cat jumped over the moon</prosody>
</speak>

After transformation, the test markup is:

<?xml version="1.0" encoding="UTF-8"?>
<speak version="1.1" xml:lang="en-US"
 xmlns="http://www.w3.org/2001/10/synthesis">
   <metadata>
      <rdf:RDF xmlns:dc="http://purl.org/metadata/dublin_core#"
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:rdfs="http://www.w3.org/TR/1999/PR-rdf-schema-19990303#">
         <rdf:Description
          dc:Description="In order for the test to pass, the test audio
                          should be louder than or equal to the reference audio"/>
      </rdf:RDF>
   </metadata>
   <prosody volume="loud">The cat jumped over the moon</prosody>
</speak>

Example 4 - paired_complex

The following test illustrates a paired_complex comparison where the reference is constructed from the supplied SSML markup:

<?xml version="1.0" encoding="UTF-8"?>
<!-- @ Copyright 2004 W3C (MIT, ERCIM, Keio), All Rights Reserved.
      See http://www.w3.org/Consortium/Legal/. @ -->
	   
<conf:test xmlns:conf="http://www.w3.org/2002/ssml-conformance">
    <conf:instruction>
        Tests that contour takes precedence over range.
        The two tests must sound exactly the same.
    </conf:instruction>
    <conf:reference_markup>
        <speak version="1.1" xml:lang="en-US"
               xmlns="http://www.w3.org/2001/10/synthesis">
            <prosody contour="(0%,+20Hz) (10%,+30Hz) (40%,+10Hz)">
                The cat jumped over the moon.
            </prosody>
        </speak>
    </conf:reference_markup>
    <conf:test_markup>
        <speak version="1.1" xml:lang="en-US"
               xmlns="http://www.w3.org/2001/10/synthesis">
            <prosody contour="(0%,+20Hz) (10%,+30Hz) (40%,+10Hz)" range="x-low">
                The cat jumped over the moon.
            </prosody>
        </speak>
    </conf:test_markup>
</conf:test>

After transformation, the instruction markup is:

<?xml version="1.0" encoding="UTF-8"?>
<speak version="1.1" xml:lang="en-US"
       xmlns="http://www.w3.org/2001/10/synthesis">
   Tests that contour takes precedence over range.
   The two tests must sound exactly the same.
</speak>

After transformation, the reference markup is:

<?xml version="1.0" encoding="UTF-8"?>
<speak version="1.1" xml:lang="en-US"
 xmlns="http://www.w3.org/2001/10/synthesis">
   <metadata>
      <rdf:RDF xmlns:dc="http://purl.org/metadata/dublin_core#"
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:rdfs="http://www.w3.org/TR/1999/PR-rdf-schema-19990303#">
         <rdf:Description
           dc:Description="Tests that contour takes precedence over range.
                           The two tests must sound exactly the same."/>
      </rdf:RDF>
   </metadata>
   <prosody contour="(0%,+20.Hz) (10%,+30%) (40%,+10.0Hz)">
      The cat jumped over the moon.
   </prosody>
</speak>

After transformation, the test markup is:

<?xml version="1.0" encoding="UTF-8"?>
<speak version="1.1" xml:lang="en-US"
 xmlns="http://www.w3.org/2001/10/synthesis">
   <metadata>
      <rdf:RDF xmlns:dc="http://purl.org/metadata/dublin_core#"
       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
       xmlns:rdfs="http://www.w3.org/TR/1999/PR-rdf-schema-19990303#">
         <rdf:Description
          dc:Description="Tests that contour takes precedence over range.
                          The two tests must sound exactly the same."/>
      </rdf:RDF>
   </metadata>
   <prosody contour="(0%,+20.Hz) (10%,+30%) (40%,+10.0Hz)" range="x-low">
      The cat jumped over the moon.
   </prosody>
</speak>

A.6 Sample XSLT Template Definition

The following is a listing of an XSLT (ssml11-test.xsl) that can be used to transform the Test API into valid SSML. The XSLT is parameterizable: the parameter "mode" may be set to one of "instruction", "reference", or "test".

<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 1998-2004 W3C (MIT, ERCIM, Keio), All Rights Reserved. -->
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:ssml="http://www.w3.org/2001/10/synthesis"
                xmlns:conf="http://www.w3.org/2002/ssml-conformance"
                xmlns="http://www.w3.org/2001/10/synthesis"
                exclude-result-prefixes="ssml conf">

<!-- ################### -->
<!-- P a r a m e t e r s -->
<!-- ################### -->
<xsl:param name="mode" select="'test'"/>
   <!-- select = 'instruction', 'reference', or 'test' -->

<!-- ################ -->
<!-- T o p  L e v e l -->
<!-- ################ -->
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>

<xsl:template match="/">
    <xsl:choose>
        <xsl:when test="$mode = 'instruction'">
            <xsl:apply-templates select="//conf:instruction"/>
        </xsl:when>
        <xsl:when test="$mode = 'reference'">
            <xsl:apply-templates select="//conf:reference_markup"/>

            <!-- For consistency, always return a valid SSML document -->
            <xsl:if test="count(//conf:reference_markup) = 0">
                <speak version="1.1">
                    <xsl:call-template name="meta"/>
                </speak>
            </xsl:if>
        </xsl:when>
        <xsl:when test="$mode = 'test'">
            <xsl:apply-templates select="//conf:test_markup"/>
        </xsl:when>
        <xsl:otherwise>
            Error - unknown mode type: <xsl:value-of select="$mode"/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

<!-- ##################### -->
<!-- I n s t r u c t i o n -->
<!-- ##################### -->
<xsl:template match="conf:instruction">
    <speak version="1.1" xml:lang="en-US">
        <xsl:value-of select="."/>
    </speak>
</xsl:template>

<!-- #################  -->
<!-- R e f e r e n c e  -->
<!-- #################  -->
<xsl:template match="conf:reference_markup">
    <xsl:choose>
        <xsl:when test="0 = count(child::*)">
            <speak version="1.1">
                <xsl:apply-templates
                 select="//conf:test_markup/ssml:speak/@xml:lang"/>
                <xsl:call-template name="meta"/>
                <xsl:value-of
                 select="normalize-space(//conf:test_markup/ssml:speak)"/>
            </speak>
        </xsl:when>
        <xsl:otherwise>
            <xsl:call-template name="copy_speak"/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

<!-- ################ -->
<!-- T e s t  S S M L -->
<!-- ################ -->
<xsl:template match="conf:test_markup">
    <xsl:call-template name="copy_speak"/>
</xsl:template>

<!-- ############################## -->
<!-- H e l p e r  T e m p l a t e s -->
<!-- ############################## -->
<!-- Copy the speak element -->
<xsl:template name="copy_speak">
          <xsl:element name="speak">
                  <xsl:apply-templates select="ssml:speak/@*"/>
                  <xsl:call-template name="meta"/>
                  <xsl:apply-templates select="ssml:speak/node()"/>
          </xsl:element>
</xsl:template>

<!-- Do copy without the namespace information duplicated -->
<xsl:template match="*">
        <xsl:element 
         name="{name()}"><xsl:apply-templates select="@* | node()"/>
        </xsl:element>
</xsl:template>
<xsl:template match="@*">
        <xsl:attribute name="{name()}">
                <xsl:value-of select="."/>
        </xsl:attribute>
</xsl:template>
<xsl:template match="text()">
        <xsl:value-of select="."/>
</xsl:template>

<!-- Meta data -->
<xsl:template name="meta">
    <metadata>
        <rdf:RDF
         xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:rdfs = "http://www.w3.org/TR/1999/PR-rdf-schema-19990303#"
         xmlns:dc = "http://purl.org/metadata/dublin_core#">
            <xsl:element name="rdf:Description">
                <xsl:attribute name="dc:Description">
                    <xsl:copy-of
                     select="normalize-space(//conf:instruction)"/>
                </xsl:attribute>
            </xsl:element>
        </rdf:RDF>
    </metadata>
</xsl:template>

</xsl:stylesheet>

Appendix B - Downloading tests

The "ssml11-irp-20090827.zip" archive contains a number of resources. The SSML tests are ordered by test assertion id and are organized into folders where the folder name corresponds to the assertion id. In addition the archive includes the following:

B.1 The Manifest

"manifest.xml" is a file containing the complete information about test assertions written in the SSML Implementation Report project. The structure of the Manifest presents a root element called <tests> ; this is the container of all the Test Assertions. Every Test Assertion is represented by an <assertion> element containing CDATA that represents the description of the test assertion. At the end of the file is the <contribs> element; this lists all the people who have contributed to the Implementation Report preparation. The <assertion> element must contain a <start> element that references the main test file and may optionally contain several <dep> element that identify the other tests useful to complete the test case. Here's the DTD (manifest.dtd) for the Manifest:

<!ELEMENT tests (test+)>
<!ELEMENT test (assertion, start*, dep*)>

<!ELEMENT assertion (#PCDATA)>
<!ATTLIST assertion
    id CDATA #REQUIRED
    spec CDATA #REQUIRED
    conformance (Required | Optional) #REQUIRED
    test-type (Manual | Auto) #REQUIRED
    category (Abs_rating_simple | Abs_rating_complex | Paired_Simple | Paired_Complex) #REQUIRED
    profile (Core | Extended) #REQUIRED
>

<!ELEMENT dep EMPTY>
<!ATTLIST dep
    uri CDATA #REQUIRED
    type CDATA #REQUIRED
>
<!ELEMENT start EMPTY>
<!ATTLIST start
    uri CDATA #REQUIRED
    type CDATA #REQUIRED
>

Test assertion typology is defined by several attributes on the <assertion> element. These attributes allow for a more complete identification of the nature of the current assertion and an idea of related tests' structure.

<start> and <dep> elements are characterized by the following attributes:

For instance here’s a fragment of the manifest.xml document:

<tests>
[…]
 <test>
  <assertion id="63" spec="3.2.4" test-type="Auto" category="Abs_rating_simple"
             profile="Core">
      pitch: legal value, relative positive semitone change,
             "+" number followed by "st".
  </assertion>
  <start uri="63/63.txml" type="text/x-txml"/>
 </test>
[…]
</tests>

Here’s another fragment of the manifest.xml document to show the use of the <dep> element:

<tests>
[…]
 <test>
  <assertion id="170" spec="3.3.1" test-type="Auto" category="Abs_rating_simple"
             profile="Core">
      If text only output is not required, the processor must try
      to play the referenced audio document 
      (Raw (headerless) 8kHz 8-bit mono A-law [PCM] single channel)     
  </assertion>
  <start uri="170/ta_170.txml" type="text/x-txml"/>
  <dep uri="170/beep_a.raw" type="audio/basic"/>
 <test>
[…]
</tests>

B.2 The Report Submission Template

The template (ssml11-ir-results-template.xml) has to be filled by the company following the rules described in Section 3. An excerpt of the Template is shown below.

<system-report name="YOUR-SYSTEM-NAME-HERE">
<testimonial> YOUR-WELL-FORMED-TESTIMOMIAL-CONTENT-HERE</testimonial>
<assert id="Id1" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert>
        [...]
<assert id="Idn" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert>
</system-report>

B.3 The Stylesheet

A specific stylesheet transforms the meta markup language used to write the tests into valid SSML documents (the stylesheet structure is described in Appendix A.6). The output of the stylesheet presents three valid SSML documents containing respectively the instructions, the reference text and the test itself. Parameterization is used so that a single stylesheet may be used for producing all three documents.

Appendix C - Acknowledgements

The Voice Browser Working Group would like to acknowledge the contributions of several individuals:

Thanks to Kazuyuki Ashimura, Jim Larson, and Matt Womer for important management support. Many thanks go to France Telecom for hosting the SSML-IR website.