Capitolo 1
Introduzione L'argomento trattato in questa tesi è di grande attualità e riguarda lo Speech Recognition
ovvero il riconoscimento del parlato. I contesti applicativi in cui lo speech recognition viene
impiegato sono diversi e spaziano dalla robotica ai videogiochi, dalla traduzione automatica ai
sistemi di navigazione per veicoli, dalla telefonia mobile al telemarketing.
In particolare, questo studio ha focalizzato l'attenzione su uno degli elementi cardine dello
speech recognition che è il VAD ( Voice Activity Detection ) ovvero l'algoritmo responsabile
dell' individuazione della presenza o meno delle sequenze di parlato.
Il software utilizzato per implementare lo speech recognition è il toolkit open source CMU
Sphinx (chiamato anche Sphinx) sviluppato presso la Carnegie Mellon University di
Pittsburgh.
L'obiettivo principale di questa tesi è stato quello di realizzare uno studio prestazionale per
valutare le performance del VAD utilizzato da Sphinx e confrontarle con quelle di altri 2
VAD (SigmaVAD e AMR VAD1) progettati per lavorare in contesti differenti dallo speech
recognition, per stimare se è il caso di apportare eventuali miglioramenti al VAD originale. Le
statistiche sono state raccolte per mezzo del tool di word alignment SCLITE scaricabile dal
sito http://www.itl.nist.gov/iad/mig//tools/ .
Il test è stato condotto su un database contenente sia file audio registrati in assenza di rumore
sia file rumorosi (ottenuti a partire da file clean e aggiungendo rumore attraverso delle routine
scritte in Matlab) comprendenti 5 tipologie di rumore tra cui CAR (auto), OFFICE (ufficio),
FACTORY (fabbrica), CONSTRUCT (costruzione) e TRAIN (treno). Per ogni tipo di rumore
sono stati analizzati 3 diversi valori di rapporto segnale-rumore (20 dB, 10 dB e 0 dB).
Ciascuna categoria di rumore è composta da 3725 file e in totale il database comprende 59600
file audio in formato WAV.
Per realizzare il test è stata utilizzata l'applicazione pocketsphinx_continuous per il
riconoscimento delle trame di parlato continuo. Per analizzare il comportamento di Sphinx in
presenza degli altri 2 VAD si è provveduto alla scrittura di apposite funzioni in linguaggio C e
a disattivare tramite codice l'uso del VAD originale.
1
Affinché lo studio fosse attuabile è stato necessario allenare il sistema a riconoscere delle
sequenze di cifre proferite in italiano; per questo scopo sono stati creati dei modelli acustici e
un modello di linguaggio adatti al task seguendo le procedure descritte nel sito
http://cmusphinx.sourceforge.net/wiki/start . L'addestramento dei modelli è terminato quando
ci si è avvicinati in termini di accuratezza ai valori dichiarati nell'articolo Connected Digits
Recognition Task: ISTC–CNR Comparison of Open Source Tools di Piero Cosi e Mauro
Nicolao. Il database di cifre usato per il training è stato messo a disposizione dal framework
EVALITA 2009 ed è stato scaricato dal sito http://www.evalita.it/2009/datadistribution .
É stata infine implementata un'applicazione per il voice dialing che prevede l'integrazione del
software PBX open source Asterisk con il programma di Sphinx che realizza in tempo reale il
riconoscimento delle cifre pronunciate. A questo scopo è stato scritto un semplice dialplan
che consente di comporre un numero telefonico mediante la pronuncia delle cifre (0-9) che lo
costituiscono.
La tesi risulta così strutturata:
• Nel capitolo 2 viene presentato lo stato dell'arte nell'ambito dello speech recognition,
dando particolare rilievo alle applicazioni, alla tecnologia hardware impiegata e al
funzionamento del software. Nel capitolo vengono analizzate le debolezze del sistema
e vengono descritti gli scenari applicativi futuri.
• Nel capitolo 3 viene spiegato il funzionamento di un generico algoritmo VAD.
Vengono illustrate le applicazioni in cui il VAD viene impiegato e i parametri
utilizzati per stimarne le prestazioni. Infine vengono descritti i 2 algoritmi VAD
(SigmaVAD e AMR VAD1) che sono stati adoperati per effettuare il confronto
prestazionale col VAD di Sphinx.
• Nel capitolo 4 viene introdotto l'ambiente di lavoro e viene fatta una breve panoramica
del toolkit Sphinx. In seguito vengono descritti gli algoritmi alla base del
funzionamento di Sphinx, il database EVALITA e le procedure seguite per addestrare
il sistema. Alla fine del capitolo vengono confrontate le prestazioni dei modelli
allenati con file audio campionati a 8 e 16 kHz.
• Nel capitolo 5 viene analizzato il funzionamento del VAD usato da Sphinx e viene
descritta la procedura per disattivarlo. Vengono mostrate le funzioni scritte per far
funzionare i VAD illustrati nel capitolo 3. Infine vengono presentati il database
realizzato per la campagna test e i risultati dei test svolti sui 3 VAD sotto forma di
tabelle e grafici.
2
• Nel capitolo 6 viene spiegato a cosa serve il software Asterisk e viene descritta
un'applicazione per il voice dialing che sfrutta i modelli acustici allenati nel capitolo 4.
• Infine nel capitolo 7 vengono tratte le conclusioni sul lavoro di tesi svolto.
3
Capitolo 2
Speech Recognition
Il riconoscimento del parlato (noto come Speech Recognition o Automatic Speech
Recognition (ASR)) è il processo che permette a un computer o un altro tipo di macchina
riconoscere il linguaggio parlato. In sostanza consente di convertire, mediante opportuni
strumenti software, le parole pronunciate in testo. Il termine “Voice Recognition”
Riconoscimento Vocale è adoperato per indicare quei sistemi di riconoscimento che devono
essere allenati a riconoscere la voce di un determinato speaker, come è il caso della maggior
parte di software di tipo Desktop. Il riconoscimento della persona rende più semplice il lavoro
di traduzione del parlato.
Figura 2.1 : Il Display screensaver di un PC Toshiba dotato di Voice Recognition in cui il personaggio
risponde a domande come “Dove sei?” o affermazioni e.g. “Ciao” La tecnologia Speech Recognition è una soluzione più ampia, in grado di riconoscere
sequenze di parlato pronunciate da voci arbitrarie come nel caso di un sistema di chiamate.
Le applicazioni in cui questa tecnologia trova impiego sono le interfacce utente vocali come
le chiamate vocali (Voice Dialing), il reindirizzamento di chiamata (Call Routing), il controllo
di dispositivi domotici, la ricerca (e.g trovare un podcast in cui vengono pronunciate
determinate parole), la registrazione di dati (e.g. inserire un numero di carta di credito), la
preparazione di documenti strutturati (e.g rapporti radiologici), l'elaborazione speech-to-text
4
(e.g. Word processors, emails) e perfino nei velivoli (sotto il nome di Direct Voice Input).
2.1 Storia Il primo riconoscitore è apparso nel 1952 ed era un dispositivo in grado di riconoscere la
pronuncia di singole cifre. Nel 1964 alla fiera mondiale di New York fece la sua comparsa
l'IBM Shoebox, una macchina sperimentale, nonché un precursore dei moderni riconoscitori
vocali, in grado di eseguire semplici operazioni aritmetiche su comando vocale.
Figura 2.2 : Dimostrazione del funzionamento della macchina Shoebox La sanità e in particolare il campo delle trascrizioni mediche rappresentò per lo Speech
Recognition il principale sbocco commerciale. Tuttavia le carenze tecniche di allora, l'idea di
poter eliminare completamente le trascrizioni piuttosto che renderle più efficienti, la riluttanza
dei medici a modificare il loro modo di lavorare e soprattutto il considerevole tempo richiesto
per allenare il software portarono a un rifiuto della tecnologia.
2.2 Applicazioni
Sanità : Lo Speech Recognition può essere implementato in 2 modalità.
5
Front-end SR: in questo caso le parole pronunciate dal personale sanitario vengono mostrate
sullo schermo e colui che detta è responsabile della revisione del documento generato.
Back-end SR: Il personale medico utilizza un sistema di dettatura digitale. Il documento
bozza che viene prodotto è inoltrato insieme al file contenente la voce a un editor di
trascrizioni mediche che rivede la bozza e completa il documento stilato. Questa seconda
modalità è quella maggiormente utilizzata attualmente.
Applicazioni Militari: Nell'ambito degli aerei da caccia sono stati compiuti notevoli studi
nell'ultimo decennio per l'applicazione di questa tecnologia. Hanno riscosso successo
applicazioni riguardanti l'impostazione delle frequenze radio, il controllo del pilota
automatico, il monitoraggio del display di volo, il settaggio delle coordinate e la verifica dei
parametri relativi allo sgancio delle armi. L'uso di modelli allenati al respiro, un vocabolario
ristretto e una sintassi appropriata hanno permesso di ottenere ottimi risultati dal punto di
vista dell'accuratezza di riconoscimento con un tasso superiore al 98%. Sono stati
implementati sistemi speaker-dependent negli aerei EuroFighter Typhoon della RAF, che non
sono adoperati per applicazioni critiche come l'abbassamento del carrello d'atterraggio ma per
determinate funzioni della cabina di pilotaggio. I comandi vocali sono confermati mediante
feedback ricevuti sul display o sull'auricolare. Lo scopo di questi sistemi è quello di
alleggerire il carico di lavoro del pilota.
Anche nel settore degli elicotteri si è cercato di introdurre i benefici di questa tecnologia.
Tuttavia le difficoltà legate al rumore sono molto più serie sia per i livelli di rumore molto più
alti sia per l'assenza di una maschera che possa attenuare il rumore in ingresso al microfono.
Nonostante questo, importanti studi sono stati condotti nell'ultimo decennio soprattutto
dall'esercito U.S.A, dalla Royal Aerospace Establishment (RAE) inglese e dalla Francia sui
suoi elicotteri Puma con risultati incoraggianti. Le applicazioni riguardano il controllo delle
comunicazioni radio, il settaggio dei sistemi di navigazione e il comando di un sistema
automatizzato di handover.
Addestramento dei controllori di traffico aereo: Questo campo costituisce un'ottima
applicazione per i sistemi di speech recognition. Molti sistemi di addestramento allo stato
attuale richiedono la presenza di una persona che svolga il ruolo di “pseudo-pilota”, che si
impegni a dialogare con il controllore per allenarlo nelle simulazioni di colloquio che
dovrebbe tenere con i piloti in uno scenario reale. Un sistema di speech recognition in unione
a delle tecniche di sintesi consentono di eliminare la presenza di questa persona riducendo il
supporto di personale. Diverse organizzazioni di molti paesi hanno scelto di utilizzare per la
campagna di addestramento simulatori di speech recognition per controllori di traffico aereo.
6
Telefonia ed altri settori: Gli ASR nel campo della telefonia sono frequentemente utilizzati.
Un esempio tra tutti è il software sviluppato da Google Google Voice Search presente sui
telefoni di ultima generazione (iPhone e Android) che consente di fare ricerche e altri tipi di
operazioni semplicemente parlando. Alcuni sistemi PBX offrono ai chiamanti la possibilità di
pronunciare i comandi che vogliono eseguire anzicchè richiedere la pressione dei
corrispondenti pulsanti. Gli ASR si stanno diffondendo nel settore del computer gaming e
della simulazione. Nonostante gli alti livelli d'integrazione non si può affermare che l'uso
degli ASR nell'ambito della produzione di documenti sia incrementato. Comunque il
miglioramento delle velocità dei processori mobili ha reso fattibile l'integrazione dei sistemi
operativi per smartphone, Symbian e Windows Mobile, con i sistemi di speech recognition.
L'applicazione è sfruttata nell'interfaccia utente per la creazione di comandi vocali predefiniti
o personalizzati. I Vendors leader in questo settore sono Microsoft Corporation (Microsoft
Voice Command) , Nuance Communications (Nuance Voice Control), Vito Technology
(VITO Voice2Go), Speereo Software e SVOX.
Persone con invalidità: I sistemi di speech-recognition sono stati adottati con successo da
coloro che hanno delle disabilità che non consentono di usare correttamente la tastiera. Infatti
persone che hanno difficoltà a usare la tastiera a causa di lesioni indotte da stress fisici ripetuti
(RSI, dall'inglese Repetitive Strain Injuries) o che hanno problemi di vista per cui non è
possibile o pratico l'uso di un sistema Braille, utilizzano gli ASR per esprimersi attraverso il
dettato o per gestire diversi task sul computer tramite sistemi di Comando e Controllo (C&C).
Per esempio, quanti hanno difficoltà uditive possono connettere un sistema ASR al loro
telefono per convertire la voce del chiamante in formato testuale. Alcuni programmi salvano i
dati speech degli utenti alla fine di ogni sessione; in questo modo le persone che soffrono di
malattie che progressivamente peggiorano lo stato della loro voce, possono continuare ad
interagire con i loro PC.
Ulteriori applicazioni dello Speech Recognition sono:
• Traduzione automatica • Telematica (es. Sistemi di navigazione per veicoli)
• Telefonia mobile (es email mobile)
• Interazione Multimodale • Robotica • Videogiochi • Valutazione della pronuncia nelle applicazioni di apprendimento di una lingua 7
Figura 2.3 : Siemens Speech Recognition
2.3 Categorie di riconoscitori del parlato Attualmente si possono distinguere 2 categorie di programmi:
• Applicazioni con vocabolario limitato destinate all'uso di molti utenti Questi sistemi sono ideali per le applicazioni telefoniche con risposta automatizzata. L'utente
ha la libertà di pronunciare le parole con il proprio accento, poiché il sistema sarà in grado di
comprenderle. Tuttavia l'uso è limitato a un numero ristretto di comandi e input, come numeri
e opzioni di menu elementari.
• Applicazioni con vocabolario esteso destinate all'uso di pochi utenti Queste applicazioni sono destinate a essere impiegate da un numero limitato di utenti in
scenari di lavoro. Presentano un buon grado di accuratezza (superiore all'85%) ed hanno
vocabolari di 10.000 parole ma devono essere addestrati da coloro che vogliono utilizzarlo se
si vogliono avere delle prestazioni accettabili.
I sistemi di Speech Recognition possono essere suddivisi anche sulla base del tipo di
enunciato che sono in grado di riconoscere. Infatti uno dei problemi principali degli ASR
consiste nel determinare quando un utente inizia e finisce un enunciato. I sistemi di speech
recognition possono essere classificati in base alla tecnica utilizzata per risolvere questo
problema.
• Parole Isolate Questi sistemi richiedono che ciascun enunciato presenti un periodo di pausa, cioè
assenza di segnale audio su entrambi i lati della finestra di campionamento, poiché
sono in grado di riconoscere un solo enunciato alla volta. Questi sistemi richiedono
8
all'utente di attendere tra la pronuncia di un enunciato e il successivo e in queste pause
il sistema elabora l'enunciato appena sentito.
• Parlato Continuo I sistemi a discorso continuo rappresentano il passo successivo. Questi sistemi sono i
più difficili da implementare in quanto devono impiegare delle tecniche speciali per
determinare i confini di un enunciato. Permettono all'utente di parlare in maniera quasi
del tutto naturale.
• Parlato spontaneo Un sistema ASR in grado di riconoscere il parlato spontaneo deve gestire una serie di
particolarità del linguaggio naturale, come la pronuncia continua di parole distinte,
suoni come “um” e “ah” e anche leggere balbuzie.
2.4 Tecnologia hardware • Schede Audio Dal momento che il parlato ha richieste di banda relativamente modeste, quasi tutte le
schede audio di qualità medio-alta a 16 bit sono sufficienti per il compito di
riconoscimento del parlato. Sono raccomandate schede audio dotate di convertitori
A/D precisi, sebbene la chiarezza del suono digitale campionato dipende più dalla
qualità del microfono e dalla presenza di rumore che dalle caratteristiche della scheda
audio. Il rumore elettrico causato da monitor, slot PCI, dischi fissi di solito ha un
impatto del tutto trascurabile rispetto al rumore sonoro causato da ventole di
raffreddamento di computer, sedie scricchiolanti o un respiro affannoso. Alcuni
programmi ASR potrebbero richiedere una scheda audio specifica, ma è buona idea
tenersi lontano da programmi che impongono specifici requisiti in fatto di hardware
dal momento che questo limita la possibilità di eventuali cambiamenti futuri.
• Microfoni Un microfono di buona qualità è un componente fondamentale quando si usa un
sistema ASR. Nella maggior parte dei casi i microfoni da desktop non sono consigliati
perché tendono a raccogliere troppo rumore dall'ambiente, complicandone il
9
riconoscimento. Non sono da preferire neppure i microfoni che si tengono in mano in
quanto bisogna raccoglierli ogni qualvolta si vuole parlare, sebbene siano più efficaci
nel limitare il rumore che viene assorbito. La scelta migliore è rappresentata dai
microfoni a cuffia, che minimizzano il rumore raccolto dall'ambiente e sono vicini alla
bocca.
• Computer e Processori Le applicazioni ASR risentono della velocità di elaborazione del processore essendo
CPU-intensive. Il processo di speech recognition effettua un gran numero di calcoli
per il filtraggio digitale e l'elaborazione del segnale. Tuttavia al giorno d'oggi le
richieste in termini di risorse di un ASR non sono particolarmente esose. Bastano
infatti un sistema a 400 Mhz e 128 Mb di RAM per implementare schemi di
riconoscimento complessi che usano dizionari di grandi dimensioni.
2.5 Software Il panorama di software disponibili per lo speech recognition è abbastanza ricco e comprende
programmi a pagamento, gratuiti e anche open source. Tra gli ASR a pagamento meritano di
essere citati IBM Via Voice e Dragon Naturally Speaking . Questi software si sono contesi
per anni il primato in questa categoria, anche se ultimamente il software di IBM sembra aver
abbandonato la contesa dal momento che non è più aggiornato da tempo. Sono programmi di
ottima qualità e dopo un periodo di addestramento difficilmente commettono errori. Dragon
Naturally Speaking, prodotto dalla Nuance Communications e acquistabile al costo di circa
€ 80, rappresenta al momento il software leader nel settore del riconoscimento del parlato; a
conferma di ciò è stato scelto dalla Federal Bureau of Investigation ( FBI ) per fornire agli
agenti dell'agenzia investigativa statunitense una serie di strumenti che consentano una
creazione più accurata e rapida di rapporti, verbali di interrogatori e altri documenti con il
solo ausilio della voce. Nell'ambito dei software a pagamento si segnala iListen progettato per
sistemi MAC OS X della Apple.
10