Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di...

31
I Elaborato finale in Algoritmi e Strutture Dati Algoritmi e Sistemi di Riconoscimento vocale Anno Accademico 2010/2011 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Candidato: Claudio Coppola matr. N46000220

Transcript of Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di...

Page 1: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

I

Elaborato finale in Algoritmi e Strutture Dati

Algoritmi e Sistemi di Riconoscimento vocale

Anno Accademico 2010/2011

Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica

Candidato: Claudio Coppola matr. N46000220

Page 2: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

II

Page 3: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

III

Indice

Introduzione 4

Capitolo 1. Processo di riconoscimento vocale 6

1.1 Categorie di sistemi 7

1.2 Fasi del processo di riconoscimento vocale 8

1.3 Metastati e feature number 10

1.4 Non-idealità del riconoscimento vocale 10

Capitolo 2. Realizzazione di sistemi di riconoscimento vocale 12

2.1 Training del software 12

2.2 Gestione e calcolo dei fonemi 13

2.3 Dai fonemi alle parole 14

2.4 Modello linguistico 16

2.5 Riconoscimento a dettatura continua 17

Capitolo 3. Algoritmi di riconoscimento vocale 18

3.1 Algoritmi per il riconoscimento dei fonemi 18

3.2 Algoritmo di Lloyd 19

3.3 Algoritmo K-Means 20

3.4 Hidden Markov Models 21

3.5 Reti neurali 22

3.6 Modelli ibridi NN-HMM 23

Capitolo 4. Sistemi commerciali per il riconoscimento vocale 25

4.1 Dragon 26

4.2 Dragon SDK 28

Bibliografia 29

Page 4: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

IV

Page 5: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

Algoritmi e Sistemi di Riconoscimento Vocale

5

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

Page 6: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

Algoritmi e Sistemi di Riconoscimento Vocale

6

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 .

Page 7: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

Algoritmi e Sistemi di Riconoscimento Vocale

7

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.

Page 8: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

Algoritmi e Sistemi di Riconoscimento Vocale

8

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

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

@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

Page 9: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

Algoritmi e Sistemi di Riconoscimento Vocale

9

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:

Page 10: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

Algoritmi e Sistemi di Riconoscimento Vocale

10

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

Figura 1.2.1: Processo di riconoscimento dei fonemi

Page 11: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

Algoritmi e Sistemi di Riconoscimento Vocale

11

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.

Page 12: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

Algoritmi e Sistemi di Riconoscimento Vocale

12

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.

Page 13: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

13

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.

Page 14: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

14

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.

t ah m ey t a – Pronuncia di quando si parla velocemente.

Figura 2.1.1: Modello di funzionamento della fase di training e di retrieving

Page 15: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

15

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,

Page 16: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

16

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

Page 17: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

17

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

Page 18: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

18

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%.

Page 19: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

19

Page 20: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

20

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

Page 21: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

21

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’

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

Figura 3.1.1: Esempio di diagramma di

Voronoi

Page 22: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

22

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

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

Figura 3.2.1: Spostamento

del vettore di riferimento

alla media del Voronoi Set

Page 23: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

23

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

Il vantaggio fondamentale di questo algoritmo è la semplicità di

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

Figure 3.3.1 , 3.3.2, 3.3.3:

Passaggi dell’ algoritmo

delle K-medie

Page 24: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

24

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 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.

Figura 3.4.1: Automa a stati finiti per comporre

le parole

Page 25: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

25

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

Page 26: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

26

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.

Page 27: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

27

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.

Page 28: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

28

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

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

Figura 4.1.1: Processo di funzionamento di Dragon

Page 29: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

29

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.

Page 30: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

30

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 .

Page 31: Algoritmi e Sistemi di Riconoscimento vocale · del parlatore. Questa è una ... precisione di 95-99% e sono in grado di apprendere dai propri errori nel riconoscimento dipendente

31

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