付録 A. 聴覚スタイルシート

目次

この章は参考情報である。CSS 2.2に準拠するために、ユーザーエージェントはこの章のプロパティを実装するよう要求されない。

A.1 メディアタイプ'aural'および'speech'

我々は、CSSの将来のレベルにおいて、音声出力に対して定義される新しいプロパティおよび値の存在を期待している。したがって、CSS 2.2は'speech'メディアタイプ(7章メディアタイプを参照)​​を予約するが、今までのところどのプロパティが'speech'に適用されるのかまたされないのかを定義しない。

この付録におけるプロパティは、CSS2で導入されたメディアタイプ'aural'に適用される。'aural'は現在非推奨である。

つまり、このようなスタイルシート

@media speech {
  body { voice-family: Paul }
}

は妥当だが、その意味はCSS 2.2で定義されない。一方

@media aural {
  body { voice-family: Paul }
}

は非推奨であるが、この付録で定義される。

A.2 聴覚スタイルシートの手引き

すでに視覚障害者のコミュニティーで一般的に使用される文書の聴覚レンダリングは、音声合成と"聴覚アイコン"を組み合わせたものである。そのような聴覚表現はたいてい、文書をプレーンテキストに変換し、これをスクリーンリーダー(画面上のすべての文字を単に読み込むソフトウェアまたはハードウェア)に供給することによって起こる。文書構造が保持された場合に比べ、これは効果がより少ない表現となる。聴覚表現のためのスタイルシートのプロパティは、視覚プロパティと一緒に(混合メディア)、または視覚表現の音声代替として使用してもよい。

明らかなアクセシビリティーの利点に加え、情報を聞くこと、車載用、工業用および医療用文書システム(イントラネット)、ホームエンターテイメント、および読みの学習や読むことが困難な人を支援することに対する大きな市場が存在する。

聴覚プロパティを使用する場合、キャンバスは3次元物理空間(サウンドサラウンド)および時間空間(別の音の前、間、後の音を指定する)で構成される。CSSプロパティはまた、著者が合成音声の質(音声の種類、周波数、抑揚など)を変化させることを可能にする。

例:

h1, h2, h3, h4, h5, h6 {
    voice-family: paul;
    stress: 20;
    richness: 90;
    cue-before: url("ping.au")
}
p.heidi { azimuth: center-left }
p.peter { azimuth: right }
p.goat  { volume: x-soft }

これは、平らなトーンだが非常に声の大きい"paul"と呼ばれる声(ある種の"音声フォント")でヘッダーを話すようスピーチシンセサイザーに指示する。ヘッダーを話す前に、音声サンプルは与えられたURLから再生される。クラス"heidi"をもつ段落は、(サウンドシステムが空間オーディオに対応している場合)左前から、およびクラス"peter"の段落は右から聞こえてくる。クラス"goat"の段落は、非常に静かな出力となる。

A.2.1 角度

角度の値は、テキスト内の<angle>で表される。その形式は、<number>の直後に角度の単位識別子が続くものとなる。

角度の単位識別子は次のとおり:

角度の値は負であってもよい。ユーザーエージェントは、0-360degの範囲に正規化すべきである。たとえば、-10degと350degは等価である。

たとえば、直角は'90deg'、'100grad'または'1.570796326794897rad'となる。

<length>のように、値が0である場合、単位は省略してもよい。'0deg'は'0'として書かれてもよい。

A.2.2 時間

時間の値は、テキストで<time>によって表される。その形式は、<number>の直後に時間の単位識別子が続くものとなる。

時間の単位識別子は次のとおり:

時間の値は負であってはならない。

<length>のように、値が0である場合、単位は省略してもよい。'0s'は'0'として書かれてもよい。

A.2.3 周波数

周波数の値は、テキストで<frequency>によって表される。その形式は、<number>の直後に周波数の単位識別子が続くものとなる。

周波数の単位識別子は次のとおり:

周波数の値は負であってはならない。

たとえば、200Hzは低音域、6kHzは高音域を表す。

<length>のように、値が0である場合、単位は省略してもよい。'0Hz'は'0'として書かれてもよい。

A.3 音量プロパティ'volume'

プロパティ名: volume
値:<number> | <percentage> | silent | x-soft | soft | medium | loud | x-loud | inherit
初期値:medium
適用要素:すべての要素
継承:yes
パーセンテージ:継承値を参照
メディア:aural
算出値:数値

