Lisez-moi S.V.P. 

19 Les feuilles de styles auditives

Contents

19.1 Introduction aux feuilles de styles auditives

Le rendu auditif d'un document, déjà couramment employé par la communauté des aveugles et des lecteurs déficients, combine la synthèse de la parole avec des "images auditives". Une telle présentation auditive est souvent réalisée, suite à une conversion du document en un texte plein, par un lecteur d'écran (un logiciel ou un appareil qui lit simplement tous les caractères apparaissant à l'écran). Ceci conduit à une présentation bien moins efficace que si la structure du document avait été conservée. On peut utiliser les propriétés des feuilles de style pour une présentation auditive en même temps que visuelle (médias mélangés) ou comme une alternative auditive à une présentation visuelle.

En dehors des avantages évidents pour l'accessibilité des documents, il existe d'autres marchés importants pour l'écoute d'informations, à savoir pour une utilisation dans les voitures, les systèmes de documentation industriels et médicaux (en intranets), les divertissements à la maison et pour aider les utilisateurs qui apprennent ou qui ont des difficultés à lire.

Quand on emploie les propriétés auditives, le canevas consiste en un espace physique en trois dimensions (l'environnement sonore) et en un espace temporel (on peut spécifier des sons avant, pendant et après d'autres sons). Les propriétés CSS permettent aussi une variation de la qualité de la voix synthétisée (le type de voix, la fréquence, l'inflexion, etc.).

Exemple(s) :

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 }

Ceci va conduire le synthétiseur de parole à dire les en-têtes avec une voix (un peu comme une "police auditive") appelée "paul", d'un ton neutre mais avec des intonations fortes. Avant la lecture de celles-ci, un échantillon sonore, désigné par l'adresse URI, sera joué. Les paragraphes avec la classe "heidi" sembleront venir de l'avant gauche (pourvu que le système sonore soit capable de spatialisation audio) et ceux avec la classe "peter" venir de la droite. Les paragraphes avec la classe "goat" seront dit très doucement.

19.2 La propriété de volume : 'volume'

'volume'
Valeur :  <nombre> | <pourcentage> | silent | x-soft | soft | medium | loud | x-loud | inherit
Initiale :  medium
S'applique à :  tous les éléments
Héritée :  oui
Pourcentage :  se rapporte à la valeur héritée
Médias :  auditif

Le volume se réfère à la valeur moyenne de la forme de la vibration. En d'autres mots, une voix avec de fortes inflexions pour un volume de 50 pourrait très bien se situer au-delà de cette moyenne. Ces valeurs globales seront vraisemblablement ajustées par une action humaine pour un certain confort (avec pour effet d'augmenter proportionnellement les valeurs 0 et 100) ; cette propriété permet le réglage de l'échelle dynamique.

Les significations des valeurs sont :

<nombre>
Tout nombre compris en tre '0' et '100'. La valeur '0' représente le volume du niveau minimum audible et la valeur '100' correspond à celui du maximum de confort ;
<pourcentage>
Les valeurs en pourcentage sont calculées par rapport à la valeur héritée, et sont ensuite rognées pour se ranger dans l'échelle de '0' à '100' ;
silent
Pas de son du tout. Une valeur de '0' a une signification différente de 'silent' ;
x-soft
Équivaut à '0' ;
soft
Équivaut à '25' ;
medium
Équivaut à '50' ;
loud
Équivaut à '75' ;
x-loud
Équivaut à '100'.

Les agents utilisateurs devraient laisser le soin aux auditeurs de paramétrer les valeurs correspondant aux repères '0' et '100'. Aucun réglage n'est universel, les valeurs convenables dépendant de l'appareil utilisé (haut-parleurs, écouteurs), de l'environnement (en voiture, à la maison sur un ensemble de restitution audio, dans une librairie) et des préférences personnelles. Quelques exemples :

On pourrait utiliser la même feuille de style de l'auteur dans tous ces cas, avec simplement un paramétrage convenable des valeurs '0' et '100' sur l'agent utilisateur.

19.3 La propriété de parole : 'speak'

'speak'
Valeur :  normal | none | spell-out | inherit
Initiale :  normal
S'applique à :  tous les éléments
Héritée :  oui
Pourcentage :  sans objet
Médias :  auditif

Cette propriété spécifie si un texte aura un rendu auditif et, le cas échéant, comment il sera rendu (un peu comme pour la propriété propriété 'display' la propriété 'speak' ressemble par certains aspects à la propriété 'visibility' et à la propriété 'display' par d'autres). Les valeurs admises sont :

none
Supprime le rendu auditif de manière à ce qu'un élément donné ne consomme pas de temps pour ce rendu. Noter, cependant, que les descendants peuvent surclasser cette valeur et ainsi être lus. Pour complètement supprimer le rendu d'un élément et de ses descendants, utiliser la propriété 'display') ;
normal
Suit les règles de prononciation propres à de la langue pour le rendu auditif d'un élément et de ses enfants ;
spell-out
Épelle le texte, lettre par lettre (utile pour les acronymes et les abréviations).

Noter la différence entre un élément dont la valeur de la propriété 'volume' est 'silent' et un élément dont la valeur de la propriété 'speak' est 'none'. Le premier élément aurait la même durée que s'il avait été lu, y compris les pauses avant et après celui-ci, aucun son n'étant produit. Le second n'a aucune durée et n'est pas rendu (bien que ses descendants puissent l'être).

19.4 Les propriétés de pause : 'pause-before', 'pause-after' et 'pause'

'pause-before'
Valeur :  <durée> | <pourcentage> | inherit
Initiale :  selon l'agent utilisateur
S'applique à :  tous les éléments
Héritée :  non
Pourcentage :  voir les explications
Médias :  auditif
'pause-after'
Valeur :  <durée> | <pourcentage> | inherit
Initiale :  selon l'agent utilisateur
S'applique à :  tous les éléments
Héritée :  non
Pourcentage :  voir les explications
Médias :  auditif

Ces propriétés spécifient la pause à observer avant que le contenu d'un élément ne soit lu, ou après qu'il l'ait été. Les significations des valeurs sont :

<durée>
Exprime la pause dans une unité de durée absolue (secondes et millisecondes) ;
<pourcentage>
Se rapporte à la valeur inverse de la propriété 'speech-rate'. Par exemple, si la valeur de celle-ci est de 120 mots par minute (c.à.d. un mot dure une demi-seconde ou 500 ms) alors une valeur de 100 % pour la propriété 'pause-before' signifie une pause de 500 ms et une valeur de 20 % une pause de 100 ms.

La pause s'insère entre le contenu de l'élément et les contenus éventuels des propriétés 'cue-before' ou 'cue-after'.

Les auteurs devraient employer des unités relatives pour créer des feuilles de style plus robustes quand le débit de la parole varie beaucoup.

'pause'
Valeur :  [ [<durée> | <pourcentage>]{1,2} ] | inherit
Initiale :  selon l'agent utilisateur
S'applique à :  tous les éléments
Héritée :  non
Pourcentage :  voir les descriptions des propriétés 'pause-before' et 'pause-after'
Médias :  auditif

La propriété raccourcie 'pause' regroupe les spécifications des propriétés individuelles 'pause-before' et 'pause-after'. Quand on lui donne deux valeurs, la première s'applique à la propriété 'pause-before' et la seconde à la propriété 'pause-after'. Pour une seule valeur, celle-ci s'applique à ces deux propriétés.

Exemple(s) :

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 Les propriétés de signal : 'cue-before', 'cue-after' et 'cue'

'cue-before'
Valeur :  <uri> | none | inherit
Initiale :  none
S'applique à :  tous les éléments
Héritée :  non
Pourcentage :  sans objet
Médias :  auditif
'cue-after'
Valeur :  <uri> | none | inherit
Initiale :  none
S'applique à :  tous les éléments
Héritée :  non
Pourcentage :  sans objet
Médias :  auditif

Les images auditives sont une autre façon de distinguer des éléments sémantiques. On peut jouer des sons avant et/ou après un élément et, ainsi, le délimiter. Les significations des valeurs sont :

<uri>
L'adresse URI doit désigner une ressource d'image auditive. Si cette adresse URI désigne autre chose qu'un fichier audio, cette ressource doit être ignorée, la propriété devant être considérée avoir la valeur 'none' ;
none
Aucune image auditive n'est spécifiée.

Exemple(s) :

A {cue-before: url("bell.aiff"); cue-after: url("dong.wav") }
H1 {cue-before: url("pop.au"); cue-after: url("pop.au") }
'cue'
Valeur :  [ <'cue-before'> || <'cue-after'> ] | inherit
Initiale :  non définie pour les propriétés raccourcies
S'applique à :  tous les éléments
Héritée :  non
Pourcentage :  sans objet
Médias :  auditive

La propriété raccourcie 'cue' regroupe les spécifications des propriétés individuelles 'cue-before' et 'cue-after'. Quand on lui donne deux valeurs, la première s'applique à la propriété 'cue-before' et la seconde à la propriété 'cue-after'. Pour une seule valeur, celle-ci s'applique à ces deux propriétés.

Exemple(s) :

Ces deux règles sont équivalentes :

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

Quand un agent utilisateur ne peut rendre une image auditive (ex. l'environnement de l'utilisateur ne le permettant pas), on recommande que celui-ci produise un signal alternatif (ex. un message d'avertissement, l'émission d'un bip sonore, etc.).

Voir les passages sur les pseudo-éléments :before et :after pour des informations sur les aspects techniques de la génération de contenu.

19.6 La propriété de mixage : 'play-during'

'play-during'
Valeur :  <uri> mix? repeat? | auto | none | inherit
Initiale :  auto
S'applique à :  tous les éléments
Héritée :  non
Pourcentage :  sans objet
Médias :  auditif

Semblable aux propriétés 'cue-before' et 'cue-after', cette propriété spécifie le son à jouer en arrière-plan, au cours de la lecture de l'élément. Les significations des valeurs sont :

<uri>
Le son désigné par cet <uri> est joué en arrière-plan du contenu de l'élément en train d'être lu ;
mix
Si présent, ce mot-clé indique que le son, celui hérité de la propriété 'play-during' du parent de l'élément en question, continuant d'être joué, est mixé avec celui désigné par la propriété <uri>. Quand cette valeur 'mix' n'est pas spécifiée, le son d'arrière-plan de l'élément en question remplace celui de son parent ;
repeat
Si présent, ce mot-clé indique que le son se répètera quand celui-ci est trop court pour le temps de la lecture d'un élément donné. Autrement, le son est joué une seule fois et puis s'arrête. Ceci est similaire à la propriété 'background-repeat'. Quand le son est trop long pour la durée de l'élément, on rogne ce son quand l'élément a fini d'être lu ;
auto
Le son du parent de l'élément continue d'être joué (on ne recommence pas à le jouer comme cela aurait été le cas si cette propriété avait été héritée) ;
none
Ce mot-clé indique un silence. Le son du parent (éventuel) de l'élément n'est pas audible pendant que l'élément en question se déroule, et redevient audible ensuite.

Exemple(s) :

BLOCKQUOTE.sad { play-during: url("violins.aiff") }
BLOCKQUOTE Q   { play-during: url("harp.wav") mix }
SPAN.quiet     { play-during: none }

19.7 Les propriétés spatiales : 'azimuth' et 'elevation'

La spatialisation de l'écoute est une importante propriété de style pour une présentation auditive. C'est une façon naturelle de discriminer entre plusieurs voix, comme dans la réalité (les gens se tiennent rarement au même endroit dans une pièce). Les haut-parleurs en stéréo produisent une scène sonore latérale. Les écouteurs quadriphoniques ou les configurations de chaînes avec 5 hauts-parleurs, de plus en plus répandues, peuvent reproduire un environnement sonore complet et certaines configurations avec de multiples haut-parleurs peuvent créer une véritable scène sonore en trois dimensions. VRML 2.0 inclut également une spatialisation audio, ce qui implique la disponibilité allant grandissant de matériels grand public intégrant ces mécanismes.

'azimuth'
Valeur :  <angle> | [[ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards | inherit
Initiale :  center
S'applique à :  tous les éléments
Héritée :  oui
Pourcentage :  sans objet
Médias :  auditif

Les significations des valeurs sont :

<angle>
La position est décrite selon un angle compris entre les valeurs '-360deg' et '360deg'. La valeur '0deg' indique une position directement en face et au centre de la scène sonore, la valeur '90deg' en indique une vers la droite, la valeur '180deg' une vers l'arrière et la valeur '270deg' ('-90deg' en étant une équivalence plus pratique) une vers la gauche ;
left-side
Même chose que '270deg'. La valeur de 'behind' équivalant à '270deg' ;
far-left
Même chose que '300deg'. La valeur de 'behind' équivalant à '240deg' ;
left
Même chose que '320deg'. La valeur de 'behind' équivalant à '220deg' ;
center-left
Même chose que '340deg'. La valeur de 'behind' équivalant à '200deg' ;
center
Même chose que '0deg'. La valeur de 'behind' équivalant à '180deg' ;
center-right
Même chose que '20deg'. La valeur de 'behind' équivalant à '160deg' ;
right
Même chose que '40deg'. La valeur de 'behind' équivalant à '140deg' ;
far-right
Même chose que '60deg'. La valeur de 'behind' équivalant à '120deg' ;
right-side
Même chose que '90deg'. La valeur de 'behind' équivalant à '90deg' ;
leftwards
Déplace le son vers la gauche en fonction de l'angle courant. Plus précisément, on lui soustrait 20 degrés. Cette opération est effectuée avec un modulo de 360 degrés. Noter que la valeur 'leftwards' est plus justement décrite par "à l'inverse des aiguilles d'une montre", celle-ci retirant toujours 20 degrés, et même si l'azimuth hérité se situe déjà derrière l'auditeur (auquel cas le son semble se déplacer vers la droite) ;
rightwards
Déplace le son vers la droite en fonction de l'angle courant. Plus précisément, on lui ajoute 20 degrés. Voir 'leftwards' pour des explications à l'inverse.

Cette propriété sera plus vraisemblablement implémentée par le mélange d'un même signal issus de différents canaux, leurs volumes étant différents. Ceci pourrait aussi être obtenu par une modulation de phase, un retard digital et autres techniques de ce genre qui donne l'illusion d'une scène sonore. Les moyens précis d'atteindre cet effet ainsi que le nombre de haut-parleurs nécessaires dépendent de l'agent utilisateur, cette propriété décrivant simplement le résultat final souhaité.

Exemple(s) :

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

Quand on spécifie un azimuth spatial, l'appareil de sortie ne pouvant produire de sons en arrière de la position de l'auditeur, les agents utilisateurs devraient convertir ces valeurs de l'hémisphère arrière pour les ramener vers l'hémisphère avant. En voici une méthode :

'elevation'
Valeur :  <angle> | below | level | above | higher | lower | inherit
Initiale :  level
S'applique à :  tous les éléments
Héritée :  oui
Pourcentage :  sans objet
Médias :  auditif

Les significations des valeurs sont :

<angle>
Spécifie l'angle d'élévation compris entre les valeurs '-90deg' et '90deg'. La valeur '0deg' indique une position en face à l'horizontale, à peu près de niveau avec l'auditeur. La valeur '90deg' signifie directement au-dessus et '-90deg' directement au-dessous de celui-ci ;
below
Équivaut à '-90deg'.
level
Équivaut à '0deg' ;
above
Équivaut à '90deg'.
higher
Ajoute 10 degrés à l'élévation courante ;
lower
Soustrait 10 degrés à l'élévation courante.

Les moyens précis d'obtenir cet effet ainsi que le nombre de haut-parleurs nécessaires pour cela ne sont pas définis. Cette propriété décrit simplement le résultat final souhaité.

Exemple(s) :

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

19.8 Les propriétés des caractéristiques des voix : 'speech-rate', 'voice-family', 'pitch', 'pitch-range', 'stress' et 'richness'

'speech-rate'
Valeur :  <nombre> | x-slow | slow | medium | fast | x-fast | faster | slower | inherit
Initiale :  medium
S'applique à :  tous les éléments
Héritée :  oui
Pourcentage :  sans objet
Médias :  auditif

Cette propriété spécifie le débit de la parole. Noter que des valeurs de mots-clés absolus et relatifs sont à la fois admises (à comparer avec la propriété 'font-size'). Les significations des valeurs sont :

<nombre>
Spécifie le débit de parole en mots par minute, celui-ci, bien que variant selon la langue, est une quantité largement reconnue par les synthétiseurs de parole ;
x-slow
Équivaut à 80 mots par minute ;
slow
Équivaut à 120 mots par minute ;
medium
Équivaut à 180 - 200 mots par minute ;
fast
Équivaut à 300 mots par minute ;
x-fast
Équivaut à 500 mots par minute ;
faster
Ajoute 40 mots par minute au débit courant ;
slower
Soustrait 40 mots par minute au débit courant.
'voice-family'
Valeur :  [[<voix-spécifique> | <voix-générique> ],]* [<voix-spécifique> | <voix-générique> ] | inherit
Initiale :  selon l'agent utilisateur
S'applique à :  tous les éléments
Héritée :  oui
Pourcentage :  sans objet
Médias :  auditif

La valeur est une liste de noms de familles de voix, séparés par une virgule et par ordre de priorité (à comparer avec 'font-family'). Les significations des valeurs sont :

<voix-générique>
Ce sont des familles de voix. Les valeurs admises sont 'male', 'female' et 'child' ;
<voix-spécifique>
Ces valeurs sont des instances spécifiques (ex. comedian, trinoids, carlos, lani, etc.) ;

Exemple(s) :

H1 { voice-family: announcer, male }
P.part.romeo  { voice-family: romeo, male }
P.part.juliet { voice-family: juliet, female }

On peut mettre les noms des voix spécifiques entre guillemets et on doit en effet le faire si un mot éventuel formant le nom ne se conforme pas aux règles de syntaxe pour les identificateurs. On recommande aussi les guillemets pour les noms des voix spécifiques composés de plusieurs mots. Si on omet ces guillemets, les caractères blancs survenant avant ou après le nom de la police famille de voix sont ignorés et toute séquence de blancs dans le nom de la police famille de voix sont converties en un seul espace.

'pitch'
Valeur :  <fréquence> | x-low | low | medium | high | x-high | inherit
Initiale :  medium
S'applique à :  tous les éléments
Héritée :  oui
Pourcentage :  sans objet
Médias :  auditif

Cette propriété spécifie la tonalité moyenne (une fréquence) de la voix. Celle-ci dépend de la famille de voix. Par exemple, la tonalité moyenne pour une voix masculine se situe aux alentours de 120 Hz et pour une voix féminine aux alentours de 210 Hz.

Les significations des valeurs sont :

<fréquence>
Spécifie la tonalité moyenne de la voix courante en hertz (Hz) ;
x-low, low, medium, high, x-high
Ces valeurs ne correspondent pas à des fréquences absolues, ces valeurs dépendant de la famille de voix. Les agents utilisateurs devraient faire correspondre celles-ci avec des fréquences appropriées en fonction de la famille de voix et de l'environnement de l'utilisateur. Cependant, cette correspondance doit se faire dans un ordre cohérent (c.à.d. la valeur 'x-low' a une fréquence inférieure à celle de 'low', etc.).
'pitch-range'
Valeur :  <nombre> | inherit
Initiale :  50
S'applique à :  tous les éléments
Héritée :  oui
Pourcentage :  sans objet
Médias :  auditif

Cette propriété spécifie la variation d'une tonalité moyenne. La perception de la tonalité d'une voix humaine est déterminée par la fréquence fondamentale, la valeur typique de celle-ci étant 120Hz pour une voix masculine et 210Hz pour une voix féminine. Les langues humaines comportent des inflexions et des tonalités variables, ces variations véhiculent des significations supplémentaires et des accentuations. Ainsi, une voix exaltée, qui a beaucoup d'inflexions, affiche une grande variation de tonalité. Cette propriété donne l'étendue de cette variation, c.à.d. de combien la fréquence fondamentale peut dévier par rapport à la tonalité moyenne.

Les significations des valeurs sont :

<nombre>
Une valeur entre '0' et '100'. Une variation de tonalité de '0' produit une voix terne et monotone. Une variation de '50' correspond à une voix avec des inflexions normales. Pour des valeur supérieures à '50', la voie devient de plus en plus exaltée.
'stress'
Valeur :  <nombre> | inherit
Initiale :  50
S'applique à ::  tous les éléments
Héritée :  oui
Pourcentage :  sans objet
Médias :  auditif

Cette propriété spécifie la hauteur des "pics locaux" dans le profil de l'intonation d'une voix. Par exemple, l'anglais est une langue accentuée, différentes parties d'une phrase recevant une accentuation primaire, secondaire ou tertiaire. La valeur de la propriété 'stress' régit l'ampleur de l'inflexion survenant à l'endroit de ces accentuations. Cette propriété s'utilise en conjonction avec la propriété 'pitch-range' et permet aux développeurs l'exploitation d'appareils auditifs de haute performance.

Les significations des valeurs sont :

<nombre>
Une valeur entre '0' et '100'. L'interprétation de celle-ci dépend de la langue employée. Soit, par exemple, une valeur de '50' pour une voix masculine moyenne anglaise (tonalité moyenne = 122 Hz) avec une intonation et une accentuation normale, toutes choses étant égales, une voix italienne aurait un autre sens.
'richness'
Valeur :  <nombre> | inherit
Initiale :  50
S'applique à :  tous les éléments
Héritée :  oui
Pourcentage :  sans objet
Médias :  auditif

Cette propriété spécifie l'ampleur, ou la clarté, d'une voix. Une voix ample va "porter" dans une grande pièce, au contraire d'une voix douce (le terme "douce" se réfère au dessin de la forme de la vibration).

Les significations des valeurs sont :

<nombre>
Une valeur entre '0' et '100'. Plus la valeur est grande, plus la voix va porter. Une valeur plus faible produira une voix douce et mélodieuse.

19.9 Les propriétés de diction : 'speak-punctuation' et 'speak-numeral'

Une propriété de diction supplémentaire, speak-header, est décrite dans le chapitre sur les tables.

'speak-punctuation'
Valeur :  code | none | inherit
Initiale :  none
S'applique à :  tous les éléments
Héritée :  oui
Pourcentage :  sans objet
Médias :  auditif

Cette propriété spécifie comment lire les signes de ponctuation. Les significations des valeurs sont :

code
Les signes de ponctuation, telles que les points-virgules, les accolades et tout le reste, sont lus littéralement ;
none
Les signes de ponctuation ne sont pas lus, mais plutôt rendus naturellement, avec des pauses diverses.
'speak-numeral'
Valeur :  digits | continuous | inherit
Initiale :  continuous
S'applique à :  tous les éléments
Héritée :  oui
Pourcentage :  sans objet
Médias :  auditif

Cette propriété contrôle la façon de lire les nombres. Les significations des valeurs sont :

digits
Lit les nombres décomposés en leurs chiffres individuels. Ainsi, le nombre "237" est lu "deux trois sept" ;
continuous
Lit les nombres dans leur forme globale. Ainsi, le nombre "237" est lu "deux cent trente sept", leur représentation textuelles dépendant de la langue.