Riconoscimento vocale v1.4

45
RICONOSCIMENTO VOCALE Storia – Analisi – Metodologie SpeechRecognition 2.2.0 Lombardi Felice (fxlombardi@gma

Transcript of Riconoscimento vocale v1.4

Page 1: Riconoscimento vocale v1.4

RICONOSCIMENTO VOCALEStoria – Analisi – Metodologie

SpeechRecognition 2.2.0

Lombardi Felice ([email protected])

Page 2: Riconoscimento vocale v1.4

CENNI STORICI

I primi tentativi di riconoscimento vocale vengono effettuati negli anni 50 negli Stati Uniti, con lo scopo di realizzare sistemi controllabili con la voce.

I maggiori finanziatori della ricerca in questo campo furono la NSA (National Security Agency) e il dipartimento della difesa.

Page 3: Riconoscimento vocale v1.4

I PRIMI TENTATVI

1952 – AUDREY • Il primo riconoscitore vocale conosciuto e documentato

• Costruito nel 1952 da Davis, Biddulph, e Balashek nei Bell Laboratories

• Completamente analogico

• Riconosceva stringhe di numeri dettate con pause di 350 millisecondi tra un numero e l’altro.

• Arrivava anche al 97-99% di precisione

Alla luce di questi primi successi, perché se non fu sfruttato?Non erano economicamente interessante. AUDREY occupava un rack alto 1,8 metri, era costoso, consumava troppa energia ed era esposto a una miriade problemi associati ai circuiti a valvole.Inoltre, il suo funzionamento era affidabile solo se a pronunciare le cifre erano alcuni oratori designati.

Page 4: Riconoscimento vocale v1.4

COSA ACCADE DOPO AUDREY?

Inizi 1960 - Esplorazione, sistemi ibridi, la segmentazione fonetica

Fine 1960 - Approccio bruta forza, i modelli: FUNZIONA! Difficile da scalare

Inizi 1970 - Primo grande progetto ARPA, Speech Understanding Research (SUR)

Fine 1970 - Prima apparizione del Hidden Markov Models (HMM): IBM (Jelinek), Baker (Dragon)

Inizi 1980 - Nascono ulteriori modelli, l’HMM è ancora conosciuto da pochi

Fine 1980 - Nuovi progetti DARP, l’HMM diventa popolare

Inizi 1990 - Altri progetti DARPA, HMM migliora.

Metà 1990 - Migliora HMM. Nascono le industrie (Nuance, SpeechWorks)

Fine 1990 - Migliora HMM. IVR

Inizi 2000 - Migliora HMM. IVR

Inizi 2010 - Migliora HMM. Voice MobileMIGLIORAMENTI

Soprattutto a causa diLegge di Moore

Page 5: Riconoscimento vocale v1.4

OGGI

2011– SIRI • Vocabolario praticamente infinito

• Comprensione del linguaggio contestuale

• Accesso vocale per il calendario, ai contatti, contribuisce a prendere prenotazioni.

Dà risposta su un sacco di cose, tra cui al «senso della vita»!

Page 6: Riconoscimento vocale v1.4

OGGI

2011– SIRI • Vocabolario praticamente infinito

• Comprensione del linguaggio contestuale

• Accesso vocale per il calendario, ai contatti, contribuisce a prendere prenotazioni.

Dà risposta su un sacco di cose, tra cui al «senso della vita»!

Perché Siri ha successo?Si percepisce un’intelligenza. Risulta divertente da utilizzare, spiritoso, e con una personalità accattivante. Funziona relativamente bene per un certo numero di compiti.

MIGLIORA CON IL TEMPO

Page 7: Riconoscimento vocale v1.4

OGGI

SiriApple 2011

Google NowGoogle 2012

CortanaMicrosoft 2014

Page 8: Riconoscimento vocale v1.4

OGGI

SiriApple 2011

Basato su un tipo di interfaccia uomo-macchina chiamata

Natural Language User Interface

Page 9: Riconoscimento vocale v1.4

Google NowGoogle 2012

OGGI

Google Now si appoggia a una Rete Neurale Artificiale, una sorta di software-cervello progettato affinché possa imparare a riconoscere oggetti, immagini, volti, e naturalmente, linguaggi parlati.

Una rete neurale artificiale è sostanzialmente un modello matematico costituito da diversi costrutti interconnessi che mimano l’architettura di connessioni di una rete neurale biologica.

Page 10: Riconoscimento vocale v1.4

DIPENDENTE O INDIPENDETE?

Speack Dependent

• Il modello vocale viene adattato alla voce dell’utente

• Prevede una fase di addestramento in cui viene chiesto all’utente di leggere un testo con voce e velocità naturali

• Permettono migliori risultati in termini di precisione

• Permettono di correggere errori di interpretazione usando solo funzioni vocali

• Gli algoritmi su cui sono basati, provvedono che venga tenuta traccia delle correzioni, per consentire di imparare dagli errori

I sistemi di riconoscimento vocale si dividono in due categorie:

Page 11: Riconoscimento vocale v1.4

DIPENDENTE O INDIPENDETE?

Speack Dependent

• Il modello vocale viene adattato alla voce dell’utente

• Prevede una fase di addestramento in cui viene chiesto all’utente di leggere un testo con voce e velocità naturali

• Permettono migliori risultati in termini di precisione

• Permettono di correggere errori di interpretazione usando solo funzioni vocali

• Gli algoritmi su cui sono basati, provvedono che venga tenuta traccia delle correzioni, per consentire di imparare dagli errori

Speack Indipendent

• Permettono il riconoscimento di un parlato generico, senza essere legati ad un determinato timbro di voce

• Oggi è il mezzo di riconoscimento vocale più utilizzato

• Utile anche nelle realtà di servizi di informazione automatica dove tramite telefono ci viene chiesto di rispondere ad alcune domande

• Offrono buoni risultati in situazioni in cui all’utente viene dato un numero più ristretto di termini da poter utilizzare

• Hanno bisogno di una grande potenza di calcolo per essere performanti

I sistemi di riconoscimento vocale si dividono in due categorie:

Page 12: Riconoscimento vocale v1.4

IL DATABASE

Speack Dependent

• Possono riconoscere correttamente oltre cento parole al minuto confrontando quello che viene detto con un vocabolario di almeno 200.000 lemmi.

• Un PC riesce a compiere questa operazione in tempo reale, in background

Speack Indipendent

• È necessario “insegnare” al sistema tutti i modi diversi in cui ogni singola parola può essere pronunciata.

• Non potendo effettuare il training sul parlatore, la complessità si sposta verso il database che diventa molto grande e oneroso da costruire.

Il funzionamento di un sistema di riconoscimento vocale si basa sulla comparazione dell’audio iningresso, opportunamente elaborato, con un database creato in fase di addestramento delsistema. • Si cerca di individuare la parola pronunciata dal parlatore, cercando nel database un suono simile

e verificando a che parola corrisponde.

Operazione risulta essere molto complessa, perché non viene fatta sulle parole intere, ma sui fonemi che la compongono.

Page 13: Riconoscimento vocale v1.4

COME FUNZIONA IL RICONOSCIMENTO VOCALE

1. Trasformazione dei dati audio dal dominio del tempo al dominio della frequenza tramite FFT (Fast Fourier Transform)

2. Organizzazione dei dati ottenuti (tramite l’applicazione delle regole e del dizionario fonetico di una lingua)

3. Riconoscimento dei singoli fonemi

4. Composizione dei fonemi in parole e applicazione di un modello linguistico caratteristico della lingua in uso

Page 14: Riconoscimento vocale v1.4

FAST FOURIER TRANSFORM

Nel dominio del tempo il segnale audio si presenta come una forma d’onda periodica di frequenza in un formato in cui le informazioni non permettono di individuare un pattern.

La conversione:La conversione avviene realizzando una analisi di spettro del segnale identificando le frequenze che compongono i suoni.La FFT è applicata in un segmento di audio ricavando un grafico con l’ampiezza di ogni singola frequenza che compone il suono. Il Database è costituito da migliaia di grafici.

Page 15: Riconoscimento vocale v1.4

FAST FOURIER TRANSFORM

Page 16: Riconoscimento vocale v1.4

I PROBLEMI DEL RICONOSCIMENTO VOCALE

Il sistema ricava dalla FFT dei valori dai quali viene calcolato un feature number.

Il FEATURE NUMBER è un numero che rappresenta il suono nel centesimo di secondo in esame.

In una ipotesi ideale, ci sarebbe una corrispondenza diretta tra un feature number e un fonema. Quindi se il segmento di audio analizzato mostrasse come risultato il feature number n° 52 significherebbe che il parlatore ha pronunciato una “h”

N.B.: Un fonema dura più di un centesimo di secondo perciò ogni fonema produce più feature number.

I problemi legati al riconoscimento vocale sono:• Persone differenti, pronunce differenti (mai stesso suono per lo stesso fonema);• I rumori di fondo, la musica e gli altri suoni sono elementi di disturbo;• Il suono di ogni fonema cambia a seconda del fonema precedente.

Page 17: Riconoscimento vocale v1.4

I PROBLEMI DEL RICONOSCIMENTO VOCALE

Esempio di un piccolo DB contenente Feature Audio alle quali sono assegnati dei Feature Number.

Page 18: Riconoscimento vocale v1.4

REALIZZAZIONE RICONOSCITORE

Passi per realizzare un riconoscitore:• Istituire il software su come suona un fonema nelle varie pronunce;

• Il sistema memorizza migliaia di feature number per ogni fonema.

• Il software apprende una serie di dati statistici (quante probabilità ci sono che un determinato fonema generi una certa sequenza di feature number); questa analisi è usata nella fase di riconoscimento. I computer si affidano all’ «Hidden Markov Model»

Page 19: Riconoscimento vocale v1.4

HIDDEN MARKOV MODEL (HMM)

Che cos’è?

• Modelli statistici che si possono applicare a sistemi che presentino la proprietà di Markov.

• Un sistema presenta tale proprietà quando gli stati che può assumere in futuro dipendono solo dallo stato presente e non dagli stati passati.

Quando viene usato?

• Per modellizzare una grossa matrice di fonemi, collegati tra di loro da ponti in base alle probabilità che un fonema sia legato all’altro.

• Per sapere quando un fonema finisce e inizia il successivo

Page 20: Riconoscimento vocale v1.4

HIDDEN MARKOV MODEL (HMM)

Questo modello prevede la pronuncia della parola in tre modi diversi:

t-ow-m-aa-t-ow → Inglese Britannicot-ah-m-ey-t-ow → Inglese Americanot-ah-m-ey-t-a → Possibile pronuncia quando si parla rapidamente.

Si noti, dalle probabilità attribuite alle connessioni tra i fonemi, come il modello risulta essere leggermente sbilanciato verso il l’inglese britannico.

Esempio di HMM applicato alla pronuncia della parola inglese «Tomato»

Page 21: Riconoscimento vocale v1.4

IL SILENZIO

Un software di riconoscimento vocale sfrutta anche le pause del parlato per identificare l’inizio di un nuovo fonema, inoltre si occupa di analizzare in fonema “silenzio”.

Le pause del parlato vengono anche sfruttate per prendere dei “campioni” del rumore di fondo e del fruscio che generano pattern di feature number, esattamente come il resto dell’audio.

Queste sequenze di dati vengono usate dal software per “depurare” l’informazione sonora dal pattern di rumore così ricavato.

Page 22: Riconoscimento vocale v1.4

IL SILENZIO

Un software di riconoscimento vocale sfrutta anche le pause del parlato per identificare l’inizio di un nuovo fonema, inoltre si occupa di analizzare in fonema “silenzio”.

Le pause del parlato vengono anche sfruttate per prendere dei “campioni” del rumore di fondo e del fruscio che generano pattern di feature number, esattamente come il resto dell’audio.

Queste sequenze di dati vengono usate dal software per “depurare” l’informazione sonora dal pattern di rumore così ricavato.

Page 23: Riconoscimento vocale v1.4

IL SILENZIO

Un software di riconoscimento vocale sfrutta anche le pause del parlato per identificare l’inizio di un nuovo fonema, inoltre si occupa di analizzare in fonema “silenzio”.

Le pause del parlato vengono anche sfruttate per prendere dei “campioni” del rumore di fondo e del fruscio che generano pattern di feature number, esattamente come il resto dell’audio.

Queste sequenze di dati vengono usate dal software per “depurare” l’informazione sonora dal pattern di rumore così ricavato.

Page 24: Riconoscimento vocale v1.4

SpeechRecognition 2.2.0Libreria per eseguire il riconoscimento vocale con le API di Google riconoscimento vocale.

Page 25: Riconoscimento vocale v1.4

API GOOGLE

A proposito di Riconoscimento Vocale, ad oggi Google mette a disposizione degli sviluppatori una serie di API che consentono di accedere al suo servizio di riconoscimento vocale in maniera facile e intuitiva.

Accedere al servizio di Riconoscimento Vocale di Google significa avere un’accuratezza di risultato pari al 96% e inoltre usufruire di un servizio Speack Indipendent basato su Reti Neurali Artificiali.

Queste API sono sfruttate dalla libreria SpeechRecognition 2.2.0. Questa libreria mette a disposizione dello sviluppatore una serie di metodi che permettono rispettivamente:• Cattura di frasi avendo come input un microfono• Cattura di frasi avendo come input un file audio• Analisi e riduzione del pattern rumore• Ascolto in backgroud

Page 26: Riconoscimento vocale v1.4

INTENZIONE…

Mi chiamoFelice

Page 27: Riconoscimento vocale v1.4

INTENZIONE…

Mi chiamoFelice

Page 28: Riconoscimento vocale v1.4

PRODOTTO

Utilizzando la libreria descritta si è messo in piedi un software privo di una GUI vera e propria, che permette all’utente di eseguire le

4 operazioni matematica (addizione, sottrazione, moltiplicazione, divisione)semplicemente utilizzando la propria voce.

Page 29: Riconoscimento vocale v1.4

PRODOTTO - Requisiti

Necessita di:• Pyton 3.0 o maggiori• Libreria SpeechRecognition 2.1.3 o maggiori (https://pypi.python.org/pypi/SpeechRecognition/2.1.3)• Libreria PyAudio 0.2.8 o maggiori (https://pypi.python.org/pypi/PyAudio)

Fa uso di:• Un dispositivo di input vocale• Una connessione a Internet per raggiungere il Server

VocalCalculator v1.2

Page 30: Riconoscimento vocale v1.4

VocalCalculator v1.2

Page 31: Riconoscimento vocale v1.4

VocalCalculator v1.2

Page 32: Riconoscimento vocale v1.4

VocalCalculator v1.2

Page 33: Riconoscimento vocale v1.4

VocalCalculator v1.2

Page 34: Riconoscimento vocale v1.4

VocalCalculator v1.2

Page 35: Riconoscimento vocale v1.4

VocalCalculator v1.2

Page 36: Riconoscimento vocale v1.4

VocalCalculator v1.2

Page 37: Riconoscimento vocale v1.4

VocalCalculator v1.2

Page 38: Riconoscimento vocale v1.4

VocalCalculator v1.2

Page 39: Riconoscimento vocale v1.4

VocalCalculator v1.2

Page 40: Riconoscimento vocale v1.4

I MEDOTI DELLE LIBRERIE UTILIZZATI IN VocalCalculator v1.2

adjust_for_ambient_noise(source)listen(source)recognize(audio)

PARAMETRI DA SETTERE ALL’INTERNO DELLA LIBRERIAlanguage = "it-IT" #linguaggio da riconoscereself.format = 16 #codifica a 16 bitself.RATE = 16000 #frequenza di campionamento in Hertzself.CHANNELS = 1 #mono audio

BITRATE = 256 000 bytes (bps) = 256 kilobytes per secondo (kbps)

Page 41: Riconoscimento vocale v1.4

LINK

Apri SorgenteVocalCalcolator v1.2

Page 42: Riconoscimento vocale v1.4

Speack Indipendent: I METODI

Page 43: Riconoscimento vocale v1.4

Speack Indipendent: I METODI

Page 44: Riconoscimento vocale v1.4

VocalCalculator v1.2 – BUSINESS CORE

Page 45: Riconoscimento vocale v1.4

VocalCalculator v1.2 – BUSINESS CORE