音量は、波形の音量の中央値を参照する。言い換えれば、50の音量で大きな抑揚をつけた声は、50より上でピークに達するかもしれない。全体的な値は、たとえば物理音量制御(比例的に0と100の両方の値を増加する)とともに、快適さに対して、人間可調になるだろう。このプロパティは単にダイナミックレンジを調整する。

値は次の意味を持つ:

<number>
'0'と'100'の間の任意の数値。'0'は最小可聴音量レベルを表し、100は最大快適音量レベルに対応する。
<percentage>
パーセント値は継承値に対して計算され、それから範囲'0'から'100'に切り取られる。
silent
まったくの無音。'0'は'silent'と同じ意味ではない。
x-soft
'0'と同じ。
soft
'25'と同じ。
medium
'50'と同じ。
loud
'75'と同じ。
x-loud
'100'と同じ。

ユーザーエージェントは、'0'と'100'に対応する値がリスナーによって設定できるようにすべきである。普遍的に適用できる設定はない。適切な値は、使用中の機器(スピーカー、ヘッドホン)、環境(車内、ホームシアター、図書館)および個人の好みに依存する。いくつかの例を挙げる:

同じ著者スタイルシートは、適切にクライアント側で示す'0'と'100'を単純に対応づけることによって、あらゆる場合に使用することができる。

A.4 声のプロパティ'speak'

プロパティ名: speak
値:normal | none | spell-out | inherit
初期値:normal
適用要素:すべての要素
継承:yes
パーセンテージ:利用不可
メディア:aural
算出値:指定される

このプロパティは、テキストを聴覚系でレンダリングするのかどうか、するならば、どのような方法でするのかを指定する。可能な値は以下のとおり:

none
要素はレンダリングする時間を必要としないように音声レンダリングを抑制する。ただし、その子孫はこの値を上書きしてもよく、その場合話されることに注意する。(確実に要素およびその子孫のレンダリングを抑制するために、'display'プロパティを使用する)。
normal
要素とその子要素をレンダリングするために言語依存の発音規則を使用する。
spell-out
1回にテキスト1文字を綴る(頭字語や略語に役立つ)。

'volume'プロパティが'silent'の値を持つ要素と'speak'プロパティが'none'を持つ要素との間の違いに注意する。前者は、要素の前と後に一時停止を含めて、あたかも話されていたかのように同じ時間をとるが、音は生成されない。後者は、時間を必要とせずレンダリングされない(たとえ子孫があるとしても)。

A.5 休止のプロパティ'pause-before''pause-after''pause'

プロパティ名: pause-before
値:<time> | <percentage> | inherit
初期値:0
適用要素:すべての要素
継承:no
パーセンテージ:文を参照
メディア:aural
算出値:時間
プロパティ名: pause-after
値:<time> | <percentage> | inherit
初期値:0
適用要素:すべての要素
継承:no
パーセンテージ:文を参照
メディア:aural
算出値:時間

このプロパティは要素のコンテンツを話す前(または後)に気づかれるための休止を指定する。値は次の意味を持つ:

注。 CSS3において休止は、合図とコンテンツの間でなく周囲に挿入される。詳細は[CSS3SPEECH]を参照のこと。

<time>
絶対時間単位(秒およびミリ秒)で休止を表す。
<percentage>
'speech-rate'プロパティの値の逆数を指す。たとえば、音声速度が毎分120単語(すなわち、1単語あたり0.5秒もしくは500ミリ秒)である場合、100%の'pause-before'は500ミリ秒で、 20%の'pause-before'は100ミリ秒の休止を意味する。

休止は、要素のコンテンツと任意の'cue-before'または'cue-after'のコンテンツの間に挿入される。

著者は、音声速度の大きな変化にかかわらずより堅牢なスタイルシートを作成するために相対単位を使用すべきである。

プロパティ名: pause
値:[ [<time> | <percentage>]{1,2} ] | inherit
初期値:個々のプロパティを参照
適用要素:すべての要素
継承:no
パーセンテージ:'pause-before'および'pause-after'の記述を参照
メディア:aural
算出値:個々のプロパティを参照

'pause'プロパティは'pause-before''pause-after'に対する略式である。2つの値が指定された場合、最初の値は'pause-before'で、2番目は'pause-after'である。1つの値のみが指定された場合、両方のプロパティに適用される。

例:

h1 { pause: 20ms } /* pause-before: 20ms; pause-after: 20ms */
h2 { pause: 30ms 40ms } /* pause-before: 30ms; pause-after: 40ms */
h3 { pause-after: 10ms } /* pause-before未指定; pause-after: 10ms */

A.6 合図のプロパティ'cue-before''cue-after''cue'

プロパティ名: cue-before
値:<uri> | none | inherit
初期値:none
適用要素:すべての要素
継承:no
パーセンテージ:利用不可
メディア:aural
算出値:絶対URIまたは'none'
プロパティ名: cue-after
値:<uri> | none | inherit
初期値:none
適用要素:すべての要素
継承:no
パーセンテージ:利用不可
メディア:aural
算出値:絶対URIまたは'none'

聴覚アイコンは、セマンティックな要素を区別するための別の方法である。音は、要素を区切るために要素の前と後の両方またはいずれか一方でを再生されてもよい。値は次の意味を持つ:

<uri>
URIは聴覚アイコンのリソースを明示しなければならない。URIが画像など音声ファイル以外の何かに解決する場合、リソースは無視され、あたかも値が'none'をなかったかのようにプロパティを扱うべきである。
none
聴覚アイコンを指定しない。

例:

a {cue-before: url("bell.aiff"); cue-after: url("dong.wav") }
h1 {cue-before: url("pop.au"); cue-after: url("pop.au") }
プロパティ名: cue
値:[ <'cue-before'> || <'cue-after'> ] | inherit
初期値:個々のプロパティを参照
適用要素:すべての要素
継承:no
パーセンテージ:利用不可
メディア:aural
算出値:個々のプロパティを参照

'cue'プロパティは、'cue-before'および'cue-after'の設定に対する略式である。2つの値が指定される場合、最初の値は'cue-before'で、2番目は'pause-after'である1つの値のみが指定された場合、両方のプロパティに適用される。

例:

次の2つの規則は等価である:

h1 {cue-before: url("pop.au"); cue-after: url("pop.au") }
h1 {cue: url("pop.au") }

ユーザーエージェントが聴覚アイコンをレンダリングすることができない(たとえば、ユーザーの環境が許可しない)場合、代わりの合図を生成することを推奨する。

他のコンテンツ生成技術については、:beforeおよび:after疑似要素の節を参照のこと。'cue-before'の音と'pause-before'の空白は、':before'疑似要素由来のコンテンツの前に挿入される。同様に、'pause-after'の空白と'cue-after'の音は':after'疑似要素由来のコンテンツの後に挿入される。

A.7 ミキシングプロパティ'play-during'

プロパティ名: play-during
値:<uri> [ mix || repeat ]? | auto | none | inherit
初期値:auto
適用要素:すべての要素
継承:no
パーセンテージ:利用不可
メディア:aural
算出値:絶対URI、残りは指定値

'cue-before'および'cue-after'プロパティと同様に、このプロパティは要素のコンテンツが話される間にバックグラウンドとして再生する音を指定する。値は次の意味を持つ:

<uri>
要素のコンテンツが話される間にこの<uri>によって指定される音がバックグラウンドとして再生される。
mix
存在する場合、このキーワードは、親要素の'play-during'プロパティから継承した音が再生され続け、かつ<uri>によって指定された音と混合されることを意味する。'mix'が指定されない場合、要素のバックグラウンド音は親のものを置き換える。
repeat
存在する場合、このキーワードは、要素の全体の期間を埋めるには音が短すぎる場合繰り返されることを意味する。そうでなければ、音は一度再生し、その後停止する。これは、'background-repeat'プロパティに似ている。音が要素に対して長すぎる場合、要素が一度話された後に切り取られる。
auto
親要素の音を再生し続ける(このプロパティが継承されていた場合に、音は再スタートされない)。
none
このキーワードは、沈黙があることを意味する。親要素の音が(もしあれば)現在の要素の間は静かであり、かつ現在の要素の後に続ける。

例:

blockquote.sad { play-during: url("violins.aiff") }
blockquote Q   { play-during: url("harp.wav") mix }
span.quiet     { play-during: none }

A.8 空間プロパティ'azimuth''elevation'

空間オーディオは、聴覚プレゼンテーションのための重要なスタイルのプロパティである。空間オーディオは(人々は部屋で同じ場所にほとんど立っていない)日常の生活のように、複数の声を区別して伝えるための自然な方法を提供する。ステレオスピーカーは、横方向の音響舞台を生成する。ステレオヘッドフォンや、ますます人気の5スピーカーホームシアターは、完全なサラウンドサウンドを生成することができ、マルチスピーカーは、真の3次元の音響舞台を作成することができる。VRML 2.0はまた、やがて消費者の手の届く空間オーディオハードウェアがより広く利用できるようになることを暗示する空間オーディオを含める。

プロパティ名: azimuth
値:<angle> | [[ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards | inherit
初期値:center
適用要素:すべての要素
継承:yes
パーセンテージ:利用不可
メディア:aural
算出値:規格化した角度

値は次の意味を持つ:

<angle>
位置は'360deg'から'-360deg'までの範囲内の角度を単位として記述される。値'0deg'は、音響舞台の中央の真正面を意味する。'90deg'は右、'180deg'は背後、'270deg'(または、同等だが使いやすい'-90deg')は左となる。
left-side
'270deg'と同じ。'behind'が付く場合は'270deg'と同じ。
far-left
'300deg'と同じ。'behind'が付く場合は'240deg'と同じ。
left
'320deg'と同じ。'behind'が付く場合は'220deg'と同じ。
center-left
'340deg'と等価。'behind'が付く場合は'200deg'と等価。
center
'0deg'と同じ。'behind'が付く場合は'180deg'と同じ。
center-right
'20deg'と同じ。'behind'が付く場合は'160deg'と同じ。
right
'40deg'と同じ。'behind'が付く場合は'140deg'と同じ。
far-right
'60deg'と同じ。'behind'が付く場合は'120deg'と同じ。
right-side
'90deg'と同じ。'behind'が付く場合は'90deg'と同じ。
leftwards
現在の角度に対して相対的に、左に音を移動する。より正確には、20度を減算する。演算は360度を法として実施される。たとえ継承された方位角が既にリスナーの後ろにある場合(この場合、音が実際には右に移動するように聞こえる)でも、常に20度を減算するため、'leftwards'はより正確には"反時計回りに移動する"と説明されることに注意する。
rightwards
現在の角度に対して相対的に右に音を移動する。より正確には、20度を加算する。算術演算については'leftwards'を参照のこと。

このプロパティは、異なるボリュームで別のチャンネルに同じ信号を混合することによって実装される可能性が最も高い。また、音響舞台のような錯覚を提供するために、位相シフト、デジタル遅延、および他のそのような技術を使用するかもしれない。この効果を達成するために使用される正確な手段およびスピーカーの数は、ユーザーエージェントに依存する。このプロパティは、単に期待する最終結果を特定する。

例:

h1   { azimuth: 30deg }
td.a { azimuth: far-right }          /*  60deg */
#12  { azimuth: behind far-right }   /* 120deg */
p.comment { azimuth: behind }        /* 180deg */

空間方位角が指定され、かつ出力装置が聴取位置の背後に音を出すことができない場合、ユーザーエージェントは後方半球内の値を前方半球の値に変換すべきである。1つの方法は次のとおり:

プロパティ名: elevation
値:<angle> | below | level | above | higher | lower | inherit
初期値:level
適用要素:すべての要素
継承:yes
パーセンテージ:利用不可
メディア:aural
算出値:規格化した角度

このプロパティの値の意味は次のとおり:

<angle>
'-90deg'と'90deg'の間の角度として仰角を指定する。'0deg'は、大まかにリスナーと一緒の高さで、前方に水平を意味する。'90deg'は真上を意味し、'-90deg'は真下を意味する。
below
'-90deg'と同じ。
level
'0deg'と同じ。
above
'90deg'と同じ。
higher
現在の仰角に10度加算する。
lower
現在の仰角から10度減算する。

この効果を達成するために使用される正確な手段および使用されるスピーカーの数は、未定義である。このプロパティは、単に期待する最終結果を特定する。

例:

h1   { elevation: above }
tr.a { elevation: 60deg }
tr.b { elevation: 30deg }
tr.c { elevation: level }

A.9 音声特性プロパティ'speech-rate''voice-family''pitch''pitch-range''stress''richness'

プロパティ名: speech-rate
値:<number> | x-slow | slow | medium | fast | x-fast | faster | slower | inherit
初期値:medium
適用要素:すべての要素
継承:yes
パーセンテージ:利用不可
メディア:aural
算出値:数値

このプロパティは、発話速度を指定する。絶対と相対の両方のキーワード値が許可されることに注意する('font-size'と比較)。値は次の意味を持つ:

<number>
言語によって多少異なるが、それにもかかわらず、広く音声合成装置でサポートされる、分あたりの単語の発話速度を指定する。
x-slow
毎分80語と同じ。
slow
毎分120語と同じ。
medium
毎分180-200語と同じ。
fast
毎分300語と同じ。
x-fast
毎分500語と同じ。
faster
現在の速度に毎分40語を加算する。
slower
現在の速度から毎分40語を減算する。
プロパティ名: voice-family
値:[[<specific-voice> | <generic-voice> ],]* [<specific-voice> | <generic-voice> ] | inherit
初期値:ユーザーエージェントに依存
適用要素:すべての要素
継承:yes
パーセンテージ:利用不可
メディア:aural
算出値:指定される

値はボイスファミリー名の優先順位をコンマ区切りにしたリストである('font-family'と比較)。値は次の意味を持つ:

<generic-voice>
値はボイスファミリーである。利用可能な値は'male'、'female'および'child'である。
<specific-voice>
値は具体的な例となる(たとえば、comedian、trinoids、carlos、lani)。

例:

h1 { voice-family: announcer, male }
p.part.romeo  { voice-family: romeo, male }
p.part.juliet { voice-family: juliet, female }

specific voiceの名前は引用符で囲んでもよく、名前をマークアップする任意の単語が識別子の構文規則に準拠しない場合、実際には引用符で囲まなければならない。また、複数の単語から成る名前をもつspecific voiceを引用符でくくることを推奨する。引用符が省略される場合、ボイスファミリー名の前後にある任意の空白文字は無視され、かつボイスファミリー名内部の空白文字の任意のシーケンスは単一の空白に変換される。

プロパティ名: pitch
値:<frequency> | x-low | low | medium | high | x-high | inherit
初期値:medium
適用要素:すべての要素
継承:yes
パーセンテージ:利用不可
メディア:aural
算出値:frequency

話し声の平均ピッチ(周波数)を指定する。音声の平均ピッチは、ボイスファミリーに依存する。たとえば、標準的な男性の声の平均ピッチは120Hz程度であるが、女性の声は約210Hzとなる。

値は次の意味を持つ:

<frequency>
ヘルツ(Hz)で話し声の平均ピッチを指定する。
x-low, low, medium, high, x-high
これらの値はボイスファミリーに依存するため、絶対的な周波数に対応していない。ユーザーエージェントは、音声ファミリーとユーザーの環境に基づく適切な周波数にこれらの値を対応づけるべきである。ただし、ユーザーエージェントは順番にこれらの値を対応づけなければならない(すなわち、'x-low'は'low'より低い周波数となるなど)。
プロパティ名: pitch-range
値:<number> | inherit
初期値:50
適用要素:すべての要素
継承:yes
パーセンテージ:利用不可
メディア:aural
算出値:指定される

平均的なピッチの変化を指定する。人間の声の知覚ピッチは基本周波数によって決定され、一般に男性の声に対して120Hzおよび女性の声に対して210Hzの値を持つ。人間の言語は、変化する抑揚やピッチとともに話される。この変化は、追加の意味と強調を伝える。したがって、非常に快活な音声、すなわち、大きく抑揚されるものは、高ピッチの範囲を表示する。このプロパティは、変動が発生する範囲、すなわち、どのくらい基本周波数の平均ピッチから外れてもよいのかを指定する。

値は次の意味を持つ:

<number>
'0 'と'100'の間の値。'0'のピッチの範囲は、フラットで単調な音声を生成する。50のピッチの範囲は、通常の抑揚を生成する。50以上のピッチの範囲は、生き生きとした声を生成する。
プロパティ名: stress
値:<number> | inherit
初期値:50
適用要素:すべての要素
継承:yes
パーセンテージ:利用不可
メディア:aural
算出値:指定される

音声のイントネーション曲線における"局所ピーク"の高さを指定する。たとえば、英語はアクセント言語であり、文の異なる部分は、第1、第2、第3アクセントが割り当てられる。'stress'の値はこれらのアクセント標識に由来する抑揚の量を制御する。このプロパティは、'pitch-range'プロパティと対をなし、開発者がハイエンド聴覚表現を開発できるようにするために提供される。

値は次の意味を持つ:

<number>
'0 'と'100'の間の値。値の意味は、話されている言語によって異なる。たとえば、'50'の標準レベルで、通常のイントネーションと強調で話す、標準英語を話す男性の声(平均ピッチ=122Hz)は、イタリア語に対する'50'とは異なる意味を持つ。
プロパティ名: richness
値:<number> | inherit
初期値:50
適用要素:すべての要素
継承:yes
パーセンテージ:利用不可
メディア:aural
算出値:指定される

話す声の豊かさや、明るさを指定する。豊かな声は、大きな部屋で"伝わり"、スムーズな声はそうではない。(用語"スムーズ"は描画される場合に波形がどのように見えるかを指す。)

値は次の意味を持つ:

<number>
'0 'と'100'の間の値。値が大きいほど、声が伝わる。低い値は、軽くて流暢な声を生成する。

A.10 話法プロパティ'speak-punctuation''speak-numeral'

追加の音声プロパティ、'speak-header'は以下に説明される。

プロパティ名: speak-punctuation
値:code | none | inherit
初期値:none
適用要素:すべての要素
継承:yes
パーセンテージ:利用不可
メディア:aural
算出値:指定される

このプロパティは、句読点を伝える方法を指定する。値は次の意味を持つ:

code
セミコロンや括弧などの句読点は、リテラルに話される。
none
句読点は話され、代わりに多彩な一時停止として自然にレンダリングする。
プロパティ名: speak-numeral
値:digits | continuous | inherit
初期値:continuous
適用要素:すべての要素
継承:yes
パーセンテージ:利用不可
メディア:aural
算出値:指定される

このプロパティは、数字を話す方法を制御する。値は次の意味を持つ:

digits
個々の数字として数字を話す。したがって、"237"を"に・さん・なな"と話す。
continuous
完全な数として数字を話す。したがって、"237"を"にひゃくさんじゅうなな"と伝える。単語の表現は言語に依存する。

A.11 テーブルの音声レンダリング

テーブルが音声ジェネレーターによって話される場合、データセルとヘッダーセルの関係は水平方向と垂直方向の配置よりも異なる方法で表現しなければならない。一部の音声ブラウザーは、ユーザーに2次元空間内を移動することを可能にし、セルを空間的に表現された関係を対応づける機会を与える。それができない場合、スタイルシートがどの時点でヘッダーが話されるかを指定しなければならない。

A.11.1 ヘッダーの話法'speak-header'プロパティ

プロパティ名: speak-header
値:once | always | inherit
初期値:once
適用要素:テーブルヘッダー情報を持つ要素
継承:yes
パーセンテージ:利用不可
メディア:aural
算出値:指定される

このプロパティは、テーブルヘッダーがセルが前のセルとは異なるヘッダーに関連付けられる場合に、すべてのセルの前またはセルの前のみに話されるかどうかを指定する。値は次の意味を持つ:

once
ヘッダーは、一連のセルの前に、一度話される。
always
ヘッダーはすべての適切なセルの前に話される。

各文書言語は、著者にヘッダーを指定することを可能にする異なるメカニズムを持ってもよい。たとえば、HTML4([HTML4])で、3つの異なる属性("headers"、 "scope"、"axis")をもつヘッダー情報を指定することが可能であり、かつ仕様は、これらの属性が指定されていない場合にヘッダー情報を決定するアルゴリズムを与える。

MS Wordで作成したテーブル   [D]

適用するデータとして同じ行または列にないヘッダーセル("San Jose"と"Seattle")をもつテーブルのイメージ

このHTMLの例は、連日の2つの場所(サンノゼとシアトル)で食事、ホテル、交通に使われた金額を提示する。概念的には、n次元空間の観点からテーブルと考えることができる。この空間のヘッダーは、場所、日、カテゴリー、および小計となる。一部のセルは軸に沿ってマークを定義する一方、他はこの空間内の点で使われた金額を与える。このテーブルのマークアップは次のとおり:

<TABLE>
<CAPTION>Travel Expense Report</CAPTION>
<TR>
  <TH></TH>
  <TH>Meals</TH>
  <TH>Hotels</TH>
  <TH>Transport</TH>
  <TH>subtotal</TH>
</TR>
<TR>
  <TH id="san-jose" axis="san-jose">San Jose</TH>
</TR>
<TR>
  <TH headers="san-jose">25-Aug-97</TH>
  <TD>37.74</TD>
  <TD>112.00</TD>
  <TD>45.00</TD>
  <TD></TD>
</TR>
<TR>
  <TH headers="san-jose">26-Aug-97</TH>
  <TD>27.28</TD>
  <TD>112.00</TD>
  <TD>45.00</TD>
  <TD></TD>
</TR>
<TR>
  <TH headers="san-jose">subtotal</TH>
  <TD>65.02</TD>
  <TD>224.00</TD>
  <TD>90.00</TD>
  <TD>379.02</TD>
</TR>
<TR>
  <TH id="seattle" axis="seattle">Seattle</TH>
</TR>
<TR>
  <TH headers="seattle">27-Aug-97</TH>
  <TD>96.25</TD>
  <TD>109.00</TD>
  <TD>36.00</TD>
  <TD></TD>
</TR>
<TR>
  <TH headers="seattle">28-Aug-97</TH>
  <TD>35.00</TD>
  <TD>109.00</TD>
  <TD>36.00</TD>
  <TD></TD>
</TR>
<TR>
  <TH headers="seattle">subtotal</TH>
  <TD>131.25</TD>
  <TD>218.00</TD>
  <TD>72.00</TD>
  <TD>421.25</TD>
</TR>
<TR>
  <TH>Totals</TH>
  <TD>196.27</TD>
  <TD>442.00</TD>
  <TD>162.00</TD>
  <TD>800.27</TD>
</TR>
</TABLE>

このような方法でデータモデルを提供することにより、著者は、音声対応ブラウザーが豊富な方法でテーブルを探索できるようになる。たとえば、各データセルの前に適切なヘッダーを繰り返す各セルが、リストとして話されるようにすることができる:

  San Jose, 25-Aug-97, Meals:  37.74
  San Jose, 25-Aug-97, Hotels:  112.00
  San Jose, 25-Aug-97, Transport:  45.00
 ...

ヘッダーが変更する場合にのみ、ブラウザーはヘッダーを話すこともできる:

San Jose, 25-Aug-97, Meals: 37.74
    Hotels: 112.00
    Transport: 45.00
  26-Aug-97, Meals: 27.28
    Hotels: 112.00
...

A.12 HTMLのサンプルスタイルシート

このスタイルシートは、HTML 4の可能なレンダリングについて説明する:

@media aural {
h1, h2, h3, 
h4, h5, h6    { voice-family: paul, male; stress: 20; richness: 90 }
h1            { pitch: x-low; pitch-range: 90 }
h2            { pitch: x-low; pitch-range: 80 }
h3            { pitch: low; pitch-range: 70 }
h4            { pitch: medium; pitch-range: 60 }
h5            { pitch: medium; pitch-range: 50 }
h6            { pitch: medium; pitch-range: 40 }
li, dt, dd    { pitch: medium; richness: 60 }
dt            { stress: 80 }
pre, code, tt { pitch: medium; pitch-range: 0; stress: 0; richness: 80 }
em            { pitch: medium; pitch-range: 60; stress: 60; richness: 50 }
strong        { pitch: medium; pitch-range: 60; stress: 90; richness: 90 }
dfn           { pitch: high; pitch-range: 60; stress: 60 }
s, strike     { richness: 0 }
i             { pitch: medium; pitch-range: 60; stress: 60; richness: 50 }
b             { pitch: medium; pitch-range: 60; stress: 90; richness: 90 }
u             { richness: 0 }
a:link        { voice-family: harry, male }
a:visited     { voice-family: betty, female }
a:active      { voice-family: betty, female; pitch-range: 80; pitch: x-high }
}

A.13 Emacspeak

情報として、Emacsエディターの音声サブシステムEmacspeakによって実装されるプロパティのリストを挙げる。

(聴覚特性の実施状況についてT. V. Ramanに感謝する。)