@@ -548,7 +548,7 @@ <h3 id=mixing-props-voice-volume><span class=secno>5.1. </span>The
548548 < tr >
549549 < td > < em > Computed value:</ em >
550550
551- < td > keyword value, and decibel offset (if not zero)
551+ < td > a keyword value, and optionally also a decibel offset (if not zero)
552552 </ table >
553553
554554 < p > The ‘< a href ="#voice-volume "> < code
@@ -618,15 +618,16 @@ <h3 id=mixing-props-voice-volume><span class=secno>5.1. </span>The
618618 (decibel unit). This represents a change (positive or negative) relative
619619 to the given keyword value (see enumeration above), or to the default
620620 value for the root element, or otherwise to the inherited volume level
621- (which may itself be be a combination of a keyword value and of a
622- decibel offset). When the inherited volume level is ‘< code
621+ (which may itself be a combination of a keyword value and of a decibel
622+ offset, in which case the decibel values are combined additively). When
623+ the inherited volume level is ‘< code
623624 class =property > silent</ code > ’, this ‘< a
624625 href ="#voice-volume "> < code class =property > voice-volume</ code > </ a > ’
625626 resolves to ‘< code class =property > silent</ code > ’ too,
626- regardless of the specified <decibel> value. Decibels express the
627- ratio of the squares of the new signal amplitude (a1) and the current
628- amplitude (a0), as per the following logarithmic equation: volume(dB) =
629- 20 log10 (a1 / a0)</ p >
627+ regardless of the specified <decibel> value. Decibels represent
628+ the ratio of the squares of the new signal amplitude (a1) and the
629+ current amplitude (a0), as per the following logarithmic equation:
630+ volume(dB) = 20 log10 (a1 / a0)</ p >
630631
631632 < p class =note > Note that -6.0dB is approximately half the amplitude of
632633 the audio signal, and +6.0dB is approximately twice the amplitude.</ p >
@@ -691,7 +692,9 @@ <h3 id=mixing-props-voice-balance><span class=secno>5.2. </span>The
691692 < tr >
692693 < td > < em > Computed value:</ em >
693694
694- < td > specified value
695+ < td > the specified value resolved to a <number> between
696+ ‘< code class =css > -100</ code > ’ and ‘< code
697+ class =css > 100</ code > ’ (inclusive)
695698 </ table >
696699
697700 < p > The ‘< a href ="#voice-balance "> < code
@@ -2033,8 +2036,8 @@ <h3 id=voice-props-voice-rate><span class=secno>10.2. </span>The ‘<a
20332036 < tr >
20342037 < td > < em > Value:</ em >
20352038
2036- < td > normal | <percentage> | x-slow | slow | medium | fast | x-fast
2037-
2039+ < td > [ normal | x-slow | slow | medium | fast | x-fast] ||
2040+ <percentage>
20382041
20392042 < tr >
20402043 < td > < em > Initial:</ em >
@@ -2064,7 +2067,8 @@ <h3 id=voice-props-voice-rate><span class=secno>10.2. </span>The ‘<a
20642067 < tr >
20652068 < td > < em > Computed value:</ em >
20662069
2067- < td > specified value
2070+ < td > a keyword value, and optionally also a percentage relative to the
2071+ keyword (if not 100%)
20682072 </ table >
20692073
20702074 < p > The ‘< a href ="#voice-rate "> < code
@@ -2085,26 +2089,69 @@ <h3 id=voice-props-voice-rate><span class=secno>10.2. </span>The ‘<a
20852089 currently active voice. This is processor-specific and depends on the
20862090 language, dialect and on the "personality" of the voice.</ p >
20872091
2088- < dt > < strong > <percentage></ strong >
2089-
2090- < dd >
2091- < p > Only non-negative < a href ="#percentage-def "> percentage</ a > values are
2092- allowed. Computed values are calculated relative to the default speaking
2093- rate for the voice (the "normal" computed value). For example, 50% means
2094- that the default value gets multiplied by 0.5, which results in half the
2095- default rate of the voice.</ p >
2096-
20972092 < dt > < strong > x-slow</ strong > , < strong > slow</ strong > ,
20982093 < strong > medium</ strong > , < strong > fast</ strong > and
20992094 < strong > x-fast</ strong >
21002095
21012096 < dd >
21022097 < p > A sequence of monotonically non-decreasing speaking rates that are
2103- implementation and voice specific. For example, typical values for the
2098+ implementation and voice - specific. For example, typical values for the
21042099 English language are (in words per minute) x-slow = 80, slow = 120,
21052100 medium = between 180 and 200, fast = 500.</ p >
2101+
2102+ < dt > < strong > <percentage></ strong >
2103+
2104+ < dd >
2105+ < p > Only non-negative < a href ="#percentage-def "> percentage</ a > values are
2106+ allowed. This represents a change relative to the given keyword value
2107+ (see enumeration above), or to the default value for the root element,
2108+ or otherwise to the inherited speaking rate (which may itself be a
2109+ combination of a keyword value and of a percentage, in which case
2110+ percentages are combined multiplicatively). For example, 50% means that
2111+ the speaking rate gets multiplied by 0.5 (half the value).</ p >
21062112 </ dl >
21072113
2114+ < div class =example >
2115+ < p > Examples of inherited values:</ p >
2116+
2117+ < pre >
2118+ <body>
2119+ <e1>
2120+ <e2>
2121+ <e3>
2122+ ...
2123+ </e3>
2124+ </e2>
2125+ </e1>
2126+ </body>
2127+
2128+
2129+
2130+
2131+ body { voice-rate: inherit; } /* the initial value is 'normal'
2132+ (the actual speaking rate value
2133+ depends on the active voice) */
2134+
2135+ e1 { voice-rate: +50%; } /* the computed value is
2136+ ['normal' and 50%], which will resolve
2137+ to the rate corresponding to 'normal'
2138+ multiplied by 0.5 (half the speaking rate) */
2139+
2140+ e2 { voice-rate: fast 120%; } /* the computed value is
2141+ ['fast' and 120%], which will resolve
2142+ to the rate corresponding to 'fast'
2143+ multiplied by 1.2 (one and a half times the speaking rate) */
2144+
2145+ e3 { voice-rate: normal; /* "resets" the speaking rate to the intrinsic voice value,
2146+ the computed value is 'normal' (see comment below for actual value) */
2147+
2148+ voice-family: "another-voice"; } /* because the voice is different,
2149+ the calculated speaking rate may vary
2150+ compared to "body" (even though the computed
2151+ 'voice-rate' value is the same) */
2152+ </ pre >
2153+ </ div >
2154+
21082155 < h3 id =voice-props-voice-pitch > < span class =secno > 10.3. </ span > The ‘< a
21092156 href ="#voice-pitch "> < code class =property > voice-pitch</ code > </ a > ’
21102157 property</ h3 >
@@ -2152,7 +2199,7 @@ <h3 id=voice-props-voice-pitch><span class=secno>10.3. </span>The ‘<a
21522199
21532200 < td > an absolute frequency, or a keyword value and potentially also a
21542201 frequency, semitone, and/or percentage representing any non-zero
2155- offsets
2202+ offsets (relative to the keyword)
21562203 </ table >
21572204
21582205 < p > The ‘< a href ="#voice-pitch "> < code
@@ -2294,7 +2341,7 @@ <h3 id=voice-props-voice-range><span class=secno>10.4. </span>The ‘<a
22942341
22952342 < td > an absolute frequency, or a keyword value and potentially also a
22962343 frequency, semitone, and/or percentage representing any non-zero
2297- offsets
2344+ offsets (relative to the keyword)
22982345 </ table >
22992346
23002347 < p > The ‘< a href ="#voice-range "> < code
@@ -3098,7 +3145,8 @@ <h2 class=no-num id=property-index>Appendix A — Property index</h2>
30983145 < tr >
30993146 < td > < a class =property href ="#voice-rate "> voice-rate</ a >
31003147
3101- < td > normal | <percentage> | x-slow | slow | medium | fast | x-fast
3148+ < td > [normal | x-slow | slow | medium | fast | x-fast] ||
3149+ <percentage>
31023150
31033151 < td > normal
31043152
@@ -3634,6 +3682,12 @@ <h2 class=no-num id=changes>Appendix D — Changes from previous draft</h2>
36343682 < li > Added the ‘< code class =property > normal</ code > ’ value for
36353683 voice-rate ("default" in SSML 1.1).
36363684
3685+ < li > Fixed the "computed value" for voice-rate, and added the possibility
3686+ to combine keywords and percentages (to be consistent with ‘< a
3687+ href ="#voice-volume "> < code
3688+ class =property > voice-volume</ code > </ a > ’). Added an example to
3689+ illustrate inheritance and value resolution.
3690+
36373691 < li > Renamed voice-family fields to be consistent with SSML.
36383692
36393693 < li > Improved the ‘< a href ="#voice-family "> < code
0 commit comments