![]() |
giovedì 25 Novembre 1999 UNA MACCHINA
CHE PARLA |
"Nell'ottica di rendere
più semplice e facile lo scambio di informazioni tra l'uomo
e le macchine, da tempo si sta studiando, in centri di ricerca
di tutto il mondo, di estendere agli elaboratori elettronici una
facoltà considerata specifica degli esseri umani, la possibilità
di comunicare attraverso il linguaggio parlato".
Così Stefano Sandri, un ricercatore dello Cselt, apriva
nel 1985 un articolo su Le Scienze per illustrare i progressi
e le speranze nel settore della sintesi della voce da parte di
un calcolatore elettronico.
A più di dieci anni di distanza, il colloquio vocale tra
uomini e macchine è però ancora limitato a piccole
nicchie ed i progressi sembrano siano stati molto limitati.
Un calcolatore con la
bocca
Verso la fine degli anni '70 esistevano già numerosi esempi
in varie lingue di calcolatori in grado di leggere un testo scritto.
Il parlare ovviamente non è una semplice conversione in
voce di un testo scritto, ma questo costituiva un meccanismo dimostrativo
particolarmente convincente delle capacità realizzate.
Alcuni calcolatori avevano anche imparato a cantare ed anzi erano
migliori cantanti che parlatori.
Le strade per insegnare a parlare, adottate dai ricercatori, erano
sostanzialmente due: una si basava sulla creazione di un modello
del parlato umano (di come cioè le diverse attività
cerebrali e muscolari portavano alla vocalizzazione), l'altra
utilizzava frammenti molto piccoli di parlato umano che opportunamente
combinati permettessero di esprimere qualunque concetto.
Questi due approcci sono ancora oggi utilizzati e, come si vedrà,
non sono del tutto alternativi Anzi tendono a combinarsi in vario
modo.
Imparare dall'uomo
Se si riuscisse a creare un modello del parlato umano tramite
un insieme di regole sarebbe possibile esprimere qualunque frase.
Quanto più il modello è rappresentativo di tutti
gli aspetti del parlato tanto più si riuscirebbe a ricreare
una parlata dal timbro naturale. Questa rappresentatività
richiede il contributo di esperti di fonetica, linguistica, acustica,
teoria dei segnali, elettronica e informatica.
La soluzione generale è ancora fuori dalla portata delle
attuali conoscenze ed i ricercatori hanno scelto di concentrare
i loro sforzi per realizzare modelli della cosiddetta sintesi
articolatoria (sintassi, lessico, vocalizzazione); ovvero di quella
parte di produzione della voce che riguarda i vari organi del
canale vocale umano. In questo approccio si tralascia la costruzione
del modello delle attività cerebrali che portano dal concetto
alla costruzione della rappresentazione della frase (rappresentazione
concettuale e semantica). In altri approcci invece si modella
anche la struttura profonda della frase.
L'insieme di regole da
costruire per la sintesi articolatoria è piuttosto complesso,
ma un vantaggio importante sta nella poca memoria che risulta
necessaria per far parlare il calcolatore. Questo è forse
il motivo principale per cui all'inizio i ricercatori hanno insistito
molto su questo approccio. La memoria era una risorsa scarsa.
Peraltro l'esecuzione di queste modelli richiede una notevole
capacità di elaborazione, il che limitava questo tipo di
approccio al laboratorio.
Una variante alla sintesi articolatoria è la sintesi per
formanti: in questo caso si fa riferimento alle caratteristiche
acustiche del canale vocale in termini di risonanze e antirisonanze.
Viene creata una serie di "generatori" di suono, simulando
le caratteristiche spettrali dei diversi suoni tramite composizioni
in serie e in parallelo di vari risuonatori, ciascuno accordato
su frequenze specifiche dette "formanti". Le regole
di sintesi descrivono le posizioni delle formanti nei diversi
fonemi e regole apposite descrivono la variazione delle formanti
nel passaggio da un fonema al successivo, ovvero il fatto che
il suono che noi produciamo può essere funzione del suono
che produrremo successivamente (co-articolazione).
L'aspetto più interessante di questi approcci è
la continua interazione che viene attivata tra i diversi livelli
e che consente di variare il parlato sulla base del contesto globale.
Così il singolo fonema, che deve essere pronunciato, sarà
variato sulla base del fonema precedente e di quello seguente,
della parola complessiva e della sua posizione nella frase, del
tipo di frase e del significato che questa assume nel contesto.
Un puzzle di suoni
Nella sintesi per frammenti la frase parlata viene costruita giustapponendo
sequenze opportune di pezzetti di voce. Ciascun pezzetto di voce
viene ricavato segmentando la voce di un parlatore umano e memorizzandole
le parti. Quando serve viene prelevato ed inserito a formare la
frase parlata.
È interessante capire il processo di frammentazione: se
"vediamo" l'immagine di una parola in termini di onda
sonora (spettrogramma) non osserviamo una netta separazione tra
una "lettera" e la successiva. Dove andiamo allora a
tagliare la voce per enucleare una vocale, una sillaba, una parola?
Negli spettrogrammi si nota che vi sono dei tratti di bassa energia
sonora: se si agganciano due "pezzi" di voce in quei
tratti il nostro orecchio non percepirà discontinuità
e la voce sembrerà naturale. Lo stesso vale se la separazione,
e la successiva ricomposizione, avviene in tratti ad energia costante
quali si verificano a metà (circa) di una vocale.
Importante è anche la scelta della voce da frammentare.
Per ottenere dei frammenti di tipo neutro e quindi adatti alla
ricomposizione per la lettura di testi si utilizzavano dei parlatori
a cui veniva chiesto di pronunciare frasi senza senso (e che come
tali non inducevano il lettore a dare enfasi particolari). Un
esempio: "devo dire papapa chiaramente". Questa frase
era utile per isolare frammenti di "pa".
Una volta registrata la frase parlata, un operatore specializzato
analizzava la forma d'onda corrispondente e decideva dove sezionare,
memorizzando poi il frammento con la sua descrizione per il successivo
utilizzo. Il processo era ovviamente lungo e complesso e costituiva
di per sé un limite al numero di frammenti che si potevano
identificare e memorizzare.
La conformazione del nostro apparato vocale dà origine
a moltissimi suoni: gli studiosi si sono accordati per classificarli
in un numero limitato di fonemi fondamentali che in modo più
o meno buono li rappresenta tutti. Inoltre il suono emesso non
è una sequenza di fonemi, ma un continuo di fonemi e transizioni
da un fonema all'altro e questo è ciò che il nostro
orecchio percepisce. Per cercare di catturare le transizioni da
un fonema all'altro sono stati "inventati" i difoni,
la concatenazione della seconda metà di un fonema con la
prima metà del fonema successivo.
Sappiamo anche che il fenomeno della co-articolazione porta ad
introdurre delle variazioni alla pronuncia e quindi diventa necessario
intervenire sui difoni. Quanto e quando occorre intervenire?
E' abbastanza intuitivo che quanti più difoni abbiamo memorizzato
e tanto più facile dovrebbe essere trovare un difono adatto
(che cioè non necessita di variazioni), peraltro quanti
più sono i difoni che memorizziamo tanto maggiore è
lo spazio di memoria richiesto e la difficoltà di scelta.
Venti anni fa la sintesi per la lingua italiana realizzata da
Cselt utilizzava 150 difoni con un'occupazione di memoria di 100.000
byte. Nella sintesi recentemente utilizzata in alcune applicazioni,
quale quella per la lettura degli orari ferroviari attivata recentemente
dalle Ferrovie dello Stato, e basata su di un sintetizzatore vocale
realizzato nel 1992, si utilizzano 1200 difoni risultanti da una
composizione di 45 fonemi base per la lingua italiana con un'occupazione
di circa 4 milioni di byte.
La voce risultante ha una buona intelligibilità, ma mantiene
una timbrica metallica che immediatamente viene percepita come
"non umana". Come mai una voce ricostruita a partire
da una voce umana diventa "non umana" solo per il fatto
di averla frammentata e ricomposta?
Ciò che rende innaturale la frase vocalizzata è
una non corretta distribuzione del tono, delle durate e delle
intensità dei suoni e una impropria collocazione delle
pause, quello che in termini tecnici si chiama prosodia: il modo
cioè con cui la frase è pronunciata. A questo punto
occorre intervenire con un insieme di regole che sulla base di
quanto viene detto e del suo significato riescano a introdurre
una pronuncia corretta.
Ciò può
essere realizzato interagendo con i livelli più alti della
catena che dal concetto porta alla vocalizzazione oppure (almeno
in molti casi) facendo ricorso ad un maggior numero di difoni
per scegliere quello più adatto "in termini di somiglianza".
Questo è l'approccio seguito dai ricercatori dello Cselt
nella realizzazione di un nuovo sistema di sintesi che in effetti
ha consentito di ottenere una voce quasi indistinguibile da una
voce naturale.
Per la scelta dei fonemi e dei difoni si è partiti da circa
200.000 frasi che sono state analizzate in termini statistici
e quindi ridotte ad un insieme di 1500 frasi, che sono rappresentative
ed hanno una intrinseca facilità di pronuncia. Queste ultime
sono state fatte leggere ad una persona e registrate da un calcolatore.
Un programma sviluppato apposta ha analizzato in modo automatico
le frasi registrate, isolando i fonemi, difoni e segmenti di parole,
e quindi scegliendo quelli da memorizzare (vengono memorizzati
sia fonemi distinti sia gli allofoni, quei fonemi che rappresentano
lo stesso suono ma articolato in modo diverso, e i difoni o frammenti
di parole più significativi in termini di ricorrenza).
La banca vocale risultante occupa uno spazio di oltre 160 milioni
di byte.
La ricostruzione viene effettuata andando a scegliere i frammenti
(difoni o segmenti di parola) che meglio si adattano tra loro
avendo le stesse caratteristiche acustiche (in genere si cerca
di trovare il livello minimo di energia in quanto il nostro orecchio
pone più attenzione al crescere dell'energia) ed allocando
i vari frammenti in modo tale che la frase vocalizzata abbia un
andamento naturale.
È possibile cambiare il timbro della voce per dare l'impressione
di parlatori diversi? Il passaggio da un timbro maschile ad uno
femminile non presenta eccessivi problemi. Con un programma ad
hoc sarebbe possibile "spostare" in fase di vocalizzazione
certi insiemi di frequenze caratterizzanti i diversi frammenti
memorizzati per fare apparire come femminile quella che prima
era una voce maschile.
Il sistema realizzato è molto soddisfacente in termini
di comprensibilità di lettura di un testo scritto e in
termini di prestazioni. Se attivato su un normale PC è
in grado di gestire 50-60 canali in contemporanea, cioè
di leggere testi diversi ad una sessantina di richiedenti.
Non è invece in grado di leggere interpretando il testo
come farebbe un attore. Per arrivare a questo occorre interagire
in modo molto stretto con i livelli di significato, cioè
essere in grado di capire che cosa si sta leggendo, portandoci
nel dominio della comprensione, essenziale per il riconoscimento
vocale.
Un calcolatore con le
orecchie
Secondo la tradizione il Buddha diceva che abbiamo due orecchie
ma una sola bocca per parlare poco ed ascoltare molto. Oggi un
calcolatore può ricevere suoni in modo codificato e disporre
di programmi che identificano i fonemi. Si è visto che
ad una parola potrebbero corrispondere milioni di vocalizzazioni
e se questo pone problemi a livello di sintesi nell'identificazione
di quale scegliere si può facilmente immaginare quali problemi
ponga nel processo inverso, cioè risalire alla parola dai
suoni percepiti.
Prendiamo per esempio la traduzione di una frase parlata in una
frase scritta. In questa trasformazione perdiamo un'enorme quantità
di informazioni (dal timbro del parlatore, all'enfasi posta su
certi vocaboli, all'ammiccamento degli occhi che potrebbe ribaltare
il significato della frase).
Lo stesso programma che analizza le parole parlate per identificare
i frammenti da inserire nella banca dati vocale può costituire
un primo tassello del processo di riconoscimento (solo uno in
quanto quel programma conosce le frasi che vengono dette e va
a cercare nei suoni la corrispondenza con i diversi segmenti di
frase, mentre nel caso del riconoscimento in generale non si sa
quale sia la frase che sarà pronunciata).
L'identificazione di un fonema (e quindi l'identificazione di
una particolare lettera o sequenza di lettere) non è quasi
mai un evento certo, ma piuttosto un evento più o meno
probabile. Per aumentare la probabilità di identificazione
occorre analizzare anche i fonemi precedenti e seguenti e verificare
se l'insieme di identificazioni probabili è essa stessa
probabile. In altre parole se riconosco con una certa probabilità
la lettera "a" e questa si trova in una sequenza di
identificazione che propone "c-a-n- e" dato che la parola
"cane" esiste nel vocabolario la probabilità
di riconoscimento corretto aumenta. Se nel contesto della frase
la parola "cane" non ha senso ma lo avrebbe la parola
"cene" allora è possibile che il riconoscimento
corretto non sia "a" ma "e". Si noti che "a"
potrebbe essere correttamente riconosciuta ma che sia non corretto
il riconoscimento di "n" (ad esempio la parola è
"cade").
Questo processo, a prima vista molto complicato, è abbastanza
simile a quello adottato dal nostro cervello che tende a riconoscere
le cose sentite in termini di probabilità. Questo avviene
anche per altri tipi di riconoscimento: è tipico il non
accorgersi di un errore di battitura leggendo un testo perché
il nostro cervello se sa che in un certo punto deve esserci la
lettera "a" trascura il fatto che ci sia invece scritta
un'altra lettera.
Se si ha bisogno di un riconoscimento certo il sistema costruisce
uno scenario di "riconoscimenti plausibili" e se questo
ne comprende più di uno si attiva un'interazione con il
parlatore per accertare la correttezza del più probabile.
Ad esempio il sistema può richiedere: "desidera andare
da Torino a Roma? Risponda sì o no." La differenza
sonora tra un sì ed un no consente sempre di riconoscere
la risposta e quindi di avere conferma del riconoscimento oppure
di procedere con una nuova domanda per chiedere conferma dello
scenario avente la seconda probabilità o per richiedere
nuovamente le informazioni.
E' ovvio che quanto più limitato è l'insieme delle
parole pronunciabili, tanto più affidabile è il
processo di riconoscimento.
La strategia si basa proprio sulla constatazione che man mano
che si riconosce qualcosa si escludono le alternative non coerenti
cercando di mantenere il più limitato possibile l'insieme
delle parole da riconoscere. Se il riconoscitore non è
più in grado di riconoscere una parola nell'insieme di
quelle che ritiene possibili, l'analisi riparte dall'inizio formulando
nuove ipotesi. In alcuni casi il riconoscitore si arrende e pone
al parlatore alcune domande che lo aiutano a ritrovare la bussola.
In alcuni casi interessa solo la comprensione di alcuni aspetti:
ad esempio in quello di un'applicazione che debba fornire un orario
ferroviario.
Nella frase "devo andare a Milano perché mia zia si
è ammalata" quello che interessa riconoscere è
che il richiedente vuole "andare a Milano" e quindi
il riconoscitore può trascurare la seconda parte. Con un
insieme di interazioni è possibile realizzare un dialogo
che può apparire abbastanza naturale.
Un sistema che sfrutta tecnologie di riconoscimento probabilistico
del contesto (riconoscitori fuzzy) è quello realizzato
dalla Carnegie Mellon University: questo riconoscitore estrae
da una frase, anche lunga e complessa, fatta da un intervistatore
che si rivolge ad un personaggio famoso ricreato in modo virtuale
una domanda a cui cerca di dare una risposta componendo frasi
pronunciate da quel personaggio. Il sistema è molto convincente
e l'intervistatore ha l'impressione che il personaggio famoso
sia in ascolto e risponda a quanto gli è stato chiesto.
Uno degli aspetti che contribuiscono alla percezione di naturalezza
del dialogo è la possibilità di parlare quando si
vuole, anche interrompendo. Questo è un grosso problema
per un riconoscitore, specie via telefono. Non a caso spesso si
sente che il riconoscitore premette alla domanda una frase del
tipo "risponda solo dopo il bip".
Nuovi sistemi di riconoscimento uniti a filtri particolari che
distinguono la provenienza dei suoni rendono possibile questo
tipo di dialogo.
Tuttavia, una cosa è
dare una impressione di naturalezza ad un dialogo come se si fosse
in presenza di un'altra persona in contesti limitati, un'altra
è essere in grado di "reggere" una conversazione
superando il test di Turing per quanto riguarda sintesi e riconoscimento.
Progressi ve ne saranno ancora nei livelli vocali del dialogo
ma per un salto di qualità occorrerà che il calcolatore
riesca a diventare quello che molti avevano pronosticato sarebbe
diventato: un cervello elettronico.
La strada da percorrere non solo è lunga, ma sembra sempre
più lunga man mano che maturiamo nuova comprensione di
ciò che è necessario fare e che otteniamo nuovi
risultati. Saremo i primi ad essere contenti se un articolo su
Le Scienze tra dieci anni ci smentirà clamorosamente.