Capitolo 3: Softwares e Organizzazione Dati.
Pag. 63
Capitolo 3
Software e Organizzazione Dati
3.1. Introduzione
In letteratura sono utilizzati diversi software e librerie per l’estrazione delle features e
successiva classificazione, tra questi ricordiamo alcuni strumenti quali Marsyas, Aubio
14
,
jAudio
15
, MIRtoolbox (Lartillot & Toiviainen (2007)), openSMILE, Weka
16
o Essentia
(Wack (2010)).
Il capitolo che segue riguarderà sostanzialmente l’organizzazione dei dati in input e in
output, nonché la descrizione dei software utilizzati in questa tesi.
3.2. Organizzazione dei dati.
3.2.1. File Audio.
All’interno di questo studio si andrà ad analizzare la possibilità di classificare i brani
musicali semplicemente utilizzando la forma d’onda contenuta all’interno dei file audio in
formato .wave e da cui saranno poi estratte le feature.
Un file wave, contrazione di WAVEform audio file format (formato audio per la forma
d'onda), oltre al segnale audio che definisce il suono che ascoltiamo al suo interno presenta
altre informazioni, come sampling rate, artista, bit rate, genere etc., raccolte sotto forma di
meta data.
3.2.2. File model.
E’ il file, serializzato, contenente il modello addestrato del classificatore o dell’algoritmo
di regressione scelto. Servirà per valutare i successivi file audio non ancora classificati.
Il modello addestrato è un output intermedio. In particolare, dopo aver dato un’istanza del
training set all’algoritmo di classificazione, viene generato un file .model che rappresenta
il modello addestrato del classificatore.
3.2.3 File arff.
ARFF (Attribute Relationship File Format, formato di file con attributi e relazioni) è un
formato per un file testo, utilizzato per memorizzare dati in database.
14
http://aubio.org
15
http://jaudio.sourceforge.net
16
http://www.cs.waikato.ac.nz/ml/weka/
Capitolo 3: Softwares e Organizzazione Dati.
Pag. 64
Viene utilizzato per l'analisi dei dati con Weka. In questo file, i campi vengono strutturati
nel seguente modo:
Figura 37 Esempio di file Arff.
ARFF è caratterizzato da due sezioni distinte. La prima sezione è l’header, seguito poi dai
Dati (@data). L’header di un ARFF contiene il nome della relazione (@relation...), una
lista ordinata degli attributi (@attribute...), ed i tipi degli stessi attributi.
L’ordine degli attributi è mantenuto anche nella sezione riservata ai dati: ad esempio, se un
attributo è il terzo dichiarato, allora Weka si aspetta che tutti i valori di quegli attributi si
troveranno nella terza colonna delimitata dalla virgola.
3.3. Software e API
3.3.1 Google Charts
Google APIs (Google Applications programming interface) è un set di APIs sviluppate da
Google che permettono all’utente di comunicare con i servizi offerti dal colosso di
Redmond, per esempio Search, Gmail, Translate o Google Maps.
Spesso molte applicazioni di terze parti utilizzano queste API per sfruttare o estendere le
funzionalità dei servizi esistenti.
Per lo sviluppo del prototipo tra le diverse APIs che Google mette a
disposizione è stato utilizzato Google Chart per emulare lo spazio di
rappresentazione di Russell.
Questo strumento permette di creare dei grafi da inserire all’interno
di pagine web sulla base di opportuni dati che vengono inviati a
Google tramite una richiesta HTTP.
Diversi sono le tipologie di diagrammi supportati: Grafo a Linee,
Capitolo 3: Softwares e Organizzazione Dati.
Pag. 65
Grafo a Torta, Grafo a Radar, etc. tra quelli disponibili è stato utilizzato il Grafo a
Dispersione.
3.3.2. OpenSMILE.
The Munich open Speech and Music Interpretation by Large Space Extraction
(openSMILE) (F. Eyben (2010 e 2011) è un software modulare e open-source
principalmente orientato all’estrazione di un grande set di features dal segnale audio.
Ha spesso assunto un ruolo chiave nell’ambito dell’elaborazione dei segnali e nelle
applicazioni di apprendimento automatico, tra i più importanti task ricordiamo ad esempio
Automatic Speech Recognition (ASR), analisi del paralinguismo
17
nel parlato o Music
Information Retrieval (MIR).
Esso combina caratteristiche provenienti da due diversi domini, il menzionato MIR e
l’elaborazione del parlato, tutte facilmente selezionabili tramite un semplice file di
configurazione.
Inoltre openSMILE supporta la lettura e la scrittura dei dati in diversi formati
comunemente usati nel campo del data mining e dell’apprendimento automatico, tra tutti
siamo particolarmente interessati al formato ARFF in quanto direttamente utilizzabile in
combinazione con Weka.
openSMILE, dato il suo vasto campo applicativo (ricerche, dimostrazioni e prototipi) ed il
massiccio utilizzo da parte di aziende e ricercatori di tutto il mondo nel campo del
riconoscimento vocale e dell’affective computing, è stato scelto, in combinazione con
MIRtoolbox, come uno dei software di estrazione utilizzato all’interno di questa tesi.
Tutte le informazioni di seguito riportate fanno riferimento al manuale del software (F.
Eyben (2010).
Cosa succede all'interno di openSMILE
openSMILE permette di definire nuovi file di configurazione, oltre a quelli già presenti
all’interno del package, attraverso i quali si selezionano le features da estrarre dall’audio.
L’eseguibile SMILExtract, richiamabile da linea di comando, è la main application capace
di eseguire tutti i file di configurazione.
Il flusso applicativo di openSMILE può essere suddiviso sostanzialmente in tre fasi:
Fase di pre-configurazione: Le opzioni vengono lette dalla riga di commando e il file di
configurazione viene analizzato. Inoltre, vengono visualizzate le informazioni di utilizzo,
se richiesto, e viene generato un elenco dei componenti integrati nel processo.
17
La paralinguistica è la branca della linguistica che studia le lingue che usano riferimenti non verbali per la
comunicazione. Il nome deriva dalla parola inglese paralanguage, in italiano paralingua, utilizzata per
descrivere gli elementi che stanno attorno alla lingua come: l'altezza, il volume e il tono del discorso.
Capitolo 3: Softwares e Organizzazione Dati.
Pag. 66
Fase di configurazione: Il gestore di processo crea un'istanza di tutti i componenti elencati
all’interno del file di configurazione. Questa fase è a sua volta suddivisa in tre parti:
allocazione della memoria per ogni singolo componente/oggetto, apertura degli stream tra i
diversi oggetti, configurazione dei componenti. Le tre fasi appena descritte possono anche
essere ripetute più volte a causa dell’elevata interdipendenza. (ad esempio per quei
componenti che leggono l'uscita da un altro componente essi devono conoscere la
dimensionalità dell'uscita nonché il nome dello stream da cui leggere).
La maggior parte degli errori si verificano in questa fase, essi sono tipicamente causati da
bug di configurazione, valori di input fasulli, o file inaccessibili.
Fase di esecuzione: Una volta che tutti i componenti sono stati inizializzati con successo, il
gestore di processo fa partire il ciclo di esecuzione principale. Ogni componente ha
un metodo tick(), che implementa le principali funzionalità di elaborazione incrementale e
riporta lo stato dell’elaborazione attraverso il suo valore di ritorno.
All’interno di un ciclo di esecuzione vengono richiamati tutti i metodi tick() dei diversi
componenti, quando il metodo tick() ritorna un valore diverso da zero (ad indicare che un
certo componente ha completato l’elaborazione dei dati in input) il ciclo per lo specifico
componente viene interrotto e la sua funzione tick() non viene ulteriormente richiamata.
Figura 38 Descrizione dei component di openSMILE e della sua architettura.
openSMILE contiene altre classi che non possono essere istanziate tramite file di
configurazione, tali classi sono:
Capitolo 3: Softwares e Organizzazione Dati.
Pag. 67
The commandline parte (cCommandlineParser): Questa classe analizza la riga di
comando e fornisce all’applicazione chiamata (SMILExtract) le opzioni in un formato
accessibile. Sono anche eseguiti semplici controlli della sintassi della riga di comando.
The configuration manager (cConfigManager): Il gestore della configurazione carica il
file di configurazione che è stato specificato nella linea di comando di SMILExtract.
Il file viene suddiviso in più sezioni che poi sono analizzate singolarmente.
The component manager (cComponentManager): Il gestore dei componenti è il
responsabile dell’allocazione, configurazione ed esecuzione dei componenti.
Tutti i componenti allocati dal component manager estendono un'unica classe principale
cSmile-Component che definisce il modo in cui i diversi componenti comunicano tra di
loro.
Incremental processing
Guardando alla Figura 38, si può vedere che il flusso dei dati all’interno di openSMILE è
governato dal componente cDataMemory che gestisce internamente un elevato numero di
locazioni di memorizzazione.
Ogni area di memoria è indipendente dalle altre e può essere scritta al più da un
componente e può essere letta da un numero arbitrario di componenti. Dal punto di vista
del singolo componente, l’area di memoria appare come una Matrice N × K, dove N è il
numero di campioni all’interno di un frame e K è il numero di frame per file audio, ogni
componente legge e a scrive da M ed il processo di elaborazione termina quando tutti i dati
sono stati analizzati.
La Figura 38 mostra l'architettura complessiva ed il flusso di dati di openSMILE, dove i
diversi componenti dataSource, dataProcessor, e dataSink comunicano tramite una
struttura a repository, dove la risorsa condivisa è gestita sulla base di un token di accesso.
L’elaborazione incrementale è descritta nella Figura 39, nell’esempio sono definiti tre
livelli: wave, frames, and pitch.
Figura 39 Processo incrementale con ring-buffers.
Capitolo 3: Softwares e Organizzazione Dati.
Pag. 68
Il component cWaveSource salva i campioni all’interno del livello wave. La posizione di
scrittura nel livello è indicata dalla freccia in rosso. Il componente cFramer produce un
frame di dimensione 3 dai campioni nel livello “wave” e salva i frames all’interno del
livello frames. Il componente cPitch
18
estrae le pitch-features leggendo da frames e salva il
risultato della sua elaborazione nel livello pitch. Nell’immagine a destra è rappresentata la
medesima situazione ma con i buffer completamente riempiti.
Una volta che la fase di estrazione delle features è stata ultimata il componente cArffSink
salva i risultati su file in formato Arff.
Features
Il software è in grado di estrarre numerosi descrittori di basso livello o Low-Level
Descriptors (LLD) ai quali è possibile applicare diversi filtri, funzionalità e trasformazioni.
I diversi descrittori, nonché le funzionalità applicabili ai LLD, sono tutti elencati nella
tabella successiva.
Alcuni dei LLD in tabella possono essere estratti grazie ai già disponibili software di
estrazione usati negli studi per l’analisi del parlato. Per esempio, l’elaborazione delle
features basate sulle frequenze della scala Mel (Mel-Bands, MFCC)s, così come altre
features possono essere estratte utilizzando il software Hidden Markov Model Tool-kit
(HTK) incluso all’interno di openSMILE.
Per quanto riguarda i coefficienti di regressione, o coefficienti delta, essi possono essere
calcolati a partire dai descrittori di basso livello, inoltre, è possibile applicare un filtro a
media mobile al fine di rimuovere il “rumore” dai dati, o ad esempio al fine di smorzare le
fluttuazioni contenute nei dati delineandone un andamento più regolare e interpretabile.
Come già accennato, oltre all’estrazione di LLD, openSMILE da la possibilità di applicare
ai dati diversi filtri, funzionalità e trasformazioni.
Il risultato di queste operazioni sono degli array di dati che possono essere elaborati
utilizzando tutte le operazioni elementari come ad esempio: addizione, moltiplicazione e
potenza, ciò permette all’utente di creare delle features a partire da una combinazione di
quelle esistenti tramite opportune operazioni matematiche.
La Tabella 11 mostra una lista delle funzionalità disponibili in openSMILE.
Provided Low-Level Descriptors Provided Functionals
Signal energy Root Mean-Square &
logarithmic
Extremes Extreme values, position
and ranges
Loudness Intensity & approx.
loudness
Means Arithmetic, quadratic,
geometric.
18
cPitch è un componente il cui nome non esiste, è qui utilizzato solo a scopo illustrativo
Capitolo 3: Softwares e Organizzazione Dati.
Pag. 69
Waveform Zero-Crossing, Extremes,
DC
Moments Std. dev., variance,
kurtosis, skewness
FFT spectrum Phase, magnitude (lin, dB,
dBA)
Percentiles Percentiles and percentile
ranges quartiles.
Cepstrum Autocorrelation (ACF) and
Cepstrum
19
Regression Linear and quadratic
approximation
coefficients, regression
error
Mel/bark spectrum Bands 0-N. Peaks Number of Peaks, mean
peak distance, mean peak
amplitude
Semitone spectrum FFT based and filter based Segments Number of segments based
on delta threshold, mean
segment length
Cepstral Cepstral feature, e.g.
MFCC, LPCC
Sample values Values of the contour at
configurable relative
positions
Pitch F0 via ACF and SHS
methods, Probability of
Voicing
Times/duration Up- and down-level times,
rese/fall times, duration
Voice Quality HNR, jitter, Shimmer Onsets Number of onsets, relative
position of first/last on-
/offset
LPC LPC coeff.,Line Spectral
Pairs (LSP)
Discrete Cosine
Transformation (DCT)
DCT coefficients
Auditory Auditory spectra and PLP
coeff
Zero-Crossings Zero-crossing rate, Mean-
crossing rate
Formants Centre frequencies and
bandwidths, Energy in N
user-defined bands,
multiple roll-off points,
centroid, entropy and flux.
Tonal CHROMA, CENS,
CHROMA-based features
Tabella 11 Descrizione dei LLD e funzionalità disponibili nel package di openSMILE
Procedendo nella descrizione di come intendiamo utilizzare questo software per i nostri
interessi, il nostro obiettivo sarà quello di utilizzare questo strumento al fine di estrarre da
un database audio delle caratteristiche che ci permettano di riconoscere l’emozione
contenuta nel brano.
19
il cepstrum è il risultato della trasformata di Fourier applicata allo spettro in decibel di un segnale
Capitolo 3: Softwares e Organizzazione Dati.
Pag. 70
Quanto detto sarà effettuato utilizzando la riga di comando nonché apposite istruzioni che
fanno uso di file di alcuni configurazione, scritti da importanti ricercatori e presenti
all’interno del package standard di openSMILE, e un altro che è stato appositamente scritto
per questa tesi.
Tra i file di configurazione già disponibili possiamo scegliere tra un vasto numero di
possibilità. Per esempio alcuni permettono l’elaborazione delle Chroma features
(ampiamente utilizzate per il riconoscimento della tonalità e degli accordi), altri
l’estrazione di PLP e MFCC per l’analisi del parlato (J. Psutka (2001), in ultimo numerosi
sono i file di configurazione dedicati al riconoscimento delle emozioni.
Per i nostri interessi ci concentreremo su quest’ultima categoria, in particolare di tutti i file
di configurazione ne sono stati scelti due (oltre a file di configurazione appositamente
scritto) che andremo a descrivere di seguito.
emolarge
Il primo set di features a cui faremo riferimento è emolarge. Scritto da Florian Eyben,
Martin Woellmer, Bjoern Schuller nel 2009 è rappresentato dal file emo_large.conf
all’interno della cartella config del package di openSMILE.
Il set contiene in totale 6669 features ottenute da una base di 57 descrittori di basso livello
(LLD), etichettati come segue:
LLD openSMILE label Description
Energy LOGenergy Log-based signal energy
Cepstrum
MFCC 15 MFCCs (0-14)
melspec
power of 26 Mel-frequency bands (0 – 25) distributed
btween 0 and 8 kHz
Pitch
F0 The fundamental frequency computed from the Cepstrum
F0env Output of F0 envelope (exponential decay smoothing)
Voice quality voiceProb The voicing probability computed from the ACF.
Crossing zcr Zero-crossing rate of time signal
Spectral
fband
Compute energy in the given spectral band
by summation of FFT bins in this band
spectralRollOff Compute a spectralRollOff to a given RollOff point.
spectralFlux Computation of Sprectral Flux.
spectralCentroid Computation of spectral centroid
spectralMaxPos
Computation of the position of the maximum magnitude
spectral bin(in Hz).
spectralMinPos
Computation of position of the minimum magnitude
spectral bin (in Hz).
Tabella 12 Lista dei LLD per il file di configurazione 'emolarge'.
Capitolo 3: Softwares e Organizzazione Dati.
Pag. 71
Per ognuno dei LLD in tabella sono calcolati 57 coefficienti delta di primo ordine
(differenziali) e 57 coefficienti di accelerazione (coefficienti delta di secondo ordine) per
un totale di 171 descrittori di basso livello a cui sono state applicate 39 funzionalità che
riporteremo nella tabella di seguito riportata.
Functional type Name under openSMILE Description
Extremes
range Output of range (max-min)
maxPos The absolute position of the maximum value (in frames)
minPos The absolute position of the minimum value (in frames)
maxameandist Refers to maximum value minus arithmetic mean.
minameandist Refers to arithmetic mean - minimum value
Means
amean The arithmetic mean of the contour
absmean The arithmetic mean of absolute values
qmean Refers to quadratic mean
nzabsmean
Refers to arithmetic mean of absolute values (of non-zero
values only)
nzqmean Refers to quadratic mean (of non-zero values only)
nzgmean
Refers to geometric mean (of absolute values of non-zero
values only)
nnz Output of number of non-zero values
Regression
linregc1 The slope (m) of a linear approximation of the contour
linregc2
The offset (t) of a linear approximation of
the contour
linregerrA
The linear error computed as the difference
of the linear approximation and the actual
contour
linregerrQ
The quadratic error computed as the difference of the
linear approximation and the actual contour
qregc1 Quadratic regression coecient 1
qregc2 Quadratic regression coecient 2
qregc3 Quadratic regression coecient 3
qregerrA
Linear error between contour and quadratic regression
line (parabola).
qregerrQ
Quadratic error between contour and quadratic regression
line (parabola).
centroid
Output of centroid of contour (this is computed as a by-
product of the regression coecients).
Moments
variance The variance of the values in the contour
stddev The standard deviation of the values in the contour
skewness The skewness (3rd order moment).
kurtosis The kurtosis (4th order moment).