目次
文書の音声出力とは、合成音声と音声アイコン(auditory icons)を組み合わせたものであり、目が不自由な人々や、視覚媒体への出力に問題がある人々の間ではすでに日常化している。 こういった音声出力の多くは、文書をプレーンテキストに変換し、それを画面読み上げ機(screen reader)--単に画面上の文字を読み上げるだけのソフトウェアもしくはハードウェア--に食わせることで実現している。 しかし、このやり方は文書構造がきちんと保持される場合に比べると表現力に欠けるところがある。 音声出力を制御するスタイルプロパティは、マルチメディア環境での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の声(いわゆる「声フォント」の1種)で見出しを読み上げるよう指示している。 また、見出しを読み上げる前にURL指定先の音が再生される。 クラス「heidi」に属する段落は左前から、クラス「peter」に属する段落は右側から聞こえてくることになる(もちろんステレオ環境が整っていればの話だが)。 クラス「goat」に属する段落は非常に静かな出力になる。
| Value: | <number> | <percentage> | silent | x-soft | soft | medium | loud | x-loud | inherit |
|---|---|
| Initial: | medium |
| Applies to: | all elements |
| Inherited: | yes |
| Percentages: | refer to inherited value |
| Media: | aural |
ここで指定する音量とは、波形のちょうど真ん中に対応する音量である。 つまり、たとえば音量を50に指定していても、抑揚があれば指定より随分大きな音量になる可能性もあるということである。 値全域の絶対音量も人間の手で好みに応じた調節が可能である。 たとえば、出力機器の方で物理的に音量調節してやれば、0から100まで全域の音量がその調節に比例して増減する。 このプロパティは単にダイナミックレンジ【訳注:要するに出力機器のボリュームを基準とした相対音量ですね。】を操作するものである。
各値は以下の様な意味を持つ:
UAは'0'と'100'に対応する実音量をユーザが設定できるようにすべきである。 なぜなら、あらゆる状況で適切な音量設定などあり得ないからである。 利用する出力装置(読み上げ機、ヘッドホン)、その場の状況(車内、家内上映、図書館)、個人の好みなど様々な要因が絡んでくる。 いくつか例を挙げよう:
同じ1枚のスタイルシートでも、クライアント側で'0'と'100'の設定を適切に変更するだけであらゆる場面に使い回しがきく。
このプロパティは、テキストを音声出力するのか、もしするのならどういう方式なのか、を指定する(幾分'display'プロパティと似たようなところがある)。 使用可能な値は以下の通り:
'volume'の値が'silent'となる場合と'speak'の値が'none'となる場合の相違に注意されたい。 前者は無音でも一時停止なども含めて通常と同じ時間量を喰うのに対し、後者は無音に加えて時間もとらない。(ただし子孫要素も飛ばされるとは限らない)
| Value: | <time> | <percentage> | inherit |
|---|---|
| Initial: | depends on user agent |
| Applies to: | all elements |
| Inherited: | no |
| Percentages: | see prose |
| Media: | aural |
| Value: | <time> | <percentage> | inherit |
|---|---|
| Initial: | depends on user agent |
| Applies to: | all elements |
| Inherited: | no |
| Percentages: | see prose |
| Media: | aural |
上記のプロパティは、要素の内容を再生する前後の一時停止を指定する。 各値は以下の様な意味を持つ:
一時停止は要素の内容と'cue-before'もしくは'cue-after'の間に挿入される。
読み上げ速度の大幅な変化にも耐え得る強力なスタイルシートを作成したければ相対単位を利用すべきである。
| Value: | [ [<time> | <percentage>]{1,2} ] | inherit |
|---|---|
| Initial: | depends on user agent |
| Applies to: | all elements |
| Inherited: | no |
| Percentages: | see descriptions of 'pause-before' and 'pause-after' |
| Media: | aural |
'pause'は簡略化プロパティで、'pause-before'と'pause-after'の値を1箇所で設定できる。 値が2つ与えらた場合、1つめの値が'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 */
| Value: | <uri> | none | inherit |
|---|---|
| Initial: | none |
| Applies to: | all elements |
| Inherited: | no |
| Percentages: | N/A |
| Media: | aural |
| Value: | <uri> | none | inherit |
|---|---|
| Initial: | none |
| Applies to: | all elements |
| Inherited: | no |
| Percentages: | N/A |
| Media: | aural |
要素の意味内容を区別するもう1つの方法として「音声アイコン」がある。 要素同士を区切るために、指定した要素の前後で音を再生することができるのである。 各値は以下の様な意味を持つ:
A {cue-before: url("bell.aiff"); cue-after: url("dong.wav") }
H1 {cue-before: url("pop.au"); cue-after: url("pop.au") }
| Value: | [ <'cue-before'> || <'cue-after'> ] | inherit |
|---|---|
| Initial: | not defined for shorthand properties |
| Applies to: | all elements |
| Inherited: | no |
| Percentages: | N/A |
| Media: | aural |
'cue'は簡略化プロパティで、'cue-before'と'cue-after'の値を1箇所で設定できる。 値が2つ与えらた場合、1つめの値が'cue-before'、2つめの値が'cue-after'に対応する。 値が1つだけの場合はそれが両方に適用される。
以下の両規則は等価である:
H1 {cue-before: url("pop.au"); cue-after: url("pop.au") }
H1 {cue: url("pop.au") }
UAが(たとえばユーザの環境に何らかの原因があるために)音声アイコンを再生できない場合、別の手段で何らかの合図を送ることを推奨する。 (たとえば、警告メッセージをポップアップ表示するとか、警告音を鳴らしてみるなど)
内容を自動生成する別の方法については[12.1 :before及び:after疑似要素]を参照せよ。
| Value: | <uri> mix? repeat? | auto | none | inherit |
|---|---|
| Initial: | auto |
| Applies to: | all elements |
| Inherited: | no |
| Percentages: | N/A |
| Media: | aural |
'cue-before'や'cue-after'と同じ要領で、要素を再生している背後に流す音声を指定する。 各値は以下の様な意味を持つ:
BLOCKQUOTE.sad { play-during: url("violins.aiff") }
BLOCKQUOTE Q { play-during: url("harp.wav") mix }
SPAN.quiet { play-during: none }
音源の方向というものは、音の表現力を考える上で非常に重要な要素である。 実生活においても、複数の声を区別するために、その声が聞こえてくる方向を利用するのはごく自然なことである(1室の同じ場所に皆が立っているなどどいうことは滅多にない)。 ステレオスピーカがあれば横からの音場を作り出せるし、両耳に装着するヘッドホンや徐々に普及してきた5スピーカの家内上映装置などは完全なサラウンド音を提供してくれる。 また、マルチスピーカ装置なら本物の3次元音場を作り出せる。 VRML2.0にも音源位置に関する事項が盛り込まれているので、遠からずこういった調整に対応したハードウェアが適当な価格で広く手に入るようになるだろう。
各値は以下の様な意味を持つ:
このプロパティは、同じ信号を複数のチャンネルに別音量で配分することにより実装される可能性が高いと思われる。 また、音場を錯覚させるために、音源のシフトやデジタル遅延、その他似たような技術を使うこともあるだろう。 しかし結局のところ、この効果を実現するための厳密な方法や、必要とされるスピーカの数などはUA依存である。 このプロパティは単に期待する最終結果を示しているにすぎない。
H1 { azimuth: 30deg }
TD.a { azimuth: far-right } /* 60deg */
#12 { azimuth: behind far-right } /* 120deg */
P.comment { azimuth: behind } /* 180deg */
もし、音源の方向が指定されているにも関わらず出力装置が背後からの音を作り出せない場合、UAは後ろ半分の値を前半分の値に変換すべきである。 1つの例として次のようなやり方がある:
| Value: | <angle> | below | level | above | higher | lower | inherit |
|---|---|
| Initial: | level |
| Applies to: | all elements |
| Inherited: | yes |
| Percentages: | N/A |
| Media: | aural |
各値は以下の様な意味を持つ:
この効果を実現するための厳密な方法や、必要とされるスピーカの数などはUA依存である。 このプロパティは単に期待する最終結果を示しているにすぎない。
H1 { elevation: above }
TR.a { elevation: 60deg }
TR.b { elevation: 30deg }
TR.c { elevation: level }
| Value: | <number> | x-slow | slow | medium | fast | x-fast | faster | slower | inherit |
|---|---|
| Initial: | medium |
| Applies to: | all elements |
| Inherited: | yes |
| Percentages: | N/A |
| Media: | aural |
このプロパティは読み上げる速度を指定する。 絶対指定と相対指定のキーワードが両者とも使えることに注意しておくこと('font-size'と比較)。 各値は以下の様な意味を持つ:
| Value: | [[<specific-voice> | <generic-voice> ],]* [<specific-voice> | <generic-voice> ] | inherit |
|---|---|
| Initial: | depends on user agent |
| Applies to: | all elements |
| Inherited: | yes |
| Percentages: | N/A |
| Media: | aural |
値はボイスファミリを優先順にコンマで区切ったリストである('font-family'と比較)。 各値は以下の様な意味を持つ:
H1 { voice-family: announcer, male }
P.part.romeo { voice-family: romeo, male }
P.part.juliet { voice-family: juliet, female }
声の具体名は引用符で括ってもよい。 と言うより実際は、その名前を構成する単語が識別子の構文規則に適合しない場合に、名前を引用符で括らなければならない。 また、ファミリ名が複数の単語から成る場合にも引用符で括ることを推奨する。 引用符を省略した場合、ファミリ名の先頭と末尾にある空白類文字は無視され、複数の連続する空白類文字は1つにまとめられる。
| Value: | <frequency> | x-low | low | medium | high | x-high | inherit |
|---|---|
| Initial: | medium |
| Applies to: | all elements |
| Inherited: | yes |
| Percentages: | N/A |
| Media: | aural |
話し声の平均ピッチ(平均振動数・周波数)を指定する。 これはボイスファミリに依存して様々な値になる。 たとえば、普通の男声の平均ピッチは約120Hzだが、女声だと大体210Hz程度である。
各値は以下の様な意味を持つ:
| Value: | <number> | inherit |
|---|---|
| Initial: | 50 |
| Applies to: | all elements |
| Inherited: | yes |
| Percentages: | N/A |
| Media: | aural |
平均ピッチを基準とした抑揚の範囲を指定する。 人声の知覚ピッチは基本振動数によって決まり、概ね男声で120Hz、女声で210Hzといったところである。 また、人間言語というものは抑揚やピッチが様々に変化するが、この変化には言外の意味があったり、話の要点を伝える働きがあったりする。 したがって、非常に動きがある声(つまり抑揚が激しい声)ほどこの値は大きくなる。 このプロパティは、抑揚が変化し得る最大範囲(すなわち基本振動数が平均ピッチから外れてもよい許容範囲)を指定するものである。
各値は以下の様な意味を持つ:
声の音調曲線における「局所的な頂点」の高さを指定する。 たとえば、英語はアクセントが重要な役割を果たす言語であって、文章の別々の箇所に第1、第2、第3アクセントがそれぞれ割り当てられている。 'stress'の値はこういったアクセントの部分に現れる抑揚の量を制御する。 このプロパティは'pitch-range'と同類であり、Web開発者がより高度な音声表現を利用できるようにする。
各値は以下の様な意味を盛つ:
| Value: | <number> | inherit |
|---|---|
| Initial: | 50 |
| Applies to: | all elements |
| Inherited: | yes |
| Percentages: | N/A |
| Media: | aural |
話し声の豊かさ、あざやかさを指定する。 豊かな声というのは広い部屋にも「よく通る」声のことであり、(波形が)平坦すぎる声というのは逆に通りが悪い声のことを言う。
各値は以下の様な意味を持つ:
読み方を指定するプロパティにはここに挙げるもの以外にspeak-headerがあるが、これについては[17 表について]で述べた。
| Value: | code | none | inherit |
|---|---|
| Initial: | none |
| Applies to: | all elements |
| Inherited: | yes |
| Percentages: | N/A |
| Media: | aural |
このプロパティは区切り文字の読み方を指定する。 各値は以下の様な意味を持つ:
| Value: | digits | continuous | inherit |
|---|---|
| Initial: | continuous |
| Applies to: | all elements |
| Inherited: | yes |
| Percentages: | N/A |
| Media: | aural |
このプロパティは数字の読み方を指定する。 各値は以下の様な意味を持つ: