19  Звуковые таблицы стилей

Содержание


19.1 Введение

Звуковое представление документа, обычно используемое людьми с проблемами зрения, сочетает речевой синтез и "звуковые иконки". Часто такое звуковое представление происходит при конвертации документа в обычный текст и его перенаправлении в устройство чтения с экрана -- программу или физическое устройство, которое просто считывает все символы на экране. Результатом этого является менее эффективное представление, чем могло бы быть, если бы сохранялась структура документа. Свойства таблиц стилей для звукового представления могут использоваться совместно с визуальными свойствами (смешанный носитель) или как звуковая альтернатива визуальному представлению.

Помимо очевидного преимущества - повышения доступности, есть и улучшение использования в других условиях прослушивания информации: использовании в автомобиле, индустриальных и медицинских системах документации (intranet), домашние развлечения и помощь пользователям, обучающимся чтению или имеющим проблемы с чтением.

При использовании звуковых свойств, канва состоит из трёхмерного физического пространства (звуковой среды) и временнóго пространства (можно специфицировать звуки до, во время и после других звуков). Свойства 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" будут звучать очень мягко.


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 слов в минуту (т.е. одно слово в полсекунды, или 500ms), тогда 'pause-before' в 100% означает паузу в 500ms, а 'pause-before' в 20% означает 100ms.

Пауза вставляется между содержимым элементов и любым содержимым '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'

Пространственное аудио является важным стилистическим свойством звукового представления. Оно предоставляет естественный способ реализации звучания нескольких независимых голосов, как в реальной жизни (источники звука редко находятся в одной точке помещения). Стереодинамики создают пространственный эффект. Стереонаушники или становящиеся всё более популярными установки с пятью колонками в домашнем театре могут генерировать объёмное звучание, а многополосные установки могут производит трёхмерное звучание. 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
Применяется:  ко всем элементам
Наследуется:да
Процентное: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 градусов. Арифметически выполняется modulo 360 градусов. Заметьте, что 'leftwards' точнее описать как "повёрнуто против часовой стрелки," поскольку оно всегда вычитает 20 градусов, даже если наследуемый azimuth уже позади слушателя (в этом случае звучание на самом деле перемещено вправо).
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>
Специфицирует темп речи - слов в минуту, количество которых варьируется в зависимости от языка и широко поддерживается речевыми синтезаторами.
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'.
<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) с нормальной интонацией и выделением будет отличаться от голоса со значением '50', говорящего по-итальянски.
'richness'
Значение:<number> | inherit
Начальное:50
Применяется:  ко всем элементам
Наследуется:да
Процентное:N/A
Носитель:звуковой

Специфицирует полётность голоса. Полётный голос будет слышен в большом помещении, а вкрадчивый - нет. (Термин "вкрадчивый" относится к форме синусоиды.)

Значения имеют следующий смысл:

<number>
Значения - от '0' до '100'. Чем выше значение, тем более полётный голос. Более низкие значения дают мягкий, медоточивый голос.


19.9  Свойства речи: 'speak-punctuation' и 'speak-numeral'

Дополнительное свойство речи, speak-header, описано в главе о таблицах.

'speak-punctuation'
Значение:code | none | inherit
Начальное:none
Применяется:  ко всем элементам
Наследуется:да
Процентное:N/A
Носитель:звуковой

Специфицирует, как произносится пунктуация.
Значения имеют следующий смысл:

code
Такие знаки препинания, как точка с запятой, скобки и так далее, произносятся буквально.
none
Знаки не произносятся, а представляются естественно, как различные паузы.
'speak-numeral'
Значение:digits | continuous | inherit
Начальное:continuous
Применяется:  ко всем элементам
Наследуется:да
Процентное:N/A
Носитель:звуковой

Управляет произношением чисел. Значения имеют следующий смысл:

digits
Произносит числа отдельными цифрами. Например, "237" произносится "два три семь".
continuous
Числа произносятся полностью. Например, "237" произносится "двести тридцать семь". Словесное представление зависит от языка.