Глава 2.13. Звуковые таблицы стилей

2.13.1. Общее описание

Помимо визуального отображения документов, CSS поддерживает их звуковое отображение, основанное на синтезации речи и звуковых сигналах. Звуковые таблицы стилей могут быть как дополнением к визуальным, так и их альтернативой.

Звуковое отображение документа происходит в трехмерном физическом пространстве (звуковом окружении) и во времени (мы можем указать, какие звуки должны предшествовать, следовать или звучать одновременно с другими звуками). Кроме того, CSS позволяет авторам управлять качеством синтезированной речи (типом голоса, частотой, модуляцией и т. п.).

2.13.2. Громкость: свойство volume

Синтаксис:  volume: <число> | <процент> | silent | x-soft | soft | medium | loud |
                    x-loud | inherit
Начально:   medium
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   относительно наследуемого значения
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство volume задает громкость звука (точнее, размер медианы звуковой волны). Оно задается одним из следующих способов:

<число>
  Задает громкость звука числом в диапазоне от 0 до 100. При этом 0 соответствует
  минимально возможной громкости, а 100 — максимально приемлемой громкости.
<процент>
  Вычисляется относительно наследуемого значения, а затем обрезается по диапазону
  от 0 до 100.
silent
  Отключить звук. Это не то же самое, что громкость 0!
x-soft
  То же, что громкость 0.
soft
  То же, что громкость 25.
medium
  То же, что громкость 50.
loud
  То же, что громкость 75.
x-loud
  То же, что громкость 100.

Фактическая громкость звука определяется обозревателем. Пример: следующее правило задает негромкое звучание всего документа:

BODY { volume: soft }

2.13.3. Задание пауз

CSS позволяет задать размеры пауз перед произнесением элемента и после него. Они имеют тип <размер-паузы>, который определяется следующим образом:

  <размер-паузы> = <время> | <процент>
    <время>
      Задает абсолютный размер паузы в секундах или миллисекундах.
    <процент>
      Основан на величине, обратной значению свойства speech-rate. Если, например,
      это значение равно 120 слов в минуту (т. е. одно слово занимает 500 мс), то
      пауза в 20% равна 20% * 500 мс = 100 мс.

Для того, чтобы таблица стилей была устойчива к изменению скорости речи, рекомендуется задавать размеры пауз в процентах.

2.13.3.1. Пауза перед элементом: свойство pause-before

Синтаксис:  pause-before: <размер-паузы> | inherit
Начально:   зависит от обозревателя
Применимо:  ко всем элементам
Наследуемо: нет
Проценты:   см. выше
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство pause-before задает паузу перед произнесением элемента. Пауза вставляется между содержимым элемента и любым содержимым свойства cue-before. Пример:

H1 { pause-before: 20ms }

2.13.3.2. Пауза после элемента: свойство pause-after

Синтаксис:  pause-after: <размер-паузы> | inherit
Начально:   зависит от обозревателя
Применимо:  ко всем элементам
Наследуемо: нет
Проценты:   см. выше
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство pause-after задает паузу после произнесения элемента. Пауза вставляется между содержимым элемента и любым содержимым свойства cue-after. Пример:

H1 { pause-after: 20ms }

2.13.3.3. Паузы до и после: свойство pause

Синтаксис:  pause: <размер-паузы>{1,2} | inherit
Начально:   не определено для сокращений
Применимо:  ко всем элементам
Наследуемо: нет
Проценты:   см. выше
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство pause является сокращением для свойств pause-before и pause-after. Если указаны два значения, то первое из них задает паузу перед произнесением элемента, а второе — паузу после его произнесения. Если указано только одно значение, то оно задает значение обеих пауз. Примеры:

H1 { pause: 20ms }	/* pause-before: 20ms; pause-after: 20ms */
H1 { pause: 30ms 40ms }	/* pause-before: 30ms; pause-after: 40ms */

2.13.4. Задание звуковых сигналов

CSS позволяет выводить звуковые сигналы перед произнесением элемента и после него. Они имеют тип <звуковой-сигнал>, который определяется следующим образом:

  <звуковой-сигнал> = <uri> | none
    <uri>
      Задает URI ресурса, содержащего звуковой файл. Если ресурс не является
      аудиофайлом, то он должен игнорироваться.
    none
      Не выводить звукового сигнала.

2.13.4.1. Сигнал перед элементом: свойство cue-before

Синтаксис:  cue-before: <звуковой-сигнал> | inherit
Начально:   none
Применимо:  ко всем элементам
Наследуемо: нет
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство cue-before задает звуковой сигнал перед произнесением элемента. Пример:

H1 { cue-before: url("bell.wav") }

2.13.4.2. Сигнал после элемента: свойство cue-after

Синтаксис:  cue-after: <звуковой-сигнал> | inherit
Начально:   none
Применимо:  ко всем элементам
Наследуемо: нет
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство cue-after задает звуковой сигнал после произнесения элемента. Пример:

H1 { cue-after: url("dong.aiff") }

2.13.4.3. Сигналы до и после: свойство cue

Синтаксис:  cue: <звуковой-сигнал>{1,2} | inherit
Начально:   не определено для сокращений
Применимо:  ко всем элементам
Наследуемо: нет
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство cue является сокращением для свойств cue-before и cue-after. Если указаны два значения, то первое из них задает сигнал перед произнесением элемента, а второе — сигнал после его произнесения. Если указано только одно значение, то оно задает значение обоих звуковых сигналов. Например, следующие два правила эквивалентны:

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

2.13.5. Фоновый звук: свойство play-during

Синтаксис:  play-during: <uri> mix? repeat? | auto | none | inherit
Начально:   auto
Применимо:  ко всем элементам
Наследуемо: нет
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство play-during задает фоновый звук, который должен звучать во время произнесения содержимого элемента. Оно задается одним из следующих способов:

<uri>
  Задает URI ресурса, содержащего звуковой файл. Если ресурс не является
  аудиофайлом, то он должен игнорироваться.
mix
  Если задано это ключевое слово, то фоновый звук элемента должен смешиваться с
  фоновым звуком его родителя. Если его нет, то фоновый звук элемента заменяет
  фоновый звук его родителя.
repeat
  Если задано это ключевое слово, то фоновый звук элемента повторяется до тех пор, пока
  не закончится произнесение элемента. В противном случае фоновый звук звучит один раз.
auto
  Продолжает звучать фоновый звук родительского элемента.
none
  На время произнесения данного элемента фоновый звук отключается.

Примеры:

P.sad { play-during: url("violin.wav") repeat }
SPAN.quite { play-during: none }

2.13.6. Пространственные характеристики звука

Пространственное звучание обеспечивает естественный способ нескольких голосов из разных точек пространства, как в реальной жизни. Воспроизведение такого звучания обеспечивается различными аудиосистемами: от обычных стереонаушников до домашних театров. Для управления такими эффектами CSS позволяет задавать два угла поворота звука: по горизонтали (azimuth) и по вертикали (elevation).

2.13.6.1. Горизонтальный угол звука: свойство azimuth

Синтаксис:  azimuth: <угол> | [[left-side | far-left | left | center-left | center |
                     center-right | right | far-right | right-side] || behind] |
                     leftwards | rightwards | inherit
Начально:   center
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство azimuth задает горизонтальный угол звучания. Оно задается одним из следующих способов:

<угол>
  Задает угол в диапазоне от -360deg до 360deg. При этом 0deg соответствует
  звучанию из центра, 90deg — повороту направо, 180deg — повороту назад, а 270deg —
  повороту налево.
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
  Поворот против часовой стрелки на 20deg (т. е. вычитание 20deg).
rightwards
  Поворот по часовой стрелке на 20deg (т. е. добавление 20deg).

Примеры:

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

2.13.6.2. Вертикальный угол звука: свойство elevation

Синтаксис:  elevation: <угол> | below | level | above | higher | lower | inherit
Начально:   level
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство elevation задает вертикальный угол звучания. Оно задается одним из следующих способов:

<угол>
  Задает угол в диапазоне от -90deg до 90deg. При этом 0deg соответствует
  звучанию на уровне слушателя, 90deg — звучанию прямо над его головой, а
  -90deg — звучанию прямо у него под ногами.
below
  То же, что -90deg.
level
  То же, что 0deg.
above
  То же, что 90deg.
higher
  Увеличивает текущий угол на 10deg.
lower
  Уменьшает текущий угол на 10deg.

Примеры:

H1 { elevation: above }
TR.a { elevation: 60deg }
TR.b { elevation: 30deg }
TR.c { elevation: level }

2.13.7. Характеристики речи

2.13.7.1. Скорость речи: свойство speech-rate

Синтаксис:  speech-rate: <число> | x-slow | slow | medium | fast | x-fast |
                         faster | slower | inherit
Начально:   medium
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство speech-rate задает скорость речи. Оно задается одним из следующих способов:

<число>
  Явно задает количество слов, произносимых в минуту.
x-slow
  80 слов в минуту.
slow
  120 слов в минуту.
medium
  180 - 200 слов в минуту.
fast
  300 слов в минуту.
x-fast
  500 слов в минуту.
faster
  Увеличивает текущую скорость речи на 40 слов в минуту.
slower
  Уменьшает текущую скорость речи на 40 слов в минуту.

Пример:

H1 { speech-rate: slow}

2.13.7.2. Голос: свойство voice-family

Синтаксис:  voice-family: [[<имя-голоса> | <родовое-имя>],]*
                          [<имя-голоса> | <родовое-имя>] | inherit
Начально:   зависит от обозревателя
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство voice-family задает список имен голосов для произнесения содержимого элемента. Этот список состоит из имен голосов, разделенных запятыми. Имена располагаются в порядке предпочтения. Например, следующее свойство

voice-family: romeo, male;

следует понимать так: "использовать голос romeo; если его нет, то использовать родовой голос male". Такой список необходим, поскольку мы заранее не знаем, какие именно голоса поддерживаются синтезаторами речи наших пользователей.

Имя голоса может быть задано двумя способами:

<имя-голоса>
  Задает название конкретного голоса. Если это название содержит пробелы, то оно
  должно быть заключено в кавычки или апострофы.
<родовое-имя>
  Одно из следующих предопределенных имен голосов: male (мужской), female (женский)
  и child (детский).

Для достижения наибольшей совместимости рекомендуется задавать родовое имя последним в списке. В этом случае, если обозреватель не найдет на компьютере-клиенте заданных голосов, он использует свой родовой голос с заданным именем.

2.13.7.3. Частота звука: свойство pitch

Синтаксис:  pitch: <частота> | x-low | low | medium | high | x-high | inherit
Начально:   medium
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство pitch задает среднюю частоту звука. Отметим, что средняя частота звука зависит от типа голоса. Например, средняя частота мужских голосов 120 Гц, а женских — 210 Гц. Частота задается одним из следующих способов:

<частота>
  Явно задает частоту звука в герцах.
x-low, low, medium, high, x-high
  Указывают относительную частоту звука в порядке ее увеличения. Обозреватель
  должен подобрать соответствующую частоту в зависимости от типа голоса.

Пример:

H1 { pitch: high }

2.13.7.4. Вариация частоты: свойство pitch-range

Синтаксис:  pitch-range: <число> | inherit
Начально:   50
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство pitch-range задает вариацию средней частоты звука. Его значением является число в диапазоне от 0 до 100. При этом значение 0 соответствует абсолютно монотонному голосу, значение 50 — обычному голосу, а значения больше 50 создают анимированные голоса. Пример:

P { pitch-range: 30 }

2.13.7.5. Ударение: свойство stress

Синтаксис:  stress: <число> | inherit
Начально:   50
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство stress задает высоту пиков в интонации голоса. Его смысл существенно зависит от языка, на котором произносится текст документа. В нетоновых языках, таких, как русский или английский, оно позволяет указать, какова вариация частоты звука в тех речевых фрагментах, которые находятся под ударением.

Значением этого свойства является число в диапазоне от 0 до 100, причем значение 50 должно соответствовать обычному способу интонирования ударений для данного языка. Пример:

P.stressed { stress: 70 }

2.13.7.6. Тембр: свойство richness

Синтаксис:  richness: <число> | inherit
Начально:   50
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство richness задает тембр голоса. Его значением является число в диапазоне от 0 до 100. Чем больше это значение, тем богаче тембр голоса, тем лучше он наполняет помещение. Пример:

H1 { richness: 75 }

2.13.8. Характеристики произношения

2.13.8.1. Способ произношения: свойство speak

Синтаксис:  speak: none | normal | spell-out | inherit
Начально:   normal
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство speak задает способ произношения. Оно может принимать следующие значения:

none Элемент не произносится. Однако, его потомки могут переопределить значение этого свойства и тогда будут произноситься.
normal Обычное произношение в соответствии с нормами языка.
spell-out Произношение по буквам. Полезно для аббревиатур и акронимов.

Примечание. Элемент со свойством volume: silent не произносится, но время, требующееся ему для произнесения, все равно ему выделяется, включая паузы перед ним и после него. Элемент с свойством speak: none не произносится, и время на его произнесение не выделяется.

Пример. Следующее правило задает произношение аббревиатур по буквам:

ABBR { speak: spell-out }

2.13.8.2. Произношение пунктуации: свойство speak-punctuation

Синтаксис:  speak-punctuation: code | none | inherit
Начально:   none
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство speak-punctuation задает способ произношения знаков пунктуации (запятых, двоеточий и т. п.). По умолчанию, его значение равно none, т. е. названия знаков пунктуации не произносятся, а их наличие выделяется паузами. Если же значение этого свойства code, то названия знаков пунктуации произносятся в процессе синтезации речи. Пример:

P { speak-punctuation: code }

2.13.8.3. Произношение числительных: свойство speak-numeral

Синтаксис:  speak-numeral: digit | continuous | inherit
Начально:   continuous
Применимо:  ко всем элементам
Наследуемо: да
Проценты:   не используются
Устройства: звуковые
Поддержка:  Internet Explorer Не поддерживается
            Netscape Navigator Не поддерживается

Свойство speak-numeral задает способ произношения числительных. По умолчанию, его значение равно continuous, т. е. число "123" произносится "Сто двадцать три". Если же значение этого свойства digit, то это число произносится по цифрам, т. е. "Один два три". Пример:

TD { speak-numeral: digit }

2.13.8.4. Произношение заголовков таблиц: свойство speak-header

Описание этого свойства приведено в разделе, посвященном таблицам.