19 聴覚スタイルシート

19.1 聴覚スタイルシートの導入

文書の聴覚レンダリングは, 音声合成と "聴覚アイコン"を組み合わせたものであり,目が不自由な人々及び視覚障害がある人々にはすでに普及している。これらの聴覚表示は,文書をプレーンテキストに変換したり,画面上の文字をすべて読み取るだけのソフトウェア又はハードウェアである 画面読取り機に文書を供給することによって,発生することが多い。 この表示は,結果として,文書構造が保持された場合と比較すると効率的ではない。聴覚表示に 関するスタイルシート特性は,視覚特性(視覚及び聴覚の混合メディア)とともに使用されるか又は視覚表示の聴覚代替として使用される。

明らかにアクセス性能の向上という利点以外にも,情報の音声出力の需要は大きい。例えば,車内利用,産業用及び医療用のドキュメンテーションシステム(イントラネット),ホームエンタテイメント及び利用者が音読の学習をしたい場合又は音読に支障がある人にも役に立つ。

聴覚特性を使用する場合, 描画面は,三次元物理空間(音場)及び時空間(複数の音声の時間的前後関係を指定してもよい)から構成される。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"と呼ばれる声("音声フォント"の一種)で,ヘッダを読み上げるように指示している。"paul"は抑揚はないが,非常に良く通る声である。ヘッダを読み上げる前に,提供されたURIを再生する。音声システムがステレオ環境を利用できる場合は,クラス"heidi"のある段落は左前から,クラス"peter"のある段落は右から聞こえてくることになる。 クラス"goat" のある段落は非常に静かに出力されることになる。

19.2 音量特性'volume'

'volume'
値:  <number> | <percentage> | silent | x-soft | soft | medium | loud | x-loud | inherit
初期値:  medium
適用対象:  すべての要素
継承:  する
パーセント値:  継承値を参照
メディア:  聴覚メディア

音量とは,波形の中央に対 応する音量を表す。言い換えれば,音量を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'までのポイントを適切に対応付けることによって,同じ文書作成 者のスタイルシートをあらゆるの状況に使用することができる。

19.3 読上げ特性'speak'

'speak'
値:  normal | none | spell-out | inherit
初期値:  normal
適用対象:  すべての要素
継承:  する
パーセント値:  N/A
メディア:  聴覚メディア

この特性は,テキストが聴覚レンダリングされるかどうか,その場合,どのようにレンダリング されるかを指定する('display'特性にいくらか類似する)。取り得る値を次に示 す。

none
聴覚レンダリングを抑制し,レンダリングの時間も要しない。しかし,子孫はこの値を上書き してもよいが,その場合出力される点に注意すること。(要素及びその子孫のレンダリングを確実 に抑制するためには, 'display'特性を使用すること。)
normal
要素及びその子をレンダリングする場合,言語依存の発音規則を使用する。
spell-out
テキストのスペルを一字ごと読み上げる。(頭字語及び略語の再生に役立つ。)

'volume'特性の値が'silent'である要素と 'speak'特性の値が'none'である要素との相違に注意するこ と。前者は,要素前後の一時停止を含め,読み上げれるのと同じ時間を要するが,無音である。後 者は時間は必要とせず,レンダリングもされない。(ただし,子孫はレンダリングされてもよい。)

19.4 一時停止特性 ( 'pause-before', 'pause-after'及び 'pause'

'pause-before'
値:  <time> | <percentage> | inherit
初期値:  利用者エージェントに依存する
適用対象:  すべての要素
継承:  しない
パーセント値:  説明を参照
メディア:  聴覚メディア
'pause-after'
値:  <time> | <percentage> | inherit
初期値:  利用者エージェントに依存する
適用対象:  すべての要素
継承:  しない
パーセント値:  説明を参照
メディア:  聴覚メディア

これらの特性は,要素の内容を読み上げる前(又は後)の一時停止を指定する。値には次の意味が ある。

<time>
絶対時間単位(秒及びミリ秒)で一時停止を表わす。
<percentage>
'speech-rate'特性の逆を参照する。 例えば, 'speech-rate'が一分間に付き120ワードとされている(1ワードが1/2秒又は500ミリ秒) 場合, 'pause-before'が100%とは,一時停止が500ミリ秒と いう意味であり, 'pause-before'が20%とは,一時停止が100ミリ秒とい う意味である。

一時停止は,要素の内容とあらゆる'cue-before'内容又は 'cue-after'内容との間に挿入される。

文書作成者は読み上げ速度の大きな変更にも問題としない堅固なスタイルシートを生成するために,相対単位にするのがよい。

'pause'
値:  [ [<time> | <percentage>]{1,2} ] | inherit
初期値:  利用者エージェントに依存する
適用対象:  すべての要素
継承:  しない
パーセント値:   'pause-before' 及び 'pause-after'の記述を参照
メディア:  聴覚メディア

'pause' 特性は,'pause-before'及び 'pause-after'を設定するため簡略記述である。値が二 つ提供される場合,最初の値は 'pause-before' であり,二番目の値は 'pause-after'である。値が一つしか提供されない場合 は,それを両方の特性に適用する。

例:

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 */

19.5 キュー特性'cue-before', 'cue-after'及び 'cue'

'cue-before'
値:  <uri> | none | inherit
初期値:  none
適用対象:  すべての要素
継承:  しない
パーセント値:  N/A
メディア:  聴覚メディア
'cue-after'
値:  <uri> | none | inherit
初期値:  none
適用対象:  すべての要素
継承:  しない
パーセント値:  N/A
メディア:  聴覚メディア

機能定義を区別する別の方法として,聴覚アイコンがある。要素を区切るために,指定要素の前 及び/又は後で音を再生してよい。値には次の意味がある。

<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
初期値:  簡略記述特性には指定されない
適用対象:  すべての要素
継承:  しない
パーセント値:  N/A
メディア:  聴覚メディア

'cue'特性は, 'cue-before' 及び 'cue-after'を設定するための簡略記述である。値が二つ 提供される場合は,最初の値は'cue-before'であり,二番目の値は 'cue-after'である。 値が一つしか提供されない場合は, それを両特性に適用する。

例:

次の二つの規則は同じである。

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

利用者エージェントが聴覚アイコンをレンダリングできない場合,例えば,利用者の環境ではレ ンダリングできない場合などでは,代替となるキューを生成することを推奨する。例としては,警 告をポップアップする,警告音を発するなどである。

その他の内容生成技術に関する情報については, :before擬似要素及び :after擬似要素 を参照。

19.6 ミキシング特性 ( 'play-during'

'play-during'
値:  <uri> mix? repeat? | auto | none | inherit
初期値:  auto
適用対象:  すべての要素
継承:  しない
パーセント値:  N/A
メディア:  聴覚メディア

'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 }

19.7 空間特性'azimuth'及び 'elevation'

三次元オーディオは,聴覚表示の重要な様式特性である。空間的特性により,実生活と同様, 複数の声がばらばらに聞こえるという,自然な状況が生まれる(実生活で,人々が同じ部屋の同じ場 所に立つことはまれである)。ステレオスピーカは横方向の音場を生成する。両耳ヘッドホン又は 徐々に一般化してきた5-スピーカホームシアタを設置すれば,周囲全方向からの音を聞くことがで きる。マルチスピーカを設置すれば,真の三次元音場を作り出すことができる。VRML2.0も三次元オ ーディオについて含んでおり,いずれ,適正な価格の音声空間ハードウェアが広く利用できるよう になるだろう。

'azimuth'
値:  <angle> | [[ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards | inherit
初期値:  center
適用対象:  すべての要素
継承:  する
パーセント値:  N/A
メディア:  聴覚メディア

値には次の意味がある。

<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度を法として実行される。'leftward'は継承された方向がすでに聞き手の背後にあったとしても (その場合,音は実際に右に移動するように思われる),常に20度を減算するため,"時計 と反対方向に回る"と記述する方がより厳密である。
rightwards
音は現在の角度に対して右に移動する。より正確に言えば, 20度を加算する。計算については 'leftwards'を参照。

この特性は,多くの場合,同じ信号を複数のチャンネルに別音量で配分することにより,実装さ れる。この特性は,音場を錯覚させるため,位相のずれ,デジタル遅延及びその他の類似する技術 も使用することがある。この効果を実現するため使用される正確な方法及びそのために使用され るスピーカの数は利用者エージェントに依存する。即ち,この特性は単に望ましい最終結果を識別 するにすぎない。

例:

H1   { azimuth: 30deg }
TD.a { azimuth: far-right }          /*  60deg */
#12  { azimuth: behind far-right }   /* 120deg */
P.comment { azimuth: behind }        /* 180deg */

空間方向が指定されているが,出力装置が聴取位置の背後で音を生成できない場合, 利用者エージェントは後半分の値を前半分の値に変換するのがよい。一つの方法を次に示す。

'elevation'
値:  <angle> | below | level | above | higher | lower | inherit
初期値:  level
適用対象:  すべての要素
継承:  する
パーセント値:  N/A
メディア:  聴覚メディア

この特性の値には次の意味がある。

<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 }

19.8 声特徴特性'speech-rate', 'voice-family', 'pitch', 'pitch-range', 'stress'及び 'richness'

'speech-rate'
値:  <number> | x-slow | slow | medium | fast | x-fast | faster | slower | inherit
初期値:  medium
適用対象:  すべての要素
継承:  する
パーセント値:  N/A
メディア:  聴覚メディア

この特性は読み上げ速度を指定する。絶対キーワード値及び相対キーワード値が利用できる点に注 意すること('font-size'と比較)。値には次の意味がある。

<number>
1分あたりの読み上げ速度を単語数で指定する。言語によりいくらか相違はあるが 音声合成器によって広くサポートされている。
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
初期値:  利用者エージェントに依存する
適用対象:  すべての要素
継承:  する
パーセント値:  N/A
メディア:  聴覚メディア

値は,音声ファミリ名を優先順にカンマで区切ったリストである ('font-family'と比較)。値には 次の意味がある。

<generic-voice>
値は音声ファミリである。取り得る値は 'male', 'female' 及び 'child'である。
< name="value-def-specific-voice"><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 }

固有の音声の名前を引用符で括ってもよい。実際,名前を構成する単語がいずれも 識別子の構文規則に適合しない場合は,引用符で括らなけ ればならない。ファミリ名が 一語以上から構成される場合にも,固有の音声を引用符で括ることを 推奨する。引用符が省略される場合,フォント名の前後の空白文字はいずれも無視され,フォント名内の空白文字のシ ーケンスはすべて単一のスペースに変換される。

'pitch'
値:  <frequency> | x-low | low | medium | high | x-high | inherit
初期値:  medium
適用対象:  すべての要素
継承:  する
パーセント値:  N/A
メディア:  聴覚メディア

話し声の平均ピッチ(周波数)を指定する。音声の平均ピッチは音声ファミリに依存する。例えば, 標準的な男性の声の平均ピッチは120Hz程度であるが,女性の声の場合は,210Hz程度である。

値には次の意味がある。

<frequency>
話し声の平均ピッチをヘルツ(Hz)で指定する。
x-low, low, medium, high, x-high
これらの値は音声ファミリに依存するため,絶対周波数に対応付けされない。利用者エージェ ントは,これらの値を音声ファミリ及び利用者の環境に基づく適切な周波数に対応付けられるのが よい。しかし,利用者エージェントはこれらの値を順に対応付けなければならない。例を挙げれば, 'x-low'は'low'より低い周波数である。
'pitch-range'
値:  <number> | inherit
初期値:  50
適用対象:  すべての要素
継承:  する
パーセント値:  N/A
メディア:  聴覚メディア

平均ピッチの範囲を指定する。人間の声の知覚ピッチは基本周波数によって決定され,通 常,値は男性の声の場合120Hz,女性の声の場合は210Hzである。人が話す言語は抑揚及びピッチが 様々に変化する。これらの変化には意味を加えたり,強調したい部分を伝達したりする。従って, 非常に活気のある声,即ち抑揚が激しい声は高いピッチ範囲を表示する。この特性はこれらの変化 が生じる範囲を指定する。即ち,基本周波数がどの程度平均ピッチから離れるかを指定するのであ る。

値には次の意味がある。

<number>
'0'から'100'までの値。ピッチ範囲'0'は平坦で単調な声になる。ピッチ範囲50は通常の抑揚で ある。50以上のピッチ範囲は,活気のある声となる。
'stress'
値:  <number> | inherit
初期値:  50
適用対象:  すべての要素
継承:  する
パーセント値:  N/A
メディア:  聴覚メディア

音声の抑揚輪郭における"局所ピーク"の高さを指定する。例えば,英語は アクセント 言語であり,文の様々な部分に第一,第二,第三アクセントが割り当てられる。 'stress'という値は,これらのアクセント記号から結果とし て生じる抑揚の量を制御する。この特性は, 'pitch-range' 特性と同類であり, 開発者がより高度な聴覚表示を利用できるように提供される。

値には次の意味がある。

<number>
'0'から'100'までの値。値の意味は,読み上げられる言語に依存する。例えば,同じ'50'とい うレベルであっても,通常の音調とアクセントで標準的な英語を話す男性の声(平均ピッチは122Hz) とイタリア人の声とでは,値の意味が異なる。
'richness'
値:  <number> | inherit
初期値:  50
適用対象:  すべての要素
継承:  する
パーセント値:  N/A
メディア:  聴覚メディア

話し声の豊かさ又は明るさを指定する。豊かな声は広い部屋でも"よく通る"が,平坦な声はそう ではない。"平坦"という語は,描写の際,波形がどのように見えるかを参照する。

値には次の意味がある。

<number>
'0'から'100'までの値。 値が高くなるにつれ, 声はよく通るようになる。低い値は,静かで,滑らかな声になる。

19.9 音声特性 ( 'speak-punctuation' 及び 'speak-numeral'

付加的な音声特性であるspeak-headerは, 17 表に記述されている。

'speak-punctuation'
値:  code | none | inherit
初期値:  none
適用対象:  すべての要素
継承:  する
パーセント値:  N/A
メディア:  聴覚メディア

この特性は,句読点の読み上げ方を指定する。値には次の意味がある。

code
セミコロン,波括弧などの句読点は,文字通りに読み上げられる。
none
句読点は読み上げられないが, 代わりに適宜一時停止を入れる。
'speak-numeral'
値:  digits | continuous | inherit
初期値:  continuous
適用対象:  すべての要素
継承:  する
パーセント値:  N/A
メディア:  聴覚メディア

この特性は,数字の読み上げ方を制御する。値には次の意味がある。

digits
数字を個々に読み上げる。従って "237"の場合は"に,さん,なな"と読み上げる。
continuous
数字をそのまま読み上げる。従って, "237"の場合は"にひゃくさんじゅうなな"と読み上げる。 読み方は言語により異なる。