目次
この章は参考情報である。CSS 2.2に準拠するために、ユーザーエージェントはこの章のプロパティを実装するよう要求されない。
我々は、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 } }
は非推奨であるが、この付録で定義される。
すでに視覚障害者のコミュニティーで一般的に使用される文書の聴覚レンダリングは、音声合成と"聴覚アイコン"を組み合わせたものである。そのような聴覚表現はたいてい、文書をプレーンテキストに変換し、これをスクリーンリーダー(画面上のすべての文字を単に読み込むソフトウェアまたはハードウェア)に供給することによって起こる。文書構造が保持された場合に比べ、これは効果がより少ない表現となる。聴覚表現のためのスタイルシートのプロパティは、視覚プロパティと一緒に(混合メディア)、または視覚表現の音声代替として使用してもよい。
明らかなアクセシビリティーの利点に加え、情報を聞くこと、車載用、工業用および医療用文書システム(イントラネット)、ホームエンターテイメント、および読みの学習や読むことが困難な人を支援することに対する大きな市場が存在する。
聴覚プロパティを使用する場合、キャンバスは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"の段落は、非常に静かな出力となる。
角度の値は、テキスト内の<angle>で表される。その形式は、<number>の直後に角度の単位識別子が続くものとなる。
角度の単位識別子は次のとおり:
角度の値は負であってもよい。ユーザーエージェントは、0-360degの範囲に正規化すべきである。たとえば、-10degと350degは等価である。
たとえば、直角は'90deg'、'100grad'または'1.570796326794897rad'となる。
<length>のように、値が0である場合、単位は省略してもよい。'0deg'は'0'として書かれてもよい。
時間の値は、テキストで<time>によって表される。その形式は、<number>の直後に時間の単位識別子が続くものとなる。
時間の単位識別子は次のとおり:
時間の値は負であってはならない。
<length>のように、値が0である場合、単位は省略してもよい。'0s'は'0'として書かれてもよい。
周波数の値は、テキストで<frequency>によって表される。その形式は、<number>の直後に周波数の単位識別子が続くものとなる。
周波数の単位識別子は次のとおり:
周波数の値は負であってはならない。
たとえば、200Hzは低音域、6kHzは高音域を表す。
<length>のように、値が0である場合、単位は省略してもよい。'0Hz'は'0'として書かれてもよい。
プロパティ名: | volume |
---|---|
値: | <number> | <percentage> | silent | x-soft | soft | medium | loud | x-loud | inherit |
初期値: | medium |
適用要素: | すべての要素 |
継承: | yes |
パーセンテージ: | 継承値を参照 |
メディア: | aural |
算出値: | 数値 |
音量は、波形の音量の中央値を参照する。言い換えれば、50の音量で大きな抑揚をつけた声は、50より上でピークに達するかもしれない。全体的な値は、たとえば物理音量制御(比例的に0と100の両方の値を増加する)とともに、快適さに対して、人間可調になるだろう。このプロパティは単にダイナミックレンジを調整する。
値は次の意味を持つ:
ユーザーエージェントは、'0'と'100'に対応する値がリスナーによって設定できるようにすべきである。普遍的に適用できる設定はない。適切な値は、使用中の機器(スピーカー、ヘッドホン)、環境(車内、ホームシアター、図書館)および個人の好みに依存する。いくつかの例を挙げる:
同じ著者スタイルシートは、適切にクライアント側で示す'0'と'100'を単純に対応づけることによって、あらゆる場合に使用することができる。
プロパティ名: | speak |
---|---|
値: | normal | none | spell-out | inherit |
初期値: | normal |
適用要素: | すべての要素 |
継承: | yes |
パーセンテージ: | 利用不可 |
メディア: | aural |
算出値: | 指定される |
このプロパティは、テキストを聴覚系でレンダリングするのかどうか、するならば、どのような方法でするのかを指定する。可能な値は以下のとおり:
'volume'プロパティが'silent'の値を持つ要素と'speak'プロパティが'none'を持つ要素との間の違いに注意する。前者は、要素の前と後に一時停止を含めて、あたかも話されていたかのように同じ時間をとるが、音は生成されない。後者は、時間を必要とせずレンダリングされない(たとえ子孫があるとしても)。
プロパティ名: | pause-before |
---|---|
値: | <time> | <percentage> | inherit |
初期値: | 0 |
適用要素: | すべての要素 |
継承: | no |
パーセンテージ: | 文を参照 |
メディア: | aural |
算出値: | 時間 |
プロパティ名: | pause-after |
---|---|
値: | <time> | <percentage> | inherit |
初期値: | 0 |
適用要素: | すべての要素 |
継承: | no |
パーセンテージ: | 文を参照 |
メディア: | aural |
算出値: | 時間 |
このプロパティは要素のコンテンツを話す前(または後)に気づかれるための休止を指定する。値は次の意味を持つ:
注。 CSS3において休止は、合図とコンテンツの間でなく周囲に挿入される。詳細は[CSS3SPEECH]を参照のこと。
休止は、要素のコンテンツと任意の'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 */
プロパティ名: | cue-before |
---|---|
値: | <uri> | none | inherit |
初期値: | none |
適用要素: | すべての要素 |
継承: | no |
パーセンテージ: | 利用不可 |
メディア: | aural |
算出値: | 絶対URIまたは'none' |
プロパティ名: | cue-after |
---|---|
値: | <uri> | none | inherit |
初期値: | none |
適用要素: | すべての要素 |
継承: | no |
パーセンテージ: | 利用不可 |
メディア: | aural |
算出値: | 絶対URIまたは'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'疑似要素由来のコンテンツの後に挿入される。
プロパティ名: | play-during |
---|---|
値: | <uri> [ mix || repeat ]? | auto | none | inherit |
初期値: | auto |
適用要素: | すべての要素 |
継承: | no |
パーセンテージ: | 利用不可 |
メディア: | aural |
算出値: | 絶対URI、残りは指定値 |
'cue-before'および'cue-after'プロパティと同様に、このプロパティは要素のコンテンツが話される間にバックグラウンドとして再生する音を指定する。値は次の意味を持つ:
blockquote.sad { play-during: url("violins.aiff") } blockquote Q { play-during: url("harp.wav") mix } span.quiet { play-during: none }
空間オーディオは、聴覚プレゼンテーションのための重要なスタイルのプロパティである。空間オーディオは(人々は部屋で同じ場所にほとんど立っていない)日常の生活のように、複数の声を区別して伝えるための自然な方法を提供する。ステレオスピーカーは、横方向の音響舞台を生成する。ステレオヘッドフォンや、ますます人気の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 |
算出値: | 規格化した角度 |
値は次の意味を持つ:
このプロパティは、異なるボリュームで別のチャンネルに同じ信号を混合することによって実装される可能性が最も高い。また、音響舞台のような錯覚を提供するために、位相シフト、デジタル遅延、および他のそのような技術を使用するかもしれない。この効果を達成するために使用される正確な手段およびスピーカーの数は、ユーザーエージェントに依存する。このプロパティは、単に期待する最終結果を特定する。
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 |
算出値: | 規格化した角度 |
このプロパティの値の意味は次のとおり:
この効果を達成するために使用される正確な手段および使用されるスピーカーの数は、未定義である。このプロパティは、単に期待する最終結果を特定する。
h1 { elevation: above } tr.a { elevation: 60deg } tr.b { elevation: 30deg } tr.c { elevation: level }
プロパティ名: | speech-rate |
---|---|
値: | <number> | x-slow | slow | medium | fast | x-fast | faster | slower | inherit |
初期値: | medium |
適用要素: | すべての要素 |
継承: | yes |
パーセンテージ: | 利用不可 |
メディア: | aural |
算出値: | 数値 |
このプロパティは、発話速度を指定する。絶対と相対の両方のキーワード値が許可されることに注意する('font-size'と比較)。値は次の意味を持つ:
プロパティ名: | voice-family |
---|---|
値: | [[<specific-voice> | <generic-voice> ],]* [<specific-voice> | <generic-voice> ] | inherit |
初期値: | ユーザーエージェントに依存 |
適用要素: | すべての要素 |
継承: | yes |
パーセンテージ: | 利用不可 |
メディア: | aural |
算出値: | 指定される |
値はボイスファミリー名の優先順位をコンマ区切りにしたリストである('font-family'と比較)。値は次の意味を持つ:
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となる。
値は次の意味を持つ:
プロパティ名: | pitch-range |
---|---|
値: | <number> | inherit |
初期値: | 50 |
適用要素: | すべての要素 |
継承: | yes |
パーセンテージ: | 利用不可 |
メディア: | aural |
算出値: | 指定される |
平均的なピッチの変化を指定する。人間の声の知覚ピッチは基本周波数によって決定され、一般に男性の声に対して120Hzおよび女性の声に対して210Hzの値を持つ。人間の言語は、変化する抑揚やピッチとともに話される。この変化は、追加の意味と強調を伝える。したがって、非常に快活な音声、すなわち、大きく抑揚されるものは、高ピッチの範囲を表示する。このプロパティは、変動が発生する範囲、すなわち、どのくらい基本周波数の平均ピッチから外れてもよいのかを指定する。
値は次の意味を持つ:
プロパティ名: | stress |
---|---|
値: | <number> | inherit |
初期値: | 50 |
適用要素: | すべての要素 |
継承: | yes |
パーセンテージ: | 利用不可 |
メディア: | aural |
算出値: | 指定される |
音声のイントネーション曲線における"局所ピーク"の高さを指定する。たとえば、英語はアクセント言語であり、文の異なる部分は、第1、第2、第3アクセントが割り当てられる。'stress'の値はこれらのアクセント標識に由来する抑揚の量を制御する。このプロパティは、'pitch-range'プロパティと対をなし、開発者がハイエンド聴覚表現を開発できるようにするために提供される。
値は次の意味を持つ:
プロパティ名: | richness |
---|---|
値: | <number> | inherit |
初期値: | 50 |
適用要素: | すべての要素 |
継承: | yes |
パーセンテージ: | 利用不可 |
メディア: | aural |
算出値: | 指定される |
話す声の豊かさや、明るさを指定する。豊かな声は、大きな部屋で"伝わり"、スムーズな声はそうではない。(用語"スムーズ"は描画される場合に波形がどのように見えるかを指す。)
値は次の意味を持つ:
追加の音声プロパティ、'speak-header'は以下に説明される。
プロパティ名: | speak-punctuation |
---|---|
値: | code | none | inherit |
初期値: | none |
適用要素: | すべての要素 |
継承: | yes |
パーセンテージ: | 利用不可 |
メディア: | aural |
算出値: | 指定される |
このプロパティは、句読点を伝える方法を指定する。値は次の意味を持つ:
プロパティ名: | speak-numeral |
---|---|
値: | digits | continuous | inherit |
初期値: | continuous |
適用要素: | すべての要素 |
継承: | yes |
パーセンテージ: | 利用不可 |
メディア: | aural |
算出値: | 指定される |
このプロパティは、数字を話す方法を制御する。値は次の意味を持つ:
テーブルが音声ジェネレーターによって話される場合、データセルとヘッダーセルの関係は水平方向と垂直方向の配置よりも異なる方法で表現しなければならない。一部の音声ブラウザーは、ユーザーに2次元空間内を移動することを可能にし、セルを空間的に表現された関係を対応づける機会を与える。それができない場合、スタイルシートがどの時点でヘッダーが話されるかを指定しなければならない。
プロパティ名: | speak-header |
---|---|
値: | once | always | inherit |
初期値: | once |
適用要素: | テーブルヘッダー情報を持つ要素 |
継承: | yes |
パーセンテージ: | 利用不可 |
メディア: | aural |
算出値: | 指定される |
このプロパティは、テーブルヘッダーがセルが前のセルとは異なるヘッダーに関連付けられる場合に、すべてのセルの前またはセルの前のみに話されるかどうかを指定する。値は次の意味を持つ:
各文書言語は、著者にヘッダーを指定することを可能にする異なるメカニズムを持ってもよい。たとえば、HTML4([HTML4])で、3つの異なる属性("headers"、 "scope"、"axis")をもつヘッダー情報を指定することが可能であり、かつ仕様は、これらの属性が指定されていない場合にヘッダー情報を決定するアルゴリズムを与える。
この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 ...
このスタイルシートは、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 } }
情報として、Emacsエディターの音声サブシステムEmacspeakによって実装されるプロパティのリストを挙げる。
(聴覚特性の実施状況についてT. V. Ramanに感謝する。)