Sei sulla pagina 1di 22

Algoritmi di riconoscimento del genere musicale

Matteo Spanio
Agosto — Settembre 2020
Introduzione
 I want to make one minor quibble about the idea that there’s
Mathematics behind anything: there is no math behind anything.
Math is one of the languages that we use to describe the world,
computational languages are also languages that we use to describe
the world.
Allen Downey, Scipy Conference, 2015

I generi musicali sono etichette create e utilizzate dagli esseri umani per clas-
sificare e descrivere il vasto universo della musica; non hanno definizioni e confini
rigidi poiché sorgono attraverso una complessa interazione tra fattori pubblici,
economici, storici e culturali.
L’estrazione automatica delle informazioni musicali sta acquisendo importanza
come un modo per strutturare e organizzare il numero sempre più elevato di file
musicali disponibili digitalmente sul Web. È molto probabile che nel prossimo
futuro tutta la musica registrata nella storia umana sarà disponibile sul Web e
l’analisi automatica della musica sarà uno dei servizi che i fornitori di distribuzione
di contenuti musicali utilizzeranno per attirare i clienti.
Le gerarchie di genere, che in passato venivano create manualmente da esper-
ti umani, sono attualmente uno dei modi utilizzati per strutturare i contenuti
musicali sul Web. La classificazione automatica del genere musicale riesce ad
automatizzare questo processo e fornire una componente importante per un siste-
ma completo di recupero delle informazioni musicali per i segnali audio. Inoltre
fornisce una struttura per lo sviluppo e la valutazione delle funzionalità per la
descrizione del contenuto musicale.
Indice

1 Il suono digitale 1
1.1 Il Campionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 La Quantizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 La Trasformata Discreta di Fourier . . . . . . . . . . . . . . . . . . 3
1.4 Pulse Code Modulation . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Algoritmi di riconoscimento musicale 6


2.1 Shazam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.1 Fingerprinting . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.2 Confronto tra input e DB . . . . . . . . . . . . . . . . . . . 9
2.2 Machine Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.1 Feature extraction . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.2 Riconoscimento . . . . . . . . . . . . . . . . . . . . . . . . . 12

3 Una semplice implementazione 13


3.1 Codice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Elenco delle figure


1 (a) segnale analogico, (b) quantizzato, (c) campionato, (d) quantiz-
zato e campionato . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Due codifiche diverse dello stesso segnale audio . . . . . . . . . . . . 4
3 passaggi successivi di estrazione della fingerprint . . . . . . . . . . . 8
4 Feature diversi per lo stesso segnale audio . . . . . . . . . . . . . . 12

Convenzioni usate Nel testo sono presenti numerosi riferimenti alla bibliografia
Il suono digitale
Secondo la fisica, il suono è una vibrazione itinerante, cioè un’onda che si muove
attraverso un mezzo come l’aria. L’onda sonora trasferisce energia da particella
a particella fino a quando non viene finalmente “ricevuta” dalle nostre orecchie
e percepita dal nostro cervello. I due parametri fondamentali per descrivere un
suono sono l’ampiezza (ciò che chiamiamo anche volume) e l’altezza (o frequenza,
la misura delle oscillazioni dell’onda per unità di tempo).1
La recente crescita tecnologica ha comportato un deciso miglioramento delle
performance di velocità e di densità di circuiti e memorie, rendendo possibile la
rappresentazione digitale di grandi quantità di dati, compresi i segnali acustici.
Nello specifico la digitalizzazione del suono ha comportato una serie di trasforma-
zioni a partire dagli anni ’80, che hanno interessato sia i professionisti che i fruitori
di musica. Dall’introduzione sul mercato del primo CD per uso commerciale nel
1982 ad oggi si è assistito alla nascita (e fine) di numerosi supporti digitali (Digital
Audio Tape, MiniDisc, USB, DVD, HDD, SSD, Cloud).2
Ciò ha permesso che il trattamento e il processo numerico dei segnali digitali
(DSP3 ) assumesse una netta preponderanza rispetto a quello analogico: una suc-
cessione di numeri che rappresentano l’ampiezza del segnale in precisi e ravvicinati
istanti di tempo4 è molto più precisa e affidabile di un’approssimazione non di-
screta acquisita su un nastro magnetico. Quindi si è dovuto progettare dei sistemi
in grado di convertire il suono analogico in una successione di valori che vadano
a descrivere i vari parametri del suono (altezza, intensità, timbro). Osservando
la rappresentazione cartesiana di un’onda sonora nel dominio del tempo si nota
come l’asse delle ordinate descriva l’ampiezza e l’asse delle ascisse metta in evi-
denza la frequenza a cui si muove l’onda. La conversione del suono da analogico
a digitale avviene quindi sui due livelli suddetti: si parlerà di campionamento per
la frequenza e quantizzazione per l’ampiezza.

1.1 Il Campionamento
Il campionamento è la discretizzazione del segnale analogico nel tempo.5
In altre parole, il campionamento viene utilizzato per convertire il segnale con-
tinuo variabile nel tempo in una sequenza discreta di numeri reali.6 L’intervallo
tra due successivi campioni discreti è il periodo di campionamento (T c). Si parlerà
1
Righini 2009
2
Cipriani e Giri 2013
3
acronimo inglese: Digital Signal Processing (Downey 2014)
4
Lombardo e Valle 2008, p. 44
5
ivi, p. 47
6
Giannakopoulos 2020

1
di frequenza di campionamento7 (f c = T1c ) come attributo che descrive il processo
di campionamento.
Dal momento che la rappresentazione del segnale è data dalla variazione del-
l’ampiezza nel tempo, il campionamento corrisponde all’individuazione periodica
della presenza di segnale sull’asse delle ascisse. Nel dettaglio, per poter descrivere
correttamente un segnale, occorre campionarne almeno un punto nella fase positi-
va e uno nella fase negativa, se non si facesse cosı̀ si incorrerebbe nella perdita di
valori essenziali per ricreare l’onda, e in fase di interpolazione si creerebbero dei
segnali non presenti originariamente o se ne perderebbero degli altri.8 Ovviamen-
te più brevi saranno gli intervalli di tempo tra un campione e l’altro, più simile
all’originale analogico sarà il suono campionato. Al limite, per intervalli di tempo
infinitamente brevi, il segnale digitale corrisponderà a quello reale. Generalizzando
si è osservato che per ovviare alla perdita di informazioni, occorre che il campiona-
mento prelevi almeno due campioni per la parziale di frequenza massima persente
nel segnale (f c = 2 × f reqmax ).9

1.2 La Quantizzazione
La quantizzazione è il processo di sostituzione di ogni numero reale della sequenza
di campioni con un’approssimazione da un insieme finito di valori discreti. In altre
parole, la quantizzazione è il processo di riduzione della precisione del numero
infinito di un campione audio a una precisione finita definita da un particolare
numero di bit.10
Nella maggior parte dei casi, vengono utilizzati 16 bit per punto per rappre-
sentare ciascun campione quantizzato, il che significa che ci sono 216 livelli per il
segnale quantizzato. Per questo motivo, i valori audio grezzi di solito variano da
−215 a 215 (1 bit usato per il segno), tuttavia questo è solitamente normalizzato
nell’intervallo (-1, 1) per semplicità.11
7
Alcuni testi si riferiscono a questo valore con tasso di campionamento per distinguerlo dalla
frequenza nel senso di cicli al secondo per un segnale, rispecchiando la differenziazione linguistica
che avviene in inglese tra frequency per frequenza e sample rate per frequenza di campionamento.
8
Il cosiddetto fenomeno dell’aliasing o sottocampionamento.
9
Questa regola è stata definita dal teorema del campionamento di Nyquist-Shannon nel 1949,
anche se sarebbe più corretto chiamarlo teorema di Whittaker-Nyquist-Kotelnikov-Shannon
(WNKS), secondo l’ordine cronologico di chi ne ha dimostrato versioni via via più generaliz-
zate. Ad ogni modo ne deriva che la frequenza di campionamento standard è di 44100 Hz, ossia
il doppio di 22050 Hz, che è la massima frequenza udibile dall’orecchio umano (Lombardo e Valle
2008, p. 54 eDonati 2018, p. 92)
10
Giannakopoulos 2020
11
Di solito questa proprietà di risoluzione in bit della procedura di quantizzazione è detta
risoluzione del campione e viene misurata in bit per campione. Fayek 2016

2
Figura 1: (a) segnale analogico, (b) quantizzato, (c) campionato, (d) quantizzato e campionato

Ovviamente la necessità di rappresentare un insieme infinito di possibilità di-


namiche del suono in un insieme finito di valori comporta la perdita e una certa
approssimazione del segnale originario. Questa approssimazione è detta errore di
quantizzazione, maggiore è il numero di bit che codificano il segnale, minore sarà
l’errore di quantizzazione12 .

1.3 La Trasformata Discreta di Fourier


Oltre alla rappresentazione del suono nel dominio del tempo, esiste la possibilità
di rappresentarne le stesse proprietà anche nel dominio della frequenza. Questo
sistema venne studiato da Charles Fourier, che definı̀ anche come passare dalla rap-
presentazione nel dominio del tempo a quello nel dominio della frequenza, questo
processo è detto trasformata di Fourier o Fourier Transform (FT).
Quando il segnale di partenza è in formato digitale si può applicare la Trasfor-
mata Discreta di Fourier (DFT). L’idea sottostante alla DFT è che lo spettro sia
campionato in frequenza cosı̀ come la forma d’onda digitale viene campionata nel
tempo.
Matematicamente parlando, la relazione tra N campioni nel dominio del tem-
po x0 , x1 , ..., xN −1 e N numeri complessi della trasformata discreta di Fourier
12
Lombardo e Valle 2008, p. 54

3
X0 , X1 , ..., XN −1 è descritta dalla formula:
N −1

xn e−ik N n
X
Xk = k = 0, ..., N − 1
n=0


dove i è l’unità immaginaria e e N è una radice dell’unità primitiva N -esima.13
In sostanza si ha che i numeri complessi Xk rappresentano l’ampiezza e la fase
di diverse componenti sinusoidali del segnale in ingresso xn . Il calcolo della somma
richiede O(N 2 ) operaioni aritmetiche, per ottimizzare le prestazioni dell’algoritmo
è stata ideata la trasformata veloce di Fourier (FFT) che calcola lo stesso risultato
con un numero di operazioni O(N log(N )). Nel caso in cui N sia una potenza
di 2 le operazioni diventano O(N log2 (N )) rendendo molto più veloce il calcolo
risolutivo della sommatoria da parte del computer. Infatti gli algoritmi DFT e
FFT sono un elemento essenziane nell’analisi digitale dei segnali.14 15

(a) Modulazione dell’ampiezza dell’impulso (PAM)

(b) Modulazione del codice di impulso (PCM)

Figura 2: Due codifiche diverse dello stesso segnale audio

13
Wikipedia n.d.
14
Si vedrà poi nella sezione 2.2 come la DFT funga da base per altri processi fondamentali
come la STFT (Short Time Fourier Transform) e tutti quei procedimenti di analisi spettrale del
segnale.
15
Lombardo e Valle 2008, p. 78-79

4
1.4 Pulse Code Modulation
Il passo finale della digitalizzazione, che ingloba i processi di quantizzazione e
campionamento, è la generazione del codice associato al campione.
Esistono molti modi di codificare un segnale. Il modo di cui ci siamo con-
cettualmente serviti senza saperlo è il Pulse Amplitude Modulation (PAM), per il
quale un impulso occorre a ogni intervallo di campionamento, e l’ampiezza della
forma d’onda è un valore digitale che corrisponde all’ampiezza analogica (figura
2a). Ma il modello considerato standard per la codifica digitale è il cosiddetto
Pulse Code Modulation (PCM): l’informarmazione viene racchiusa in gruppi di bit
che rappresentano il variare dell’ampiezza nel tempo, l’uno corrsiponde a presen-
za di segnale, mentro lo 0 ne descrive l’assenza. Nella figura 2b si può vedere
la rappresentazione grafica della PCM: i numeri romani indicano la successione
dei campioni, e per ogni campione (di 3 bit) si trova un numero binario che ne
rappresenta l’ampiezza.
La codifica PCM è usata in tutti i settori dell’archiviazione e della trasmis-
sione digitale dei dati. La comodità di questa rappresentazione è che si possono
facilmente operare controlli o modifiche sui bit senza perdere il segnale originale,
inoltre è molto meno sensibile al rumore delle altre codificazioni.16

16
Cipriani e Giri 2013

5
Algoritmi di riconoscimento musicale
Gli algoritmi di elaborazione del segnale audio generalmente coinvolgono l’anali-
si del segnale, l’estrazione delle sue proprietà, la previsione del suo andamento,
il riconoscimento della presenza di uno schema nel segnale e il modo in cui un
particolare segnale è correlato ad altri segnali simili. Negli ultimi decenni l’elabo-
razione del segnale audio è cresciuta in modo significativo in termini di analisi e
classificazione del segnale. Ed è stato dimostrato che le soluzioni di molti problemi
esistenti possono essere risolte integrando i moderni algoritmi di machine learning
(ML) con le tecniche di DSP.17
Gli esseri umani possono facilmente distinguere tra vari suoni senza compiere
alcuno sforzo, ad esempio possiamo facilmente cogliere la differenza tra parlato
e musica, suoni di auto e camion, qualità del parlato di bambini e adulti, vari
altoparlanti, rumori e suoni utili, ecc. Lo scopo degli studi sugli algoritmi di
riconoscimento del segnale audio è quello di far si che anche i computer siano in
grado di cogliere la differenza tra i vari suoni. Le modalità di riconoscimento dei
segnali acustici avvengono principalmente in due maniere nella mente umana cosı̀
come per le macchine:

1. attraverso la memoria ci si può ricordare di aver già sentito un pezzo di


cui si conoscono le caratteristiche (ciò avviene attraverso la consultazione di
database per le macchine);

2. attraverso l’analisi delle caratteristiche del segnale si possono riconoscere


degli stilemi che ci permettono di associare il brano a un genere, un periodo
o un compositore (per i computer questo genere di analisi avviene attraverso
il ML).

L’utilità di questo genere di algoritmi, oltre a quella più ovvia di riconoscere


un brano musicale avendo a disposizione l’audio ma non il titolo, è l’impiego in
ambito di e-commerce e indagini di mercato: dalla semplice analisi dell’input di un
microfono installato su qualsiasi dispositivo è possibile conoscere cosa stia ascol-
tando una persona. Archiviando queste informazioni sarà poi possibile creare, per
un ipotetico cliente di un servizio di streaming musicale, quello che in inglese viene
detto recommendation system o collaborative filtering. Oppure, facendo uso di ar-
chivi in larga scala, è possibile elaborare indagini di mercato per conoscere i gusti
musicali di un certo campione statistico e prendere decisioni su cosa introdurre nel
mercato basandosi sulle preferenze degli utenti.18 Altri studi, invece, sono stati
condotti su situazioni in cui un lavoratore non possa distrarsi o sia impegnato in
17
Garima Sharma e Krishnan 2019
18
Chinchalikar et al. 2017

6
faccende che gli impediscano di selezionare autonomamente i brani musicali da
riprodurre (in particolar modo alla guida di un’autovettura).19

2.1 Shazam
Tra le varie tecnologie in grado di trasdurre un file musicale nei metadati che
lo descrivono quella che ha avuto maggior successo è Shazam.20 L’applicazione,
nata nel 2000, consta di un database ricchissimo, che permette al programma
di riconoscere correttamente moltissimi brani musicali sfruttando un ingegnoso
sistema di riconoscimento basato su una mappatura dell’audio detta fingerprint.21
Una delle particolarità di Shazam è che è in grado di riconoscere il brano
musicale anche in presenza di forti interferenze di rumore (fintanto che il segnale
che si desidera registrare sia udibile o non sia oggetto di marcheramento).
L’algoritmo, a grandi linee, consiste nell’acquisizione di un input audio, la
conversione di questo in svariate stringhe digitali (hashes token) e il confronto
di quest’ultima con un database di milioni di brani che hanno subito lo stesso
processo di riduzione, per poi essere collegati a un altro database contenente i
metatadi dell’audio trovato.22

2.1.1 Fingerprinting
Ogni file audio, che sia acquisito al momento o immagazzinato nel database, è sog-
getto all’operazione di fingerprint 23 , un processo attraverso il quale viene estratto
un hash 24 dalla traccia originale. Di fatto Shazam cerca di estrarre dai file i punti
più caratterizzanti, in quanto la fingerprint di ogni brano deve essere diversa dagli
altri. Il processo avviene attraverso l’analisi dello spettrogramma dell’audio dal
quale vengono selezionati i punti di inizio delle frequenze con maggiore energia
a determinati intervalli di tempo. Cosı̀ facendo si ottiene quella che viene det-
ta una costellation map, nome dovuto alla sua natura puntiforme, simile a una
costellazione. Si è scelto di lavorare sui punti di maggiore intensità dello spettro-
gramma perchè sono evidenti anche in presenza di rumore nel segnale e per la loro
sovrapponibilità lineare.25
19
Jakubec e Chmulik 2019
20
https://www.shazam.com
21
Wang e F 2003, Kalenzaga 2015
22
Krishna e Moukthika 2008
23
lett. impronta digitale
24
L’hash è una funzione non invertibile che mappa una stringa di lunghezza arbitraria in una
stringa di lunghezza predefinita.
25
I punti della costellation map sono distribuiti omogeneamente per tutto il brano, in maniera
che se dovessero essere confrontati con un piccolo estratto di esso l’algoritmo possa restituire
comunque un risultato soddisfacente.Wang e F 2003

7
(a) spettrogramma (b) costellation map

(c) generazione combinatoria dell’hash (d) dettagli hash

Figura 3: passaggi successivi di estrazione della fingerprint

Uno spettrogramma molto ricco come quello di figura 3a può essere ridotto a
un semplice gruppo di coordinate, si veda fig. 3b. Questa operazione porta non
pochi vantaggi: la mappa ottenuta rimane molto simile all’originale, ma rende di
gran lunga più riconoscibili i punti caratteristici del segnale di partenza, in quanto
priva di “aloni” e, come si sa, i tratti evidenti sono più semplici da riconoscere di
quelli meno marcati.26
Una volta ottenuta la nuova fingerprint si va a cercarne una corrispondente nel
database. Idealmente, si può pensare a “far scorrere” la costellation map su tutte
le fingerprint dell’archivio digitale, in quanto, probabilmente, l’input dura solo
una piccola parte dell’intero brano, ed è necessario trovare esattemente i punti
combacianti per avere un risultato. Un po’ come quanto si fanno scorrere due
fogli trasparenti uno sopra l’altro cercando di far combaciare dei punti disegnati
in mezzo.
In questa maniera la ricerca potrebbe durare molto a lungo, dal momento che
più sarà grande il database, più operazioni di confronto punto per punto saranno
necessarie. Ecco allora che entrano in gioco i cosiddetti anchor points (lett. punti
26
In presenza di rapidi cambi di frequenza la costellation map risulta un po’ spostata rispetto
al segnale di partenza.

8
di ancoraggio): sono punti posti a una certa distanza uno dall’altro e dividono la
costellation map in regioni. Nello specifico ogni punto di ancoraggio è accoppiato
in maniera sequenziale con i punti nella sua zona di competenza e di ogni coppia di
punti viene calcolata la distanza temporale ∆t (figure 3c e 3d). I nuovi hash con-
terranno le informazioni della distanza tra l’anchor point e ogni punto della regione
relativa di modo che le fingerprint di un intero pezzo musicale vengano spezzetta-
te in tanti hash quanti i collegamenti tra anchor point e punti della costellation
map, in ogni integrando nelle informazioni la distanza temporale dell’anchor point
dall’inizio del pezzo, perdendo l’informazione della durata totale del brano.27
Questa operazione complessa rende la ricerca più veloce e precisa, infatti non
avverranno più confronti per singoli punti, ma per coppie e, se ogni punto è descrit-
to da 10 bit, e ∆t è contenuto in altri 10 bit, le operazioni di confronto avverranno
di 30 in 30 bit, aumentando di 20 bit la precisione del confronto.28

2.1.2 Confronto tra input e DB


Dopo aver acquisito l’audio ed estratto il suo hash avviene un confronto ricorsivo
tra questo e gli elementi archiviati nel database. La ricerca avviene prima di tutto
confrontando gli intervalli di tempo immagazzinati degli hash, eliminando tutte
le tracce in cui i ∆t sono troppo grandi o piccoli rispetto al suono campionato.
Eliminati gli hash non corrsipondenti Shazam calcola in che percentuale risultano
ugluali i campioni rimanenti. L’hash con la percentuale più alta viene scelto come
risposta dalla consultazione dal database, e da questo viene estrapolato un ID che
si collega a un altro database in cui sono contenuti i metadati del brano cercato.29

2.2 Machine Learning


Nonostante il notevole successo riscontrato da Shazam, la rapida consultazione
di un database non è l’unico sistema per riconoscere un brano musicale; ci pone,
anzi, davanti al grosso limite di non poter riconoscere musica che non sia stata
precedentemente inserita nel database. Negli ultimi anni si è invece assistito al
crescente sviluppo dell’Artificial Intelligence (AI), soprattutto per quanto riguarda
il machine learning, cioè un modo nuovo di affrontare i problemi da parte dei
computer: attraverso la definizione di un modello e una quantità di dati da studiare
che forniscano “esperienza” all’elaboratore si possono ottenere dei risultati dal
momento che il computer ha “imparato” a riconoscere dei pattern associati a delle
definizioni.
27
Krishna e Moukthika 2008
28
Wang e F 2003
29
Kalenzaga 2015

9
Indipendentemente da qualsiasi obiettivo particolare, un sistema di ML richiede
funzionalità robuste e discriminatorie che aiutino una macchina ad apprendere in
modo accurato e rapido. L’intelligenza di una macchina è definita dalla quantità di
training che le viene impartito. Normalmente l’intero set di dati non viene inserito
nel computer durante la fase di apprendimento, ma ne viene utilizzata solo una
parte. La difficoltà sta nel riuscire a fornire alla macchina una sufficiente quantità
di dati per poterne estrapolare i pattern caratteristici e riconoscerle.30 Occorre
quindi individuare dei nuovi attributi tra i quali discriminare i brani, in quanto il
metodo di fingerprint non si adatta al nuovo scenario.

2.2.1 Feature extraction

È qui che entra in gioco la cosiddetta feature extraction che consente di estrapolare
dati dai segnali. La progettazione di caratteristiche descrittive per un’applicazione
specifica è la sfida principale nella costruzione di sistemi di riconoscimento dei
modelli. Una volta estratti i dati, è possibile utilizzare tecniche di apprendimento
automatico standard indipendenti dall’area di applicazione specifica. Per quanto
riguarda la musica sono stati sviluppati dei procedimenti di analisi in cui lo studio
può passare dalla rappresentazione del segnale nel dominio del tempo, a quella nel
dominio della frequenza. Qui di seguito sono riportate solo alcune tra le feature
extraction più usate31 :

1. zero crossing rate (ZCR), ossia quante volte il segnale cambia di segno in
un determinato intervallo di tempo (solitamente un secondo). Lo ZCR per
l’i-esimo istante di lunghezza N è definito dalla seguente equazione:
N
1 X
Z(i) = |sgn[xi (n)] − sgn[xi (n − 1)]|
2N n=1

dove sgn[xi (N )] è una funzione di studio del segno ed è uguale a 1 se xi (n) ≥ 0


o uguale a 0 se xi (n) < 0. Questo metodo è efficiente per individuare istanti
con o senza parlato. Lo ZCR sarà maggiore negli istanti senza parole rispetto
a quelli in cui ci siano degli interventi parlati (si veda fig. 4a). E ovviamente,
in una situazione ideale, in presenza di silenzio assoluto lo ZCR dovrebbe
corrispondere a 0.
30
Garima Sharma e Krishnan 2019, Nordby 2019
31
Per una trattazione più approfondita sul feature extraction si consiglia la lettura di
Tzanetakis e Cook 2002 e Giannakopoulos 2015

10
2. spectral centroid è la frequenza centrale attorno alla quale gravita la STFT32 ,
e può essere calcolato attraverso la seguente formula:
N
Mt [n] × n
P
n=1
Ct = N
P
Mt [n]
n=1

dove Mt [n] è l’ampiezza della DFT all’istante t e la frequenza fondamentale


n. Lo spectral centroid è una misura dello spettro e restituisce un valore
direttamente proporzionale alla media delle frequenze presenti nel segnale.
3. spectral rolloff è definito come la frequenza Rt al di sotto della quale è
concentrato l’85% delle ampiezze del segnale:
Rt
X N
X
Mt [n] = 0.85 × Mt [n]
n=1 n=1

4. Mel-Frequency Cepstral Coefficients: il cepstrum33 di un segnale è la trasfor-


mata di Fourier del logaritmo della trasformata di Fourier del segnale. A
volte viene chiamato lo spettro dello spettro. In formule:
X(T ) = F[ln(F[x(t)]) + i2mπ]
dove x è il segnale, X il cepstrum e F indica la trasformata di Fourier. Questa
funzione è uno dei metodi più importanti per estrarre una caratteristica di un
segnale audio se abbinata alla scala di Mel: una scala logaritmica basata sulla
percezione umana delle altezze. In pratica ogni coefficiente corrisponde alla
larghezza di banda delle frequenze che compongono il segnale derivate dalla
DFT. Spesso questa analisi del segnale viene usata per separare il timbro
dall’altezza34 (si veda fig. 4b).
5. chroma frquencies è un’interessante e versatile rappresentazione dell’intero
spettro in dodici righe, rappresentanti ognuna un semitono della scala musi-
cale occidentale, da questa rappresentazione del segnale si può desumere la
quantità di una certa altezza all’interno del segnale (si veda fig. 4c).
32
Nel paragrafo 1.3 si è detto come sia possibile rappresentare le frequenze presenti in un segnale
in un preciso istante di tempo. Nel caso della Short-time Fourier Transform si può individuare
la DFT per brevi istanti di tempo ravvicinati, descrivendo l’andamento delle frequenze nel corso
del segnale analizzato.
33
Il termine cepstrum eriva dal capovolgimento delle prime quattro lettere della parola
spectrum, è stato definito nel 1963 nel testo B. P. Bogert e Turkey 1963
34
Quest’azione è detta lifter, ossia il filtraggio del segnale nel dominio della quefrenza (unità di
misura del cepstrum), nell’analisi del parlato la parte alta della quefrenza corrisponde al segnale
di eccitazione (relativo a parole e altezza del suono), mentre nella parte bassa si individua la
funzione di trasferimento (ossia dove è individuabile il timbro).

11
(a) Forma d’onda con ZCR, Spectral centroid e Spectral rolloff

(b) MFCC (c) Chroma Frequencies

Figura 4: Feature diversi per lo stesso segnale audio

2.2.2 Riconoscimento
Una volta stabiliti i metodi di analisi dei segnali si può applicarli a un dataset
per ottenere dei dati che andranno a costituire l’elemento su cui verrà effettuato
il training del modello.
Per la classificazione si fa uso di quella che viene detta statistical patter reco-
gnition (SPR), ossia si valuta per ogni classe la funzione di densità di probabilità
(PDF dall’inglese probability density function) dei feature. In altre parole il mo-
dello cerca di definire uno standard per le varie categorie, per esempio, nella misica
hip-hop lo zero crossing rate è mediamente più elevato rispetto a quello di pezzi
di musica classica. Una volta che il dataset viene riorganizzato secondo la PDF si
applica quello che viene definito k-nearest neighbors (KNN), cioè il dataset viene
rielaborato in maniera da raggruppare gli elementi con feature simili. Ovviamente
ciò non tiene conto di possibili eccezioni e genera degli errori, intuitivamente, mag-
giore sarà la quantità di feature e la loro significatività, maggiore sarà la qualità
della categorizzazione.
È stato studiato che la capacità degli umani di classificazione corretta del genere
musicale è corretta nel 70% dei casi, mentre nelle macchine la stessa capacità si

12
aggira intorno al 60%, e in alcuni casi è maggiore, in base all’algoritmo e la quantità
di training usati.35 Da ciò se ne deducono due cose: la natura confusa dei confini
tra generi musicali e l’alta capacità delle macchine di riconoscere la musica per
categorie.

Una semplice implementazione


Nella seguente sezione si propone un’implementazione in Python di un programma
in grado di riconoscere estratti musicali per generi, basandosi su un algoritmo di
35
Tzanetakis e Cook 2002

13
machine learning come quello descritto nella sezione 2.2. L’intento del programma
è quello di dimostrare la semplicità con cui è possibile creare un modello basandosi
su poche righe di codice.
Python è il linguaggio di programmazione che negli ultimi anni ha visto più
supporto per quanto riguarda il campo dell’A.I. ed è diventato uno standard nel
settore. È semplice da leggere e da imparare, dando quindi la possibilità al pro-
grammatore di concentrarsi sul problema da risolvere e non sulla difficoltà del
linguaggio.36

3.1 Codice
Prima di tutto bisogna importare tutte le librerie che serviranno per la corret-
ta esecuzione del programma: librosa è la libreria che permette l’estrazione dei
feature dal dataset, pandas è una libreria contenente operazioni per l’analisi dei
dati, numpy è adatto a situazioni in cui serve effettuare velocemente dei calcoli
complessi, matplotlib consente di disegnare grafici, os è la libreria che comunica
col sistema operativo, csv serve per leggere e scrivere file in formato csv, sklearn e
keras riguardano il machine learning.
# importazione delle librerie necessarie
import librosa
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import os
import csv

from sklearn.model_selection import train_test_split


from sklearn.preprocessing import LabelEncoder, StandardScaler

import keras
from keras import models
from keras import layers

Come dataset è stato usato il materiale raccolto da G. Tzanetakis, scarica-


bile dal sito https://www.kaggle.com/andradaolteanu/gtzan-dataset-music-genre-
classification. È una raccolta di mille estratti di brani musicali da trenta secondi
36
Pandey 2018

14
l’uno divisi in dieci categorie da cento brani ciascuna (blues, classical country,
disco, hiphop, jazz, metal, pop, reggae, rock).37
Attraverso alcuni semplici passaggi si estrapolano i feature (quelli trattati nella
sezione 2.2.1) dai file audio e vengono salvati ordinatamente in un file CSV (Comma
Separated Values). Per dettagli sul processo di estrazione dei feature si rimanda
alla documentazione ufficiale della libreria librosa.38
# creazione del dataset

# intestazione
header = ’filename chroma spectral_centroid spectral_rolloff zcr’
for i in range(1, 21):
header += f’ mfcc{i}’
header +=’ label’
header = header.split()

# preparazione del file csv


file = open(’data.csv’, ’w’, newline=’’)

with file:
writer = csv.writer(file)
writer.writerow(header)

# i generi saranno 10:


genres = ’blues classical country disco hiphop jazz metal pop
reggae rock’.split()

# estrapolazione dei valori di zcr, rolloff, centroid, chroma,


mfcc per tutti gli elementi del dataset
for g in genres:
for filename in os.listdir(f"./genres/{g}"):
songname = f"./genres/{g}/{filename}"
y, sr = librosa.load(songname, mono=True, duration=30)

chroma = librosa.feature.chroma_stft(y=y, sr=sr)


spectral_centroid = librosa.feature.spectral_centroid(y=y,
sr=sr)
spectral_rolloff = librosa.feature.spectral_rolloff(y=y,
sr=sr)
37
Tzanetakis e Cook 2002
38
https://librosa.org/doc/latest/index.html

15
zcr = librosa.feature.zero_crossing_rate(y)
mfcc = librosa.feature.mfcc(y=y, sr=sr)

# creazione del buffer da scrivere nel file csv


da_scrivere = f"{filename} {np.mean(chroma)}
{np.mean(spectral_centroid)} {np.mean(spectral_rolloff)}
{np.mean(zcr)}"
for e in mfcc:
da_scrivere += f" {np.mean(e)}"
da_scrivere += f" {g}"
file = open("data.csv", ’a’, newline=’’)
with file:
writer = csv.writer(file)
writer.writerow(da_scrivere.split())

Una volta che è stato calcolato il file csv si può “ripulirlo” delle righe non utili
(l’intestazione) e creare un modello effettuando il training sui dati ottenuti. Il
dataset viene diviso in due parti: l’80% verrà usato per la fase di addestramento,
mentre il restante 20% servirà per proporre al modello dei test di casi “nuovi” da
analizzare.39
# apertura del file csv
data = pd.read_csv(’data.csv’)
data.head()

# Cancellazione dei dati inutili


data = data.drop([’filename’],axis=1)
data.head()

genre_list = data.iloc[:, -1]


encoder = LabelEncoder()
y = encoder.fit_transform(genre_list)

# normalizzazione dei dati


scaler = StandardScaler()
X = scaler.fit_transform(np.array(data.iloc[:, :-1], dtype =
float))

# divisione del dataset in ’train’ e ’test dataset’


39
In questo caso si parla di apprendimento automatico supervisionato, in quanto già sappiamo
i risultati che devono uscire dall’analisi di ogni campione musicale.

16
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size=0.2)

Infine si costruisce il modello, fornendogli i dati che abbiamo selezionato per la


fase di training può imparare a riconoscere i pattern presenti nei vari stili musicali
e associare un estratto audio a una categoria.
# creazione del modello
model = models.Sequential()
model.add(layers.Dense(256, activation=’relu’,
input_shape=(X_train.shape[1],)))

model.add(layers.Dense(128, activation=’relu’))

model.add(layers.Dense(64, activation=’relu’))

model.add(layers.Dense(10, activation=’softmax’))

model.compile(optimizer=’adam’,
loss=’sparse_categorical_crossentropy’,
metrics=[’accuracy’])

history = model.fit(X_train,
y_train,
epochs=20,
batch_size=128)

# calcolo della precisione nel riconoscimento


test_loss, test_acc = model.evaluate(X_test,y_test)
print(’test_acc: ’,test_acc)

# predizioni
predictions = model.predict(X_test)
np.argmax(predictions[0])

Riferimenti bibliografici
B. P. Bogert, M. J. R. Healy e J. W. Turkey (1963). The quefrency alanysis of
time series for echoes: cepstrum, pseudo-autocovariance, cross-cepstrum, and

17
saphe cracking. In: Proceedings of the Symposium on Time Series Analysis,
pp. 209–243.
Chinchalikar, Saket et al. (2017). Application of Genetic Algorithm for Audio
Search with Recommender System. In: International Journal of Engeneering
Research & Technology 5.1.
Cipriani, Alessandro e Maurizio Giri (2013). Musica elettronica e sound Design.
Roma: ConTempoNet.
Donati, Marcello (2018). Fisica e Matematica elle Note Musicali e la loro conver-
sione in segnali digitali. Bergamo: Sandit.
Downey, Allen B. (2014). Think DPS, Digital signal processing in Python. Need-
ham (MA): Green Tea Press.
Fayek, Haytham M. (2016). Speech Processing for Machine Learning: Filter banks,
Mel-Frequency Cepstral Coefficients (MFCCs) and What’s In-Between. url:
https : / / haythamfayek . com / 2016 / 04 / 21 / speech - processing - for -
machine-learning.html.
Garima Sharma, Kartikeyan Umapathy e Sridhar Krishnan (2019). Trends in
audio signal feature extraction methods. In: Applied Acoustics 158. doi: 10.
1016 / j . apacoust . 2019 . 107020. url: http : / / doi . org / 10 . 1016 / j .
apacoust.2019.107020.
Giannakopoulos, Theodoros (2015). pyAudioAnalysis: An Open-Source Python
Library for Audio Signal Analysis. In: PloS one 10.12.
— (2020). Audio Handling Basics: Process Audio Files In Command-Line or Py-
thon. url: https://hackernoon.com/audio- handling- basics- how- to-
process-audio-files-using-python-cli-jo283u3y.
Jakubec, Maros e Michal Chmulik (2019). Automatic music genre recognition
for in-car infotainment. In: 13th International Scientific Conference on Su-
stainable, Modern and Safe Transport (TRANSCOM), pp. 1364–1371. doi:
10.1016/j.trpro.2019.07.189.
Kalenzaga, Christophe (2015). How does Shazam work? url: http://coding-
geek.com/how-shazam-works/.
Krishna, Mandla Vamshi e Dasika Moukthika (2008). Study on framework of au-
dio fingerprinting and Shazam’s working algorithm. In: International Journal
of Advanced Research (IJAR) 12, pp. 690–702. doi: 10.21474/IJAR01/8189.
url: http://dx.doi.org/10.21474/IJAR01/8189.
Lombardo, Vincenzo e Andrea Valle (2008). Audio e multimedia. Milano: Apogeo.
Nordby, Jon (mag. 2019). Environmental Sound Classification on Microcontrol-
lers using Convolutional Neural Networks. Tesi di laurea mag. Norwegian
University of Life Sciences. url: http://hdl.handle.net/11250/2611624.

18
Pandey, Parul (2018). Music Genre Classification with Python, A Guide to ana-
lysing Audio/Music signals in Python. url: https://towardsdatascience.
com/music-genre-classification-with-python-c714d032f0d8.
Righini, Pietro (2009). L’acustica per il musicista: Fondamenti fisici della musica.
Milano: Ricordi.
Tzanetakis, G. e P. Cook (2002). Musical genre classification of audio signals.
In: IEEE Transactions on Speech and Audio Processing 10.5, pp. 293–302.
Wang, Avery Li-chun e Th Floor Block F (2003). An industrial-strength audio
search algorithm. In: Proceedings of the 4 th International Conference on
Music Information Retrieval.
Wikipedia (n.d.). Trasformata discreta di Fourier. url: https://it.wikipedia.
org/wiki/Trasformata_discreta_di_Fourier.

19