Cos'è il riconoscimento vocale

Oggi, quando chiamamo il call center di una grande società, in genere la prima risposta non viene da un operatore. Un sistema di risposta automatico (IVR) gestisce la richiesta istruendo chi chiama nella navigazione attraverso la pressione di pulsanti sul telefono oppure pronunciando alcune parole chiave.

Il riconoscimento vocale è utilizzato anche in applicazioni domestiche e professionali. Diversi prodotti software permettono di dettare ad un computer e far si che le parole vengano automaticamente convertite in testo. E' possibile utilizzare comandi vocali per condurre operazioni di routine (aprire un file oppure accedere ad un menu). Molti programmi sono per un utilizzo professionale specifico, in particolare per il contesto medico e legale.

Le attuali applicazioni del riconoscimento vocale sono classificabili in due gruppi:

Piccoli vocabolari/molti utenti
Questi sistemi sono per lo più per l'ambito telefonico. I sistemi gesticono diversi accenti e inflessioni dialettali, ma l'utilizzo è limitato ad un numero limitato di comandi e vocaboli predeterminato, come le opzioni di un menu o l'input numerico.

Grandi vocabolari/pochi utenti
Questi sistemi trovano la loro applicazione in ambiti professionali nei quali un numero limitato di utenti utilizza la stessa applicazione. Questi sistemi garantiscono una grande accuratezza pur con grandi vocabolari (di molte migliaia di parole).

Ogni organizzazione che ha sviluppato una tecnologia di riconoscimento vocale ha sviluppato metodi ed algoritmi di conversione e calcolo proprietari, ma che si utilizzi un modello statistico basato su Hidden Markov Model o le Reti Neurali, la differenza principale è nella procedura di 'Search' che vedremo in seguito. Le componenti di base rimangono uguali a tutti.

I componenti base di un motore di riconoscimento vocale sono:
• ADC (Analogic/Digital Converter)
• Modello acustico
• Modello di linguaggio
• Classificazione (o search) - la parte 'core', più complessa oggetto di numerosi brevetti e sulla quale ancora si sta facendo molta ricerca.

Dalla voce ai dati (Digitalizzazione e Feature extraction)
Per convertire la voce in parole e frasi sullo schermo o in comandi, un computer deve eseguire diversi compiti molto complessi. Quando parliamo, la nostra voce crea vibrazioni nell'aria (onde sonore). Un ADC (convertirore da analogico a digitale) trasforma queste onde analogiche in dati digitali che il computer possa gestire.

La prima difficoltà legata al riconoscimento vocale è che esso si basa sul confronto di entità analogiche effettuato con una macchina digitale.


Campiona o digitalizza il suono misurando con molta precisione le caratteristiche dell'onda ad intervalli precisi e molto frequenti. Il sistema filtra il suono digitalizzato per rimuovere eventuali rumori di fondo e a volte per separarlo in diverse bande di frequenza (la frequenza è la lunghezza d'onda delle onde sonore, riconoscibili dall'orecchio umano come differenze di pitch). Inoltre il suono viene normalizzato o regolato ad un volume costante. Potrebbe essere anche temporaneamente allineato. Le persone non parlano tutte alla stessa velocità e quindi il suono dev'essere modulato perché coincide il più possibile con i suoni campione caricati nella memoria del computer.

Il secondo dei fattori che rendono difficoltosa e complessa l’operazione, è l’alto grado di variabilità del segnale audio: se proviamo a registrare la stessa parola molte volte, per quanto tentiamo di riprodurre sempre esattamente lo stesso suono, troveremo sempre sostanziali differenze tra le diverse rappresentazioni del segnale (spettrogrammi). Le differenze aumentano vertiginosamente se la parola viene pronunciata da persone diverse.
Il segnale viene quindi frammentato in segmenti della durata di pochi millesimi di secondo e ancora più piccoli nel caso di consonanti occlusive -- interruzione del suono prodotta dall'ostruzione del flusso d'aria nel tratto vocale -- come "p" o "t". Il programma quindi confronta questi segmenti con i fonemi già campionati (vettori campione) per la lingua specifica. Un fonema è l'elemento elementare di ogni lingua parlata -- una rappresentazione testuale del suono che pronunciamo per comporre espressioni di significato compiuto. Nella lingua italiana ci sono circa 40 fonemi (sono disponibili diverse codifiche con un diverso numero di fonemi). Ogni lingua ha un suo numero e set di fonemi.

Per la lingua Italiana la notazione IPA calcola 37 consonanti, 7 vocali e 19 dittonghi, mentre quella SAMPA 43 consonanti e 7 vocali.
Il passo successivo a prima vista il più semplice, è invece il più complesso e difficoltoso ed è ancora oggi oggetto di molte ricerche nell'ambito del riconoscimento vocale. Il programma esamina i fonemi nel contesto degli altri precedenti o successivi ad ogni fonema da analizzare e compone le possibili sequenze di vettori. L'analisi viene fatta utilizzando un complesso modello statistico che confronta le diverse combinazioni di fonemi possibili con un vocabolario di parole e frasi note. Il programma è quindi in grado di determinare qual'è la parola o frase che ha la più alta probabilità di corrispondere a ciò che è stato pronunciato.

Il riconoscimento vocale ed i modelli statistici (Classificazione o Search)
Nella prima fase la procedura di Search utilizza il Modello acustico che contiene le informazioni sulla pronuncia dei fonemi relativi ad una determinata lingua.
Il Modello acustico serve per calcolare la distanza tra i vettori estratti dall’audio registrato ed i vettori campione contenuti nel Modello acustico di riferimento. Tale calcolo può avvenire in modi diversi, a seconda della tecnologia utilizzata.

Nelle tecnologie moderne esistono diversi modelli acustici: uno di base comune a tutti gli utilizzatori ed uno 'adattato' relativo alla voce specifica. L'adattamento per ogni utente, sebbene non necessario in fase iniziale, viene comunque effettuato utilizzando l'audio ed il testo corretto proveniente da ogni dettatura.
VI RICORDATE QUANDO... I primi sistemi di riconoscimento vocale applicavano un set di regole grammaticali e sintattiche: se la parola pronunciata era coerente con le regole definite, il programma era quindi in grado di riconoscerla, altrimenti no. Il linguaggio presenta numerosissime eccezioni rispetto alle regole sintattiche, anche se parlato correttamente. Accenti, dialetti, ecc. possono variare il modo in cui certe parole o frasi vengono pronunciate. Si pensi solo alle evidenti differenze di pronuncia nei numerosi dialetti italiani. I sistemi basati su regole non erano in grado di gestire questa varianza. E questo spiega perché anni fa i primi sistemi avevano difficoltà con il parlato continuo e quindi si richiedeva di pronunciare ogni parola separatamente dall'altra distanziandola di una breve pausa.

Oggi i moderni sistemi di riconoscimento vocale utilizzano modelli statistici complessi e sofisticati. Si appoggiano a funzioni matematiche di stima delle probabilità per determinare il risultato che abbia la più alta probabilità di essere esatto. I due modelli che oggi dominano il campo del riconoscimento vocale sono l'Hidden Markov Model (catene di Markov) e le reti neurali. Entrambi richiedono complessi calcoli matematici, ed essenzialmente utilizzano le informazioni note al sistema per ipotizzare il risultato non noto, non su un confronto esatto, ma sulla base di un'analisi delle probabilità, utilizzando un numero di variabili molto elevato.

Le catene di Markov rappresentano il metodo più utilizzato nei sistemi in commercio.
In questo modello ogni fonema rappresenta un anello di una catena e la catena completa rappresenta la parola. La catena si dirama in direzioni diverse nel tentativo del programma di confrontare l'audio ascoltato con i vettori campione dei fonemi a lui noti. Durante il processo il sistema assegna ad ogni fonema uno score o punteggio, che si basa sulla distanza tra l'audio ascoltato e l'audio che già conosce (eventualmente adattati alla voce che il sistema deve riconoscere).


Il modello analizza la pronuncia di una unità acustica (triphone), la sua velocità e frequenza (diversi speaker parlano a velocità diverse, causando una variabilità nella durata del singolo fonema). Ogni fonema viene anche analizzato nel contesto destro e sinistro, ovvero in base al fonema precedente e successivo per stabilirne l'indice di probabilità.
L'Hidden Markov Model rappresenta un modello semplice e robusto, per il quale esistono potenti algoritmi di ottimizzazione che lo rendono il più adatto ad essere utilizzato per il pattern recognition. Una delle caratteristiche importanti dei modelli basati su HMM (Hidden Markov Model), è che possono essere ottimizzati utilizzando procedure di addestramento.

Il processo diventa ancora più complicato quando si analizzano le frasi.
Ed il sistema deve essere in grado di riconoscerne l'inizio e la fine.

Prendiamo ad esempio la frase "questa è una frase".
Innanzitutto il programma utilizza un Lexicon (vocabolario): include tutte le parole che possono essere riconosciute, inclusi gli acronimi e la loro trascrizione fonetica che ne descrive la pronuncia.
In più viene applicato il Modello statistico di linguaggio che utilizza la probabilità legata ad ogni parola in una determinata sequenza o contesto per verificare la correttezza di una frase.
Il modello statistico di linguaggio, nella tecnologia attuale utilizza un ambito di tre parole (trigrammi).

Lexicon e Language Model vengono creati sulla base di un cosiddetto Corpus, il quale non è altro che una enorme quantità di testo relativa all’ambito in cui verrà utilizzato il Topic. Come nasce un Modello di linguaggio? Prima vengono estratte tutte le parole contenute con la loro trascrizione fonetica ed il peso specifico di ognuna (numero di occorrenze nel Corpus). Quindi sofisticati algoritmi proprietari vengono utiizzati per estrarre il modello statistico di linguaggio, ovvero la rappresentazione statistica della consequenzialità a gruppi di tre parole.
Cerchiamo di semplificare la procedura con un esempio:
"sono visibili lesioni in corrispondenza..."
Se analizziamo un corpus di 1.000.000 di parole (documenti di un certo ambito per un totale di 1 milione di parole), vediamo che l'articolo "il" avrà un certo numero di ricorrenze, per comodità diciamo 10.000, mentre la preposizione "in" solo 5.000.
"il" quindi ha una frequenza dell'1%, mentre "in" lo 0.5%. Nell'analisi della frase sopra, per assonanza, quindi il sistema dovrebbe sempre proporci "il" al posto di "in", perché più 'probabile'.
Il Modello di linguaggio ci dice che le probabilità che l'articolo "il" segua le parole "visibili lesioni" ha una probabilità molto più bassa rispetto a "in".
E pertanto il sistema, secondo uno schema di wordgraph simile a quello in figura sopra, prediligerà il percorso che passa per la parola "in" rispetto a "il".

Perché è così complicato? Se prendiamo ad esempio un programma con un vocabolario di 60.000 parole (abbastanza comune al giorno d'oggi), una sequenza di tre parole potrebbe essere una qualsiasi delle 216 trilioni di possibilità. Ovviamente, anche il più potente dei computer fatica a cercare la combinazione corretta all'interno di tutte quelle possibili.
Aiuta molto la fase di creazione del Modello di linguaggio, ovvero le reti di probabilità multi-parola.
Occorre molta specializzazione ed esperienza nella preparazione dei dati necessari per la compilazione del Modello di linguaggio. Pochi dettagli possono comportare una differenza enorme, anche utilizzando lo stesso algoritmo.

Il processo effettua queste operazioni in parallelo ed in tempo reale, mentre noi stiamo dettando. Deve digitalizzare l'audio e analizzarlo, valutando le numerosissime ipotesi sia a livello di fonemi che di parole, computandole o scartandole, a seconda che siano valide o meno, mostrando al termine del processo l’ipotesi più probabile.
Si comprende come la capacità di calcolo sia un elemento essenziale per le performance e la futura evoluzione di questi sistemi.


© 2018 Reconice. All Rights Reserved. Powered by reconice