Elaborato Coppola Claudio N46000220

Transcript

Elaborato Coppola Claudio N46000220
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Elaborato finale in Algoritmi e Strutture Dati
Algoritmi e Sistemi di Riconoscimento
vocale
Anno Accademico 2010/2011
Candidato:
Claudio Coppola
matr. N46000220
I
II
Indice
Introduzione
4
Capitolo 1. Processo di riconoscimento vocale
6
1.1
1.2
1.3
1.4
Categorie di sistemi
Fasi del processo di riconoscimento vocale
Metastati e feature number
Non-idealità del riconoscimento vocale
7
8
10
10
Capitolo 2. Realizzazione di sistemi di riconoscimento vocale
12
2.1
2.2
2.3
2.4
2.5
Training del software
Gestione e calcolo dei fonemi
Dai fonemi alle parole
Modello linguistico
Riconoscimento a dettatura continua
Capitolo 3. Algoritmi di riconoscimento vocale
3.1
3.2
3.3
3.4
3.5
3.6
Algoritmi per il riconoscimento dei fonemi
Algoritmo di Lloyd
Algoritmo K-Means
Hidden Markov Models
Reti neurali
Modelli ibridi NN-HMM
Capitolo 4. Sistemi commerciali per il riconoscimento vocale
4.1
4.2
Bibliografia
Dragon
Dragon SDK
12
13
14
16
17
18
18
19
20
21
22
23
25
26
28
29
III
IV
Algoritmi e Sistemi di Riconoscimento Vocale
Introduzione
Il riconoscimento vocale è il processo mediante il quale il linguaggio orale umano viene
riconosciuto e successivamente elaborato attraverso un computer o più specificatamente
attraverso un apposito sistema di riconoscimento vocale. I software di riconoscimento
vocale sfruttano algoritmi di tipo statistico, che permettono di ricostruire il linguaggio
tramite la frequenza di associazioni di parole e utilizzano appositi database fonetici,
contenenti le pronunce diverse per le parole del vocabolario di una particolare lingua,
affinchè si possa effettuare un riconoscimento dei vocaboli indipendentemente dal timbro
del parlatore.
Questa è una tecnologia che si è sviluppata particolarmente negli ultimi due decenni ,
nonostante abbia origini ben più lontane.
Invero solo pochi anni fa i sistemi di riconoscimento vocale presentavano tasso di errore
così elevato da risultare inutilizzabili nella pratica. Oggi invece essi possono raggiungere
precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento
dipendente dal parlatore, invece i software di riconoscimento vocale indipendenti dal
parlatore risultano meno precisi, in maniera da poter essere comunque utilizzabili, per la
scelta all’interno di una lista di comandi noti e preimpostati .
Questa tecnologia ha trovato impiego in numerose applicazioni: fornire agli utenti disabili
la possibilità di usufruire di programmi televisivi, fornire servizi di sottotitolazione
automatica per video , programmi per la dettatura di documenti in qualunque editor di
5
Algoritmi e Sistemi di Riconoscimento Vocale
testo, o di costruire macro vocali che comandano la freccia del mouse per riavviare il
computer, aprire e chiudere file e programmi, accedere ai menu o a un dato sito Internet,
viene poi attualmente utilizzata nei cellulari per dare comandi vocali al dispositivo. Il
riconoscimento vocale, secondo molti esperti, costituirà il nocciolo dell’interfacciamento
dell’ uomo con il calcolatore del futuro.
Per questi motivi è comprensibile come ci siano grandi interessi verso il riconoscimento
vocale da parte del mondo dell’ industria , che la rende una tecnologia soggetta alla ricerca
e all’ innovazione continua .
6
Algoritmi e Sistemi di Riconoscimento Vocale
Capitolo 1
Processo di riconoscimento vocale
Prima di trattare dell’ effettivo processo di riconoscimento vocale , è necessario definire
alcuni concetti chiave fondamentali, per comprendere meglio l’argomento trattato.
Dobbiamo dunque definire :
Suono: Una vibrazione che si propaga attraverso un mezzo sotto forma di onda.
Fonema: Unità differenziante, indivisibile e astratta di un sistema linguistico. Esso è la
rappresentazione astratta di un suono.
Parola: Un insieme di fonemi che uniti danno un vocabolo di senso compiuto in una
determinata lingua.
La disciplina che individua e studia i fonemi si chiama fonologia.
Come per le lettere esistono degli alfabeti fonetici (o set di fonemi) che sono particolari
per ogni lingua e standardizzati :
SAMPA (Speech Assessment Method Phonetic Alphabet) composti da 50 fonemi più 7
vocali accentate.
“PhoneMap” e la sua variante per l’italiano L-410 Standard, comprendente 32 fonemi più
un aspirata.
7
Algoritmi e Sistemi di Riconoscimento Vocale
@bg , @sch , C , E , G , L , N , O , S , X ,
Z , a , b , cl , d , e , f , g , i , j , k , l , m ,
n , o , p , r , t , u , v , vcl , w , x , z
acquisti a cl k w i X cl t i
alt a l cl t
alza a l cl Z a
andando a n vcl d a n vcl d o
annulla a n u l a
area a r e a
artificiale a r cl t i f i cl C a l e
aspetta a X cl p E cl t a
1.1 Categorie di sistemi
I sistemi di riconoscimento vocale possono essere suddivisi in due categorie : riconoscitori
speaker dependent e speaker independent .
I primi sono sistemi in cui il modello vocale viene adattato alla voce dell’utente.
Prevedono una preventiva fase di training del software, in cui viene richiesta all’utente la
lettura di un testo con voce e velocità naturali, perché il sistema possa adattarsi alle
caratteristiche vocali e alla pronuncia dell’ utilizzatore.
La presenza della fase di training permette ai sistemi di garantire una riduzione elevata
della probabilità di errore, operando una correzione degli errori di interpretazione tramite
il microfono, usando solo le funzioni vocali. Inoltre essi spesso prevedono un meccanismo
di memorizzazione delle correzioni, che verranno utilizzate per consentire di imparare
dagli errori commessi. Queste tecniche permettono di riconoscere oltre cento parole al
minuto, mantenendo questa operazione in background e in tempo reale, su dispositivi la
cui capacità di calcolo è quella di un normale PC.
I riconoscitori speaker independent permettono di effettuare un riconoscimento di un
parlato generico, senza che sia legato a un determinato timbro vocale.
Il costo per ottenere l’ indipendenza dal parlatore si riflette principalmente sulla
precisione. Infatti questi sistemi sono meno precisi dei precedenti, a causa della mancanza
8
Algoritmi e Sistemi di Riconoscimento Vocale
di un modello vocale del parlatore, dunque l’assenza della possibilità di training non
permette la correzione degli errori.
Questi sistemi trovano applicazione principalmente nei servizi di informazione automatici
e forniscono buoni risultati nei casi in cui ciò che può venir detto dall’ utente, fa parte di
una lista ristretta di vocaboli, che quindi possono essere prevedibili.
Per ottenere la migliore generalizzazione possibile migliorando la precisione, bisogna
“insegnare” al sistema tutti i modi diversi con cui una parola possa venire pronunciata.
Quindi la complessità di questi sistemi consiste nella costruzione dei database, che
risultano essere molto grandi, per poter contenere le diverse migliaia di ore di materiale
audio necessarie al riconoscimento. Questo comporta inoltre un aggravio sulle risorse di
calcolo della macchina che ospita il sistema, che quindi richiede un computer
estremamente potente o delle elaborazioni off line.
1.2 Fasi del processo di riconoscimento vocale
Il funzionamento di un sistema di riconoscimento vocale si basa sulla comparazione dell’
audio in ingresso, eventualmente elaborato, con gli elementi di un database costruito
durante la fase di addestramento del software. Di fatto il programma cerca di individuare
un suono simile a quello emesso dal parlatore, cercando fra le entry del database. Si tratta
ovviamente di un’ operazione complessa, che coinvolge i singoli fonemi delle parole
pronunciate.
Analizziamo la sequenza di processi su cui è basato il riconoscimento vocale:
9
Algoritmi e Sistemi di Riconoscimento Vocale
Figura 1.2.1: Processo di riconoscimento dei fonemi
Dal segnale audio campionato in ingresso viene calcolata la sua rappresentazione nel
dominio della frequenza tramite utilizzo delle FFT.
Feature extraction e organizzazione dei dati ottenuti dall’ esame in frequenza.
Riconoscimento dei singoli fonemi.
Composizione dei fonemi in parole e una conseguente applicazione di un modello
linguistico per la lingua d’uso.
La necessità dell’ esame in frequenza dipende dal fatto, che nel dominio del tempo il
segnale audio non è altro che una forma d’onda periodica, la cui frequenza è compresa fra
i 300 e i 3000 Hz. In questo formato non è quindi possibile individuare dei pattern su cui
effettuare algoritmi che permettono il riconoscimento della similarità.
Per effettuare lo studio in frequenza, come già detto, viene usata la FFT (Fast Fourier
Transform). Essa verrà applicata in segmenti di “pochi” campioni del segnale. La durata
10
Algoritmi e Sistemi di Riconoscimento Vocale
che viene generalmente utilizzata è di un centesimo di secondo.
1.3 Metastati e feature number
Attraverso l’analisi del segnale discretizzato e quantizzato si ottiene un insieme di
caratteristiche del suono analizzato, dette features del segnale. Le features vengono
organizzate in vettori di uno spazio vettoriale e vengono utilizzate per ricavare dal
database fonetico il suono, le cui features sono più simili a quelle del suono in ingresso,
attraverso appositi algoritmi, sfruttando le distanze euclidee .
Come precedentemente detto la FFT opera su intervalli temporali di centesimi di secondo.
Quindi un fonema da riconoscere è composto da più di questi intervalli, in cui il suono
assume determinate features. Un particolare centesimo di secondo a cui viene associato un
vettore di features può essere trattato come un metastato, identificato da un feature number
per la rappresentazione del suono in quel preciso intervallo.
In altre parole il feature number può essere definito come un identificativo del pattern di
suono in quel preciso centesimo di secondo, mentre il fonema è composto da una sequenza
di 1,2 o 3 metastati identificati ciascuno dal proprio feature number.
1.4 Non-idealità del riconoscimento vocale
In una ipotesi ideale in cui tutti abbiano la stessa voce e in cui gli strumenti di analisi
risultino perfetti, avremmo corrispondenza diretta fra le sequenze di feature number e di
fonemi. Purtroppo nella realtà la corrispondenza non è così semplice da realizzare per le
seguenti cause :
Anche una stessa persona può pronunciare la stessa parola in maniere differenti o avere
difetti di pronuncia, non generando gli stessi fonemi. Questo non costituisce differenze per
la comprensione verbale umana, ma risulta esserlo per una macchina.
Inoltre, a differenza degli umani, le macchine non dispongono dell’ ascolto intenzionale.
11
Algoritmi e Sistemi di Riconoscimento Vocale
Ovvero quel meccanismo che ci permette di identificare un suono in mezzo a tanti altri.
Infatti le macchine sono soggette a influenze del rumore d’ ambiente e alle altre voci
circostanti, che sono causa di disturbo per il riconoscimento.
Il suono di ogni fonema può variare a seconda del fonema che lo precede e di quello che lo
segue.
Il suono di un fonema cambia a seconda della sua posizione all’interno della parola.
Quindi lo stesso fonema posizionato a inizio o fine parola produce sequenze di feature
number differenti.
12
Capitolo 2
Realizzazione di sistemi per il riconoscimento vocale
Dopo aver esaminato il funzionamento di un sistema di riconoscimento vocale, mostriamo
quali sono i passi e per la realizzazione e le tecniche che permettono la sua realizzazione.
2.1 Training del software
Il software deve essere istruito affinchè conosca tutte le possibili pronunce di una fonema
e su tutte le sue possibili posizioni all’ interno di una parola.
Per risolvere il problema è possibile usare tool di training che processano migliaia di
registrazioni diverse dello stesso fonema. Per ogni centesimo di secondo audio viene
calcolato il feature number, permettendo di memorizzarne migliaia per ogni fonema.
Quanto più queste informazioni sono numerose ed eterogenee, più grande sarà la capacità
del sistema di riconoscere le parole correttamente.
Infatti durante questa stessa fase di training il sistema apprende anche una serie di dati
statistici sulle sequenze di feature number. Infatti il sistema apprende quante probabilità ci
sono che un determinato fonema generi determinate sequenze di feature number.
Tali informazioni verranno poi riutilizzate in fase di funzionamento del sistema durante
L’ estrazione delle parole, utilizzando il modello linguistico.
13
Figura 2.1.1: Modello di funzionamento della fase di training e di retrieving
2.2 Gestione e calcolo dei fonemi
Il riconoscitore alla ricezione di una sequenza di feature numbers calcola la probabilità che
essa appartenga ad una dei fonemi della lingua in uso e verrà selezionato il fonema a
probabilità maggiore. Per realizzare questa funzione probabilistica vengono utilizzati
complessi modelli matematici come i Hidden Markov Model, la cui trattazione verrà
affrontata nel prossimo capitolo. Questo strumento viene utilizzato per modellare una
grossa matrice di fonemi, collegati fra loro con dei “ponti” la cui larghezza aumenta con
Figura 2.2.1: Esempio Di HMM applicato alla pronuncia della parola Tomato. Questo
modello prevede la pronuncia della parola in tre modi diversi:
t ow m aa t ow – Inglese Britannico.
t ah m ey t ow – Inglese Americano.
14
t ah m ey t a – Pronuncia di quando si parla velocemente.
l’aumentare della probabilità che un fonema sia collegato ad un altro. Inoltre è utile per
determinare quando un fonema termina per iniziare un altro. Questo è un problema molto
delicato infatti ad occhio non è facile stabilire dai singoli feature numbers dove un fonema
finisce e dove inizia il successivo, compito che il metodo probabilistico degli HMM
compie con maggiore semplicità; infatti viene generata la matrice dei feature number e il
segnale di ingresso percorrerà il cammino che collega i feature number caratteristici del
primo fonema e in seguito il percorso del secondo. In uscita alla matrice avremo le
informazioni che tengono traccia del percorso completo effettuato e di tutto il processo.
Da queste informazioni è possibile calcolare la durata in millisecondi di ogni fonema.
Molto importante per il riconoscimento dei fonemi inoltre è il saper riconoscere e sfruttare
i momenti di silenzio. Infatti le fasi di pausa del parlato non generano silenzi effettivi, in
quanto anche esse generano pattern sonori, quindi feature numbers a causa del rumore
d’ambiente, che generalmente sono causa di disturbo anche durante una normale fase di
input vocale. Durante questi periodi è bene registrare campioni atti ad analizzare le
caratteristiche del rumore d’ ambiente, che verranno utilizzate per effettuare correzioni
sugli input vocali successivi.
In altre parole sfruttiamo i periodi di silenzio per conoscere il rumore d’ambiente in quel
momento per depurare le informazioni sonore utili dalle componenti rumorose.
2.3 Dai fonemi alle parole
Tutti i risultati ottenuti dai riconoscimenti precedenti possono essere ancora messi in
discussione, almeno fin quando non avviene il processo di composizione dei fonemi in
parole.
Riprendendo quanto già detto in precedenza, il suono di un fonema può essere diverso a
seconda del fonema che lo precede o di quello che lo segue. Per risolvere questo problema
i software per il riconoscimento vocale organizzano i fonemi in terne, dette tri-foni. Queste
terne, al cui interno è possibile trovare anche il fonema rappresentativo del silenzio,
15
vengono composte tenendo in considerazione il contesto. Il riconoscitore sceglierà più
concatenazioni possibili, basate sulla combinazione dei diversi fonemi e opterà per quel
tri-fono, la cui probabilità di essere la combinazione giusta è la più alta, dopo aver
calcolato la probabilità che ciascun fonema sia al posto giusto, mentre le combinazioni
meno probabili o addirittura impossibili per la lingua in esame vengono scartate. Inoltre in
ogni centesimo di secondo verrà generato un feature number nuovo, che viene integrato
alle informazioni precedentemente raccolte e viene scartata la possibilità che in ogni
centesimo di secondo venga generato un fonema nuovo.
Nonostante queste precauzioni possono verificarsi diversi casi in cui la parola non verrà
ricevuta appropriatamente. Infatti se il parlatore dovesse pronunciare in maniera poco
chiara la parola, o se dovesse verificarsi un rumore improvviso che può inficiare il
contenuto audio o addirittura una separazione erronea dei fonemi, potrebbe verificarsi che
il database non sia in grado di trovare parole corrispondenti nel dizionario, nonostante la
parola sia stata riconosciuta a livello fonetico. In tali casi il sistema deve rielaborare i dati
ottenuti in maniera differente dovendo ripetere alcune delle procedure previste. Al fine di
evitare eccessivi ritardi di elaborazione si preferisce impostare quindi un timer o un
contatore di iterazioni massime da ripetere, allo scadere dei quali si utilizzerà la parola più
probabile, nonostante non raggiunga necessariamente la soglia di sicurezza. In alternativa
si potrebbe anche semplicemente scartare la parola non riconosciuta, identificandola con
dei simboli: ”.…” o ”???”.
Con l’intento di ridurre i tempi di calcolo e aumentare la precisione del software vengono
impostate delle regole per restringere il campo di ricerca.
In primo luogo abbiamo una restrizione del campo di parole da milioni a poche migliaia
nella lingua corrente.
L’utilizzo di regole grammaticali di un modello linguistico consentono la possibilità di
scartare determinate combinazioni probabilmente sbagliate.
Per restringere ulteriormente il campo di ricerca vengono memorizzate le sequenze di
parole più comuni, secondo determinati criteri, rendendo le altre più facilmente scartabili.
Se inoltre le parole, che il ricevitore deve essere in grado di processare, sono diverse da
16
quelle comprese nel “lessico comune”, bisognerà che vengano caricati dal software dei
vocabolari specifici appositi per quel linguaggio specifico per supportare termini di
linguaggio medico, giuridico, scientifico ecc.
2.4 Modello linguistico
I tool usati per comporre i database di riferimento, realizzando il training del software,
oltre ad effettuare la normale analisi dei fonemi, si occupano anche di fare delle analisi
statistiche sulle parole analizzate. Questa analisi viene effettuata su una enorme quantità di
frasi, dell’ ordine di gigabyte di materiale testuale (milioni di frasi e parole).
Le informazioni desunte da questo tipo di analisi sono molto utili per aumentare la
precisione del sistema oltre che la sua velocità.
Tra le statistiche valutate è molto importante quella che osserva quanto frequentemente
una parola è seguita da un’ altra. Questa informazione verrà sfruttata durante la fase di
riconoscimento; quando il riconoscitore individuerà un lemma qualsiasi, mentre esaminerà
i fonemi del vocabolo successivo, stimerà una lista di parole che potrebbe seguire la prima
con una certa probabilità. Terminata l’analisi dei fonemi per quella parola, il sistema
valuterà se essa appartiene alla lista e in tal caso la considererà riconosciuta. Generalmente
questa tecnica viene utilizzata nelle due direzioni, sia per parole che precedono sia per
quelle che seguono, infatti questo processo viene utilizzato non per la singola parola ma
per le terne di parole.
Sebbene l’esame fatto sulle sequenze di parole viene effettuato su una quantità di frasi
molto ampia, è sempre possibile che il sistema ascolti una combinazione di parole mai
sentita e che quindi sia assente nel database. In tali casi se il parlatore ha pronunciato
correttamente la frase e il riconoscimento fonetico termina con un risultato probabilistico
al di sopra della soglia di sicurezza, la frase verrà correttamente interpretata e il
riconoscimento “puro” prevarrà sul modello linguistico. Al verificarsi di questo evento il
database verrà aggiornato con la nuova combinazione di parole, affinchè venga ricordata
per i successivi riutilizzi, indicando il numero di volte che tale frase è stata ascoltata.
L’utilizzo di un modello linguistico, come preannunciato, migliora notevolmente le
17
prestazioni in termini di precisione, portandola da un valore di 80% ad un 95%. Inoltre
protende a ottenere un riconoscimento più rapido, poiché le combinazioni improbabili
vengono scartate a priori.
Vantaggio fondamentale nell’ utilizzo di un modello linguistico è la risoluzione di parole
omofone, che sono irrisolvibili altrimenti.
Lo svantaggio primario è che quando due parole appaiono simili verrà sempre scelta la
parola con la probabilità maggiore in base al training ricevuto.
2.5 Riconoscimento a dettatura continua
Il riconoscimento a dettatura continua, differentemente da quello a dettatura discreta,
permette di effettuare un riconoscimento vocale su parlato in velocità normale, senza che
vi siano limitazioni sul vocabolario.
La sua realizzazione risulta essere molto più complessa, in quanto è necessario che il
sistema sia in grado di discernere autonomamente l’inizio e la fine delle parole.
Essendo una tecnologia molto più complessa rispetto alla dettatura discreta, richiederà
strumenti matematici più complessi, rendendo tutte le fasi del riconoscimento vocale più
articolate nei calcoli e ponendo necessità di una finestra di campioni più larga.
La dettatura continua può essere supportata in tempo reale dai moderni computer
casalinghi, in modalità dipendente dal parlatore, mantenendo una precisione molto
elevata.
Invece in modalità indipendente dal parlatore questa tecnica mantiene molti limiti in
termini di precisione di riconoscimento, rimanendo su percentuali di 70 - 80%.
I testi ricavati in modalità speaker independent sono documenti per cui serve avere solo
una traccia testuale del contenuto audio senza necessità di precisione sulle singole parole.
Dunque non è attualmente possibile realizzare sistemi di sottotitolazione automatica
speaker independent (funzionalità beta in youtube) con alta qualità di riconoscimento,
mentre in modalità speaker dependent si può raggiungere una precisione media di 95-98%.
18
19
Capitolo 3
Algoritmi per il riconoscimento vocale
Dopo aver trattato delle tecnologie utilizzate nel riconoscimento vocale, risulta doveroso
affrontare la trattazione degli algoritmi e dei modelli che vengono usate sia durante il
processo di riconoscimento dei fonemi e di il calcolo dei feature number, sia durante il
processo di composizione dei fonemi in parole.
3.1 Algoritmi per il riconoscimento dei fonemi
Il riconoscimento vocale utilizzato in molti programmi sfrutta un training set, contenente i
vari fonemi delle parole da individuare di una determinata lingua. La dimensione del
training set dipende appunto dal numero di fonemi e dal numero di soggetti addestrati. Al
crescere della cardinalità di questi parametri il training set tende ad aumentare di molto le
proprie dimensioni, allungando i tempi necessari al riconoscimento di una parola.
Ogni feature number del fonema sono rappresenta un vettore dello spazio N-dimensionale
delle features ottenute dalle procedure di feature enhancement e feature extraction del
segnale campionato.
Per ridurre la dimensione del training set e quindi aumentare le prestazioni del retrieval si
utilizzano degli algoritmi, che cercano di ridurre di qualche ordine di grandezza questi
parametri dei punti, minimizzando l’errore causato da questa riduzione.
Gli algoritmi di clustering permettono la suddivisione dello spazio delle features in classi
di vettori tali che i punti appartenenti alla stessa classe siano simili fra loro. È necessario
20
per il funzionamento dell’ algoritmo definire anche una metrica di distanza fra i vettori
dello spazio.
Tra questi algoritmi citiamo l’algoritmo di Lloyd e l’algoritmo K-means (k - medie).
La differenza fondamentale fra questi due algoritmi è che l’ algoritmo di Lloyd converge
mentre l’algoritmo K – means si arresta dopo un numero massimo di iterazioni. Inoltre
l’algoritmo di Lloyd, a differenza del K – means, sfrutta la definizione dei Voronoi Set
(VS).
Un diagramma di Voronoi su un insieme di punti è una collezione di regioni in cui viene
ripartito un piano.
Ogni regione contiene esattamente un punto del
set dato e ha la proprietà di contenere tutti i
punti del piano che sono più vicini a quel punto
piuttosto che ad un altro.
Nella pratica viene creato un diagramma di
Voronoi impostando come punti di riferimento
quelli dei vari fonemi. Le celle associate ad
ogni punto corrisponderanno all’ insieme dei
punti dello spazio che risultano più vicini a
quello stesso punto rispetto ad un altro. Quell’ Figura 3.1.1: Esempio di diagramma di
Voronoi
insieme di punti viene detto Voronoi Set.
3.2 Algoritmo di Lloyd
L’algoritmo di Lloyd, conosciuto come LBG, lavora spostando iterativamente i vettori di
riferimento alla media del proprio VS. Questo viene fatto riducendo l’errore di distorsione
dovuto allo spostamento del centroide della cella. Questo errore infatti può far si che
alcuni vettori che fanno riferimento alla stessa classe possano finire per fare riferimento ad
21
un’ altra.
Analizziamone il funzionamento:
Sia A l’insieme dei punti di riferimento.
Sia D è l’insieme del training set di partenza.
1. Si inizializza l’insieme A=C1,C2,……..,Cn che contiene N unità con vettori di
riferimento w scelti a caso dall’insieme D del training
set.
2. Per ogni vettore w si calcola il Voronoi Set R.
3. Si muove il vettore w alla media di R.
4. Se si è effettuato uno spostamento del vettore w Figura 3.2.1: Spostamento
del vettore di riferimento
alla media del Voronoi Set
all’ultimo passo si torna al passo 2.
5. Fine dell’ algoritmo.
I passi 2 e 3 sono denominati Lloyd iteration e garantiscono che l’errore di distorsione sia
decrementato o al più lasciato in variato. Si può dimostrare che questo algoritmo
raggiunge convergenza dopo un numero finito di passi.
3.3 Algoritmo K-Means
In alcuni casi l’insieme D di partenza risulta talmente grande che utilizzare l’algoritmo di
Lloyd risulta impraticabile. In tali casi è bene utlizzare l’algoritmo delle K medie.
Per questo algoritmo non è prevista convergenza ma vengono impostati numeri massimi
per le iterazioni dell’ algoritmo. Si richiede in questo caso la conoscenza a priori del
numero di cluster desiderato, senza che sia necessario calcolare dei
Voronoi Set.
Analizziamone i passaggi:
1. Viene scelto il numero K dei cluster e si inizializza
A=C1,C2,……..Cn che contiene N unità con vettori di
22
riferimento w scelti a caso dall’insieme D del training set.
2. Ogni campione (o segnale di ingresso) viene assegnato ad
uno dei K cluster, la cui scelta viene fatta in base alla
minima distanza euclidea fra l’ingresso e il vettore di
riferimento del cluster w .
3. Viene effettuato un aggiornamento dei baricentri (o vettori
rifeimento) dei singoli cluster ottenuti in seguito all’
assegnamento al passo 2, scegliendo il vettore “vincitore”
s.
4. Ripetere dal passo 2 fin quando non si è raggiunto il numero massimo di passi
Figure 3.3.1 , 3.3.2, 3.3.3:
Passaggi dell’ algoritmo
Il vantaggio fondamentale di questo algoritmo è la semplicità di delle K-medie
comprensione che però viene accompagnata dagli svantaggi relativi
all’ arbitrarietà del valore K. Infatti in base alla scelta dei cluster iniziali l’algoritmo non
può convergere se il numero di iterazioni massime è troppo basso, mentre può portare a
calcoli superflui se vi sono troppe iterazioni.
In ogni caso l’errore che si commette usando quest’ algoritmo risulta essere maggiore
rispetto a quello ottenuto dall’ utilizzo dell’ algoritmo di Lloyd.
3.4 Hidden Markov Models
Gli Hidden Markov Models sono un tipo di grafo bayesiano, usato comunemente per il
riconoscimento dei pattern multimediali basato sul machine learning, soprattutto quando il
compito di classificazione corrispondente ha una natura prettamente temporale o basata su
sequenza. Come fondamento dell’ HMM c’è un automa a stati finiti con transizioni di
stato probabilistiche. Come indica il nome alcuni degli stati sono nascosti, ma alcune
variabili, i cui valori dipendo da questi stati nascosti, sono osservabili.
Lo stato di questo automa cambia in precisi istanti temporali, separati dal periodo di
calcolo delle features del segnale. Ad ogni transizione dello stato viene associata
23
l’emissione di una certa feature, la quale è funzione dello stato raggiunto dopo la
transizione.
La costruzione degli HMM per il riconoscimento di un certo vocabolario di parole avviene
tramite un processo di addestramento dei modelli (o training). Da un set di parole già
pronunciate (training set) vengono calcolati i parametri necessari alla definizione del
modello. Questi sono le CDF per le transizioni e le PDF per le emissioni.
La particolarità fondamentale di questo modello è che la legge di transizione dello stato è
di tipo aleatorio, cioè in ogni istante il nuovo stato viene scelto casualmente secondo una
distribuzione di probabilità. Analogamente viene fatto per la generazione delle features. In
questo caso però vengono usate misure continue dunque l’aleatorietà della generazione
delle feature emesse viene espressa con delle funzioni continue secondo la relativa
funzione di densità di probabilità. Le caratteristiche stocastiche degli HMM permettono di
tenere conto della differenza tra le varie pronunce della stessa parola.
Per effettuare la classificazione della parola tramite HMM, si ricostruisce la sequenza di
stati transitati nell’ automa, usando l’algoritmo di Viterbi sulla sequenza di features
generata dalle varie transizioni. Ad ogni sequenza di stati sono associate una (nel caso
riconoscimento a parola singola) o più (nel caso di riconoscimento a parlato continuo)
parole. Dunque riuscire a ricostruire
le sequenze implica riuscire a
riconoscere le parole.
Il paradigma dei modelli di HMM è
noto per essere una delle tecniche
più efficaci per la realizzazione dei
sistemi
Figura 3.4.1: Automa a stati finiti per comporre
le parole
per
il
riconoscimento
vocale, sia nei casi di dipendenza
che di indipendenza dal parlatore e
anche in ambo i casi di riconoscimento di parlato continuo e a parole isolate.
24
3.5 Reti Neurali
Il limite fondamentale dei computer è la loro rigidità nell’ eseguire unicamente istruzioni
che siano previste e programmate. Infatti i computer non fanno altro che eseguire
algoritmi e non possono adattarsi a situazioni nuove, che non siano state precedentemente
codificate e possono rispondere ad uno stimolo solo se sono stati programmati per farlo e
anche le risposte che esso può offrire saranno preimpostate.
Le reti neurali emulano il modo in cui i cervelli effettuano i compiti cognitivi. In
particolare, una rete neurale consiste di neuroni fra loro interconnessi, e il processo di
apprendimento implica modifica e riconfigurazione delle connessioni sinaptiche e dei loro
pesi. Quando vengono presentati insiemi di esempi le reti neurali modificano i pesi delle
connessioni in modo che possano meglio rappresentare le proprietà più intrinseche dei
pattern sottostanti. Più specificatamente, dato uno stimolo di ingresso, i neuroni nella rete
competono fra loro per l’appartenenza; i vincitori della competizione rafforzano i pesi dei
loro collegamenti verso questo ingresso secondo la regola di apprendimento Hebbiana: “se
due neuroni si attivano contemporaneamente, la loro interconnessione deve essere
rafforzata.”
Per addestrare una rete neurale, migliorando l’algoritmo di riconoscimento, si invia in
ingresso alla rete un impulso e se ne osserva l’uscita. Si ripete questo procedimento quanto
necessario, modificando i pesi dei collegamenti fra i neuroni, fino ad ottenere output
vicino a quello desiderato. A seguito dell’ addestramento risulta essere in grado di fornire
output coerente anche se riceve input mai ricevuto in fase di addestramento.
3.6 Modelli ibridi NN-HMM
L’applicazione delle reti neurali nei sistemi di riconoscimento vocale è stata notevolmente
ostacolata a causa della natura del segnale vocale. Esso infatti assume un comportamento
sequenziale e temporale mentre le reti neurali sono adatti per la pattern recognition,
ovvero dei pattern statici. Per contrastare le limitazioni delle reti neurali sono stati
25
compiuti i primi studi su dei modelli ibridi che possano mantenere il vantaggio delle reti e
contemporaneamente quelli degli HMM.
Infatti essi ereditano dagli HMM la capacità di poter gestire i fenomeni temporali tramite
un automa a stati finiti dei fonemi, che consente l’utilizzo dell’ algoritmo di Viterbi per
trovare il migliore cammino tra gli stati.
Dall’ altra parte le reti neurali permettono di mantenere la componente discriminativa
forte. Infatti le classi di riconoscimento competono fra loro durante la fase di training,
mantenendo una migliore separazione fra le classi e generando risultati più precisi della
mistura di gaussiane usate nell’ HMM.
26
Capitolo 4
Sistemi Commerciali per il riconoscimento vocale
Da tempo oramai sono in commercio molti software che permettono il riconoscimento del
parlato. Questi programmi hanno avuto larga diffusione in quanto garantiscono alta
precisione (particolarmente in modalità speaker dependent) e inoltre permettono una
grossa accelerazione nella produzione della documentazione delle aziende (si raggiungono
miglioramenti delle prestazioni di un massimo del 300%) .
Fra i più famosi nominiamo ViaVoice della IBM e Dragon della Nuance.
Il primo di questi lavora in ambiente linux e funziona
meglio di altri sistemi meno evoluti, ma consuma
una quantità di risorse maggiore in termini di RAM e
di CPU.
IBM fornisce documentazione (in formato PDF), un
modulo per l'addestramento, il sistema per il dettato
e una serie di script per l'installazione.
Tratteremo in maniera più dettagliata di Dragon nei
seguenti paragrafi.
27
4.1 Dragon
Dragon è uno dei più usati software per il riconoscimento
vocale per l’utilizzo commerciale o personale.
È un software molto elaborato e permette la compatibilità con
il 99% delle applicazioni windows per la composizione di testi
e di e-mail, tra cui vi troviamo MS Word, Excel, Outlook.
Il software utilizza come principale interfaccia uomo macchina la voce umana e crea un
profilo unico per ogni utente del sistema, contenente informazioni sulle caratteristiche
uniche della voce del soggetto, realizzando di fatto un riconoscimento dipendente dal
Figura 4.1.1: Processo di funzionamento di Dragon
parlatore. Nel profilo dell’ utente vi sono anche informazioni riguardanti il vocabolario, in
cui vi sono presenti, oltre alle 300,000 entries di vocabolario generiche, comprendenti
nomi di persone, posti istituzioni, insiemi di parole e comandi personalizzati.
Per incrementare la precisione del software e quindi la velocità di documentazione, il
28
software di riconoscimento permette agli utenti di :
1. Aggiungere nuove entries nel vocabolario come nomi, acronimi o terminologia
specifica dell’utilizzo.
2. Eliminare entries che possono causare ambiguità acustica con altre parole.
3. Indicare precisamente come le parole debbano essere formattate e scritte
includendo modi alternativi di scrittura per i vari contesti (per esempio far scrivere
“Fig.” al sentire la parola “figura”).
4. Analizzare documenti scritti per adattare il vocabolario dell’ utente allo stile di
scrittura e le parole usate.
Dragon affina il profilo dell’utente di continuo permettendo di riconoscere le parole in
maniera sempre più accurata, migliorando sensibilmente il riconoscimento al passare del
tempo.
Le funzionalità di Dragon non si limitano alla semplice dettatura ma anche a quelle che
rendono l’interfacciamento con la macchina più rapido.
Infatti Dragon permette agli utenti di comandare e controllare il computer tramite voce
attraverso un sistema di navigazione per le applicazioni; gli utenti semplicemente
emettono localmente comandi standard che il prompt del computer userà per effettuare un’
azione. Possono essere impostati diversi tipi di comandi come “apri Microsoft Word” o
“imposta la dimensione del font a 11” per far si che queste azioni siano eseguite senza
nessun supporto di tastiera o mouse.
Altre funzionalità utili sono quella per la gestione delle mail e la navigazione del web
tramite comandi vocali. La prima permette di creare e cancellare mail e navigare nelle
applicazioni apposite per la gestione di posta elettronica come Microsoft Outlook o Lotus
Notes. Possiede inoltre, una funzionalità TTS (Text To Speech), che permette la lettura
“ad alta voce” dei messaggi.
Un’ altra interessante possibilità del software è quella di poter definire “scorciatoie” e
macro vocali per le diverse applicazioni risiedenti sulla macchina. La creazione di queste
può essere fatta senza alcuna conoscenza di programmazione con un tool di editing
apposito per la creazione dei comandi per compiere una sequenza di numerose azioni.
29
4.2 Dragon SDK
Per Software Development Kit (più brevemente SDK) si intende un insieme di strumenti
per lo sviluppo e la documentazione di software.
Nuance mette a disposizione la Dragon NaturallySpeaking 10 SDK Client Edition (DSC)
per produzione di software capace dell’ utilizzo di riconoscimento vocale. Permette di
integrare le capacità di riconoscimento del parlato di Dragon, senza utilizzare la sua
interfaccia utente, in applicazioni Windows, fornendo agli sviluppatori delle API Dragon.
Queste API permettono l’inserimento delle seguenti funzionalità:
1. Creazione di comandi vocali che permettono agli utenti di eseguire azioni
parlando al microfono piuttosto che utilizzare la tastiera o il mouse.
2. Realizzare funzionalità TTS che possano leggere a voce dei testi scritti.
3. Realizzare trascrizioni di file audio. Gli sviluppatori possono realizzare
applicazioni per trascrivere file audio in applicazioni windows o in file di testo.
La DSC è disponibile in diverse lingue e fornisce supporto per l’installazioni in ambienti
di rete non pretendendo di dover essere installata separatamente su tutti i sistemi client, ma
l’ SDK viene spedito a tutte le macchine client. Infatti la DSC, tramite un installer,
permette agli sviluppatori di installare attraverso la rete l’ SDK su tutte le macchine client
e personalizzare l’installazione.
Per ricevere corretta documentazione per gli sviluppatori, la Dragon NaturallySpeaking
Developer Support Program offre:
 Risposte dirette alle domande di sviluppo, fornite dagli ingegneri del Developer
Support, tramite web o telefono.
 Accesso alle Note e alle FAQ sull’ SDK
 Accesso agli aggiornamenti del software non appena siano disponibili per il testing
e la prototipizzazione .
30
Bibliografia
[1]
Andrea Falletto 2007 “Algoritmi e tecnologie per il riconoscimento vocale”
[2]
Daniele De Sanctis “Diagrammi di Voronoi”
[3]
K.Selçuk Candan Maria Luisa Sapino 2010 “Data Management for multimedia
retrieval”
[4]
http://www.skenz.it/stefano/tesi/2_3_3_Modelli_ibridi_HMM_NN.html
[5]
Fundamentals of speech recognition Laurence Rabiner Biing-Hwang Juang
31