19 Fogli di stile acustici

Sommario

19.1 Introduzione ai fogli di stile acustici

La resa acustica di un documento, già usata comunemente dalle comunità dei non-vedenti e delle persone che non possono leggere a causa di una disabilità fisica o visiva, combina la sintesi vocale e "icone uditive." Spesso tale presentazione acustica si ottiene convertendo il documento in testo semplice e fornendo tale testo ad un lettore di schermo -- software o hardware che semplicemente legge tutti i caratteri sullo schermo. Ne consegue una minore presentazione effettiva rispetto al caso in cui fosse stata conservata la struttura del documento. Le proprietà dei fogli di stile per la presentazione acustica possono essere usate unitamente con le proprietà visuali (media misti) o come un'alternativa acustica alla presentazione visuale.

A parte gli ovvi vantaggi in fatto di accessibilità, vi sono altri ampi mercati per l'ascolto delle informazioni, inclusi l'uso in auto, i sistemi di documentazione industriale e medica (intranet), l'intrattenimento domestico [home entertainment], e l'aiuto fornito agli utenti che imparano a leggere o che hanno difficoltà nella lettura.

Quando si usano le proprietà acustiche, il canovaccio [canvas, lo spazio in cui la struttura di formattazione è riprodotta] consiste di uno spazio fisico tridimensionale (che circonda il suono) e di uno spazio temporale (si possono specificare i suoni prima, durante e dopo altri suoni). Le proprietà CSS consentono inoltre agli autori di variare la qualità del parlato sintetizzato (tipo di voce, frequenza, modulazione, ecc.).

Esempi(o):

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 }

Queste regole istruiranno il sintetizzatore vocale a pronunciare le intestazioni con una voce (una sorta di "font audio") chiamata "paul", con un tono uniforme, ma con voce intensa. Prima che vengano pronunciate le intestazioni, un file audio verrà riprodotto dall'URL dato. I paragrafi con classe "heidi" sembreranno provenire dal davanti, a sinistra (se il sistema è in grado di riprodurre un audio spaziale), e i paragrafi di classe "peter" dalla destra. I paragrafi con classe "goat" saranno molto sommessi.

19.2 Proprietà: 'volume'

'volume'
Valore:  <number> | <percentage> | silent | x-soft | soft | medium | loud | x-loud | inherit
Iniziale:  medium
Si applica a:  tutti gli elementi
Ereditata:  si
Percentuali:  in riferimento al valore ereditato
Media:  acustico

Volume si riferisce al volume mediano della forma d'onda [waveform, termine della fisica]. In altri termini, una voce altamente modulata ad un volume di 50 potrebbe alzarsi ben oltre tale punto. I valori complessivi possono essere regolati dagli esseri umani per il comfort, per esempio con un controllo fisico del volume (che aumenterà i valori da 0 a 100 in modo proporzionale); quello che fa questa proprietà è regolare la gamma dinamica.

I valori hanno i seguenti significati:

<number>
Ogni numero fra '0' e '100'. '0' rappresenta il livello di volume minimo udibile e 100 corrisponde al livello massimo tollerabilee.
<percentage>
I valori percentuali sono calcolati in relazione al valore ereditato, e sono in seguito tagliati nella gamma da '0' a '100'.
silent
Nessun suono. Il valore '0' non ha lo stesso significato di 'silent'.
x-soft
Lo stesso che '0'.
soft
Lo stesso che '25'.
medium
Lo stesso che '50'.
loud
Lo stesso che '75'.
x-loud
Lo stesso che '100'.

I programmi utente dovrebbero permettere all'ascoltatore di impostare i valori corrispondenti a '0' e '100'. Nessuna impostazione è universalmente applicabile; i valori adatti dipendono dall'apparecchio in uso (casse acustiche, cuffie audio), dall'ambiente (in auto, in un ambiente di ascolto domestico [home theater], in biblioteca) e dalla preferenze personali. Alcuni esempi:

Il medesimo foglio di stile dell'autore potrebbe essere usato in tutti i casi, semplicemente correlando i punti '0' e '100' in modo conforme al lato client.

19.3 Proprietà del parlato: 'speak'

'speak'
Valore:  normal | none | spell-out | inherit
Iniziale:  normal
Si applica a:  tutti gli elementi
Ereditata:  si
Percentuali:  N/A
Media:  acustico

Questa proprietà specifica se il testo sarà reso acusticamente e se si, in che modo (qualcosa di analogo alla proprietà 'display'). I possibili valori sono:

none
Sopprime la resa acustica, in modo tale che l'elemento non ha bisogno di tempo per essere reso. Si noti, tuttavia, che i discendenti possono sovrascrivere questo valore e saranno pronunciati. (Per essere sicuri di sopprimere la resa di un elemento e dei suoi discendenti, si usi la proprietà 'display').
normal
Usa le regole di pronuncia dipendenti dalla lingua per rendere un elemento ed i suoi figli.
spell-out
Scandisce il testo una lettera per volta (utile per acronimi e abbreviazioni).

Si noti la differenza fra un elemento la cui proprietà 'volume' ha un valore di 'silent' e un elemento la cui proprietà 'speak' ha il valore 'none'. Il primo impiega lo stesso tempo di quello che avrebbe impiegato se fosse stato pronunciato, inclusa ogni pausa prima e dopo l'elemento, ma nessun suono viene generato. Il secondo non richiede tempo e non viene reso (sebbene i suoi discendenti possano essere resi).

19.4 Proprietà della pausa: 'pause-before', 'pause-after', e 'pause'

'pause-before'
Valore:  <time> | <percentage> | inherit
Iniziale:  dipende dal programma utente
Si applica a:  tutti gli elementi
Ereditata:  no
Percentuali:  si veda il testo
Media:  acustico
'pause-after'
Valore:  <time> | <percentage> | inherit
Iniziale:  dipende dal programma utente
Si applica a:  tutti gli elementi
Ereditata:  no
Percentuali:  si veda il testo
Media:  acustico

Questa proprietà specifica una pausa da osservare prima (o dopo) la pronuncia del contenuto di un elemento. I valori hanno i seguenti significati:

<time>
Esprime la pausa in unità di tempo assolute (secondi e millisecondi).
<percentage>
Si riferisce all'inverso del valore della proprietà 'speech-rate'. Per esempio, se la velocità di pronuncia è di 120 parole al minuto (ossia una parola dura mezzo secondo, o 500ms) allora un valore di 'pause-before' pari a 100% significa una pausa di 500 ms e un valore di 'pause-before' pari al 20% significa 100ms.

La pausa è inserita tra il contenuto dell'elemento e ogni contenuto 'cue-before' o 'cue-after'.

Gli autori dovrebbero usare unità relative per creare fogli di stile più robusti di fronte ai grandi cambiamenti nella velocità di pronuncia.

'pause'
Valore:  [ [<time> | <percentage>]{1,2} ] | inherit
Iniziale:  dipende dal programma utente
Si applica a:  tutti gli elementi
Ereditata:  no
Percentuali:  si vedano le descrizioni di 'pause-before' e 'pause-after'
Media:  acustico

La proprietà 'pause' è una proprietà stenografica [shorthand, o abbreviata] per impostare sia 'pause-before' che 'pause-after'. Se vengono dati due valori, il primo valore è 'pause-before' e il secondo 'pause-after'. Se viene dato un solo valore, si applica a entrambe le proprietà.

Esempi(o):

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 Proprietà del segnale acustico: 'cue-before', 'cue-after', e 'cue'

'cue-before'
Valore:  <uri> | none | inherit
Iniziale:  none
Si applica a:  tutti gli elementi
Ereditata:  no
Percentuali:  N/A
Media:  acustico
'cue-after'
Valore:  <uri> | none | inherit
Iniziale:  none
Si applica a:  tutti gli elementi
Ereditata:  no
Percentuali:  N/A
Media:  acustico

Le icone uditive sono un altro modo per distinguere gli elementi semantici. I suoni possono essere riprodotti prima e/o dopo l'elemento per delimitarlo. I valori hanno i seguenti significati:

<uri>
L'URI deve designare la risorsa di un'icona uditiva. Se l'URI punta a qualcosa di diverso da un file audio, come un'immagine, la risorsa dovrebbe essere ignorata e la proprietà trattata come se avesse valore 'none'.
none
Nessuna icona uditiva è specificata.

Esempi(o):

A {cue-before: url("bell.aiff"); cue-after: url("dong.wav") }
H1 {cue-before: url("pop.au"); cue-after: url("pop.au") }
'cue'
Valore:  [ <'cue-before'> || <'cue-after'> ] | inherit
Iniziale:  non definito per le proprietà stenografiche
Si applica a:  tutti gli elementi
Ereditata:  no
Percentuali:  N/A
Media:  acustico

La proprietà 'cue' è una proprietà stenografica per impostare sia 'cue-before' che 'cue-after'. Se vengono dati due valori, il primo valore è 'cue-before' e il secondo 'cue-after'. Se viene dato un solo valore, si applica ad entrambe le proprietà.

Esempi(o):

Le seguenti due regole sono equivalenti:

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

Se un programma utente non può rendere un'icona uditiva (per esempio l'ambiente dell'utente non lo permette), si raccomanda di produrre un segnale acustico alternativo (ossia tramite una finestra a comparsa di avvertimento, emettendo un suono di avvertimento, ecc.)

Si prega di vedere le sezioni sugli pseudo-elementi :before e :after per informazioni sulle tecniche di generazione dei contenuti.

19.6 Proprietà del missaggio: 'play-during'

'play-during'
Valore:  <uri> mix? repeat? | auto | none | inherit
Iniziale:  auto
Si applica a:  tutti gli elementi
Ereditata:  no
Percentuali:  N/A
Media:  acustico

Simile alle proprietà 'cue-before' e 'cue-after', questa proprietà specifica un suono da riprodurre come sottofondo mentre il contenuto di un elemento viene pronunciato. I valori hanno i seguenti significati:

<uri>
Il suono indicato da questo <uri> è riprodotto come sottofondo mentre il contenuto dell'elemento viene pronunciato.
mix
Se presente, questa parola chiave indica che il suono ereditato dalla proprietà 'play-during' dell'elemento genitore continua ad essere riprodotto e il suono indicato dallo <uri> viene missato con lui. Se 'mix' non è specificato, il suono di sottofondo dell'elemento rimpiazza quello del genitore.
repeat
Se presente, questa parola chiave indica che il suono verrà ripetuto se è troppo breve per riempire l'intera durata dell'elemento. Altrimenti, il suono viene riprodotto una volta e poi cessa. Ciò è simile alla proprietà 'background-repeat'. Se il suono è troppo lungo per l'elemento, viene tagliato una volta che l'elemento è stato pronunciato.
auto
Il suono dell'elemento genitore continua ad essere riprodotto (non viene fatto ripartire, cosa che sarebbe avvenuta se questa proprietà fosse stata ereditata).
none
Questa parola chiave indica che c'è silenzio. Il suono dell'elemento genitore (se ce n'è uno) cessa durante l'elemento corrente e riprende dopo l'elemento corrente.

Example(s):

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

19.7 Proprietà spaziali: 'azimuth' e 'elevation'

L'audio spaziale è un'importante proprietà stilistica per la presentazione acustica. Fornisce un modo naturale per distinguere diverse voci, come nella vita reale (le persone raramente stanno tutte nello stesso punto in una stanza). Le casse di uno stereo producono un piano laterale sonoro. Cuffie audio biauricolari o le sempre più popolari impostazioni a cinque casse degli impianti stereo domestici possono generare un suono pienamente avvolgente, e le impostazioni multi-cassa possono creare un vero e proprio piano sonoro tridimensionale. VRML 2.0 include anche l'audio spaziale, il che implica che allo stato attuale i prezzi al consumo di hardware per l'audio spaziale diventeranno sempre più accessibili.

'azimuth'
Valore:  <angle> | [[ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards | inherit
Iniziale:  center
Si applica a:  tutti gli elementi
Ereditata:  si
Percentuali:  N/A
Media:  acustico

I valori hanno i seguenti significati:

<angle>
La posizione è descritta nei termini di un angolo nel raggio che va da '-360deg' a '360deg'. Il valore '0deg' indica una posizione proprio nel centro del piano sonoro. '90deg' è alla destra, '180deg' dietro, e '270deg' (o, in modo equivalente e più conveniente, '-90deg') alla sinistra.
left-side
Lo stesso che '270deg'. Con 'behind', '270deg'.
far-left
Lo stesso che '300deg'. Con 'behind', '240deg'.
left
Lo stesso che '320deg'. Con 'behind', '220deg'.
center-left
Lo stesso che '340deg'. Con 'behind', '200deg'.
center
Lo stesso che '0deg'. Con 'behind', '180deg'.
center-right
Lo stesso che '20deg'. Con 'behind', '160deg'.
right
Lo stesso che '40deg'. Con 'behind', '140deg'.
far-right
Lo stesso che '60deg'. Con 'behind', '120deg'.
right-side
Lo stesso che '90deg'. Con 'behind', '90deg'.
leftwards
Muove il suono a sinistra, relativamente all'angolo corrente. Più precisamente, sottrae 20 degree [degree, grado angolare]. Il calcolo aritmetico è eseguito su un modulo di 360 degree. Si noti che 'leftwards' è più accuratamente descritto come "girato in senso antiorario," poichè sottrae sempre 20 degree, anche se l'azimuth ereditato è già dietro l'ascoltatore (nel qual caso il suono sembra effettivamente muoversi a destra).
rightwards
Muove il suono a destra, relativamente all'angolo corrente. Più precisamente aggiunge 20 degree. Si veda 'leftwards' per il calcolo aritmetico.

Questa proprietà potrebbe essere implementata missando lo stesso segnale su differenti canali a volumi differenti. Si potrebbe anche usare uno sfasamento [phase shifting, termine elettronico], un ritardo digitale e altre tecniche del genere per dare l'illusione di un piano sonoro. I mezzi precisi usati per ottenere questo effetto e il numero di casse acustiche usate dipendono dal programma utente; questa proprietà identifica soltanto il risultato finale desiderato.

Esempio(o):

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

Se l'azimuth spaziale è specificato e il dispositivo di output non è in grado di produrre suoni dietro la postazione di ascolto, i programmi utente dovrebbero convertire i valori della parte posteriore della semisfera d'ascolto in valori della parte anteriore di tale semisfera. Un metodo è il seguente:

'elevation'
Valore:  <angle> | below | level | above | higher | lower | inherit
Iniziale:  level
Si applica a:  tutti gli elementi
Ereditata:  si
Percentuali:  N/A
Media:  acustico

I valori di questa proprietà hanno i seguenti significati:

<angle>
Specifica l'elevazione come un angolo compreso fra '-90deg' e '90deg'. '0deg' sta ad indicare (in senso ampio) la posizione sull'orizzonte frontale rispetto al livello dell'ascoltatore. '90deg' significa direttamente in alto e '-90deg' direttamente in basso.
below
Lo stesso che '-90deg'.
level
Lo stesso che '0deg'.
above
Lo stesso che '90deg'.
higher
Aggiunge 10 degree all'elevazione corrente.
lower
Sottrae 10 degree dall'elevazione corrente.

I mezzi precisi usati per ottenere questo effetto così come il numero di casse acustiche per far ciò non sono definiti. Questa proprietà indentifica soltanto il risultato finale desiderato.

Esempi(o):

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

19.8 Proprietà delle caratteristiche vocali: 'speech-rate', 'voice-family', 'pitch', 'pitch-range', 'stress', e 'richness'

'speech-rate'
Valore:  <number> | x-slow | slow | medium | fast | x-fast | faster | slower | inherit
Iniziale:  medium
Si applica a:  tutti gli elementi
Ereditata:  si
Percentuali:  N/A
Media:  acustico

Questa proprietà specifica la velocità del parlato. Si noti che i valori delle parole chiave relativi ed assoluti sono entrambi consentiti (si faccia una comparazione con 'font-size'). I valori hanno i seguenti significati:

<number>
Specifica la velocità del parlato in parole al minuto, una quantità che varia alquanto secondo la lingua, ma che è nondimeno ampiamente supportata dai sintetizzatori vocali.
x-slow
Lo stesso che 80 parole al minuto.
slow
Lo stesso che 120 parole al minuto.
medium
Lo stesso che 180 - 200 parole al minuto.
fast
Lo stesso che 300 parole al minuto.
x-fast
Lo stesso che 500 parole al minuto.
faster
Aggiunge 40 parole al minuto alla velocità corrente del parlato.
slower
Sottrae 40 parole al minuto dalla velocità corrente del parlato.
'voice-family'
Valore:  [[<specific-voice> | <generic-voice> ],]* [<specific-voice> | <generic-voice> ] | inherit
Iniziale:  dipende dal programma utente
Si applica a:  tutti gli elementi
Ereditata:  si
Percentuali:  N/A
Media:  acustico

Il valore è un elenco separato da virgola, ordinato secondo priorità, di nomi di famiglia della voce (si faccia una comparazione con 'font-family'). I valori hanno i seguenti significati:

<generic-voice>
I valori sono famiglie della voce. I possibili valori sono 'male' [male, maschile], 'female' [female, femminile] e 'child' [child, infantile].
<specific-voice>
I valori sono istanze specifiche (per esempio comedian, trinoids, carlos, lani).

Esempi(o):

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

I nomi di voci specifiche possono essere racchiusi tra virgolette, e devono invece essere racchiusi tra virgolette se una delle parole che costituiscono il nome non è conforme alle regole sintattiche per gli identificatori. Si raccomanda inoltre di racchiudere fra virgolette le voci specifiche con un nome formato da più di una parola. Se le virgolette sono omesse, tutti i caratteri di spazio bianco prima e dopo il nome sono ignorati e ogni sequenza di caratteri di spazio bianco all'interno del nome viene convertita in un singolo spazio.

'pitch'
Valore:  <frequency> | x-low | low | medium | high | x-high | inherit
Iniziale:  medium
Si applica:  tutti gli elementi
Ereditata:  si
Percentuali:  N/A
Media:  acustico

Specifica il grado di intensità medio (una frequenza) della voce parlante. Il grado di intensità medio di una voce dipende dalla famiglia della voce. Per esempio, il grado di intensità medio per una voce standard maschile è intorno ai 120Hz, ma per una voce femminile è intorno ai 210Hz.

Values have the following meanings:

<frequency>
Specifica il grado di intensità medio della voce parlante in hertz (Hz).
x-low, low, medium, high, x-high
Questi valori non sono correlati a frequenze assolute, poichè dipendono dalla famiglia della voce. I programmi utente dovrebbero correlare questi valori alle frequenze appropriate basandosi sulla famiglia della voce e l'ambiente dell'utente. Tuttavia, i programmi utente devono correlare questi valori in ordine (ossia 'x-low' è una frequenza più bassa di 'low', ecc.).
'pitch-range'
Valore:  <number> | inherit
Iniziale:  50
Si applica a:  tutti gli elementi
Ereditata:  si
Percentuali:  N/A
Media:  acustico

Specifica la variazione nel grado di intensità medio. Il grado di intensità percepito di una voce umana è determinato dalla frequenza fondamentale e di solito ha un valore di 120Hz per una voce maschile e 210Hz per una voce femminile. Le lingue umane sono parlate con inflessione e grado di intensità vari; queste variazioni aggiungono un significato ed un'enfasi aggiuntivi. Così, una voce molto animata, ossia che ha una forte inflessione, mostra un'ampia gamma di tonalità. Questa proprietà specifica la gamma su cui ricorrono queste variazioni, ossia di qaunto la frequenza fondamentale può deviare dal grado di intensità medio.

I valori hanno i seguenti significati:

<number>
Un valore fra '0' e '100'. Una gamma di tonalità pari a '0' produce una voce uniforme e monotona. Una gamma di tonalità pari a 50 produce un'inflessione normale. Gamme di tonalità superiori a 50 producono voci animate.
'stress'
Valore:  <number> | inherit
Iniziale:  50
Si applica a:  tutti gli elementi
Ereditata:  si
Percentuali:  N/A
Media:  acustico

Specifica l'altezza dei "picchi locali" nel profilo di intonazione di una voce. Per esempio, l'inglese è una lingua accentata, e a differenti parti di una frase viene assegnato un accento primario, secondario o terziario. Il valore di 'stress' controlla la quantità di inflessione risultante da questi indicatori di accento. Questa proprietà è compagna della proprietà 'pitch-range' e viene fornita agli sviluppatori per sfruttare presentazioni uditive di risultato superiore.

I valori hanno i seguenti significati:

<number>
Un valore, fra '0' e '100'. Il significato dei valori dipende dalla lingua parlata. Per esempio, un livello di '50' per una voce inglese maschile standard (grado di intensità medio = 122Hz), che parla con intonazione ed enfasi normali, avrebbe un significato diverso da un '50' per una voce italiana.
'richness'
Valore:  <number> | inherit
Iniziale:  50
Si applica a:  tutti gli elementi
Ereditata:  si
Percentuali:  N/A
Media:  acustico

Specifica la profondità, o vivacità, della voce parlante. Una voce profonda si "protrarrà" in una stanza grande, una voce piana no. (Il termine "piana" si riferisce all'aspetto della forma dell'onda acustica quando viene tracciata.)

I valori hanno i seguenti significati:

<number>
Un valore fra '0' e '100'. Più alto è il valore, più la voce si protrarrà. Un valore basso produrrà una voce piana, melliflua.

19.9 Proprietà del discorso: 'speak-punctuation' e 'speak-numeral'

Una proprietà aggiuntiva del discorso, speak-header, è descritta nel capitolo sulle tabelle

'speak-punctuation'
Valore:  code | none | inherit
Iniziale:  none
Si applica a:  tutti gli elementi
Ereditata:  si
Percentuali:  N/A
Media:  acustico

Questa proprietà specifica come viene pronunciata la punteggiatura. I valori hanno i seguenti significati:

code
La punteggiatura come punti e virgola, graffe e così via, deve essere pronunciata letteralmente.
none
La punteggiatura non deve essere pronunciata, ma invece resa naturalmente sotto forma di varie pause.
'speak-numeral'
Valore:  digits | continuous | inherit
Iniziale:  continuous
Si applica a:  tutti gli elementi
Ereditata:  si
Percentuali:  N/A
Media:  acustico

Questa proprietà controlla il modo in cui vengono pronunciati i numerali. I valori hanno i seguenti significati:

digits
Pronuncia il numerale in cifre singole. Così, "237" è pronunciato "Due Tre Sette".
continuous
Pronuncia il numerale come un numero completo. Così, "237" è pronunciato "Duecentotrentasette". Le rappresentazioni della parola dipendono dalla lingua.