Beat Tracking mit tiefen neuronalen Netzen

Convolutional Neural Networks Beat Tracking Time Series Analysis Temporal CNN
An audio mixer.

Dies ist der letzte Beitrag in der dreiteiligen Reihe, die sich mit maschinellen Lernansätzen für Zeitreihen- und Sequenzmodellierung befasst. Im ersten Beitrag wurden die grundlegenden Prinzipien und Techniken für serielle Sequenzen in künstlichen neuronalen Netzen gezeigt. Der zweite Beitrag stellte einen neueren Faltungsansatz für Zeitreihen vor, das so genannte Temporal Convolutional Network (TCN), das bei Sequenz-zu-Sequenz-Aufgaben große Leistungsfähigkeit zeigt (Bai, 2018).


In diesem Beitrag werde ich jedoch über eine Anwendung aus der realen Welt sprechen, die ein maschinelles Lernmodell für die Zeitreihenanalyse einsetzt. Zu diesem Zweck werde ich einen Beat-Tracking-Algorithmus vorstellen, bei dem es sich um eine rechnerische Methode zur Extraktion der Beat-Positionen aus Audiosignalen handelt. Das vorgestellte Beat-Tracking-System (Davies, 2019) basiert auf der TCN-Architektur, die die sequentielle Struktur der Audioeingabe erfasst.

Motivation

Der Rhythmus ist für die Musik unverzichtbar und bildet ihre zentrale, hierarchische Organisationsstruktur. Er stellt eine der grundlegenden Dimensionen in der Wahrnehmung von Musik dar und ordnet die Bewegung musikalischer Muster in der Zeit. Daher ist die Rhythmusanalyse ein wesentlicher Bestandteil des Musikverständnisses und stellt eine angeborene kognitive Fähigkeit des Menschen auch ohne musikalische Ausbildung dar. Insbesondere die Interpretation des Metrums ist ein grundlegender Aspekt der musikalischen Intelligenz, und daher ist das Erkennen des Taktes, der als die hervorstechendste Schicht des Rhythmus definiert ist, ein wichtiger erster Schritt in der Computer-Emulation des menschlichen Musikverständnisses.

Methode

Aus einer Gesamtperspektive umfasst das Beat-Tracking-System drei Hauptstufen:

In der ersten Stufe wird das ursprüngliche Audiosignal vorverarbeitet. Dazu gehören verschiedene Methoden wie Normalisierung, Transformation und Feature Extraction. Die zweite Stufe stellt das eigentliche maschinelle Lernmodell dar, das auf der Grundlage von Trainingsdaten optimiert wird. Das erlernte Modell nimmt das vorverarbeitete Audiosignal als Input und gibt die Taktaktivierung aus, die als ein hochrangiges Merkmal des Musikstücks angesehen werden kann. In der Phase der zeitlichen Dekodierung schließlich wird ein dynamisches Bayes'sches Netzwerk (DBN) verwendet, um Takte unterschiedlicher Länge zu modellieren und die vorhergesagten Taktpositionen auf die global beste Lösung auszurichten.


Um den Signalfluss des Beat-Tracking-Systems besser zu verstehen, sind die Eingangssignale zu jeder Stufe in der folgenden Abbildung visualisiert. Zu diesem Zweck wird die erste Strophe des Stücks Yesterday von den Beatles als Beispiel verwendet.

Preprocessing

Der für das Training verwendete Datensatz besteht aus vier öffentlich zugänglichen Datensätzen, die 2.124 Audiodateien mit 136.897 Beat-Annotationen enthalten, und hat eine Länge von etwa 20 Stunden. Bei den Audiodateien handelt es sich um rohe pulscodemodulierte (PCM) Audiosignale, die als WAV-Dateien gespeichert sind. Aus Gründen der Konsistenz und auch zur Verringerung der Berechnungskomplexität wird jedes Audiosignal mit einer Abtastrate $$f_s = 44,1 \,\Text{kHz}$$ mit einer Auflösung von $$16\Text{-bit}$$ resampled und durch Mittelwertbildung beider Stereokanäle in ein monaurales Signal umgewandelt.

Das diskrete Audiosignal $$x(n)$$ wird in überlappende Frames von $$N = 2048$$ Samples segmentiert, die einer Länge von $$46,4 \,\Text{ms}$$ entsprechen. Die Frames werden alle $$10 \,\text{ms}$$ abgetastet, was zu einer Framerate $$f_r = 100 \,\text{fps}$$ führt. Ein Standard-Hamming-Fenster $$w(n)$$ der gleichen Länge wird auf die Frames angewendet, bevor die Kurzzeit-Fourier-Transformation (STFT) zur Berechnung des komplexen Spektrogramms 


$$X(t,\omega) = \sum_{n = 1}^{N} w(n) \, x(n + t\,h) \, e^{-2 \pi j \omega /N}$$


verwendet wird, wobei $$t$$ als Frame-Index, $$\omega$$ als Frequenzbin-Index und $$h=441$$ als die Hop-Größe , d.h. die Zeitverschiebung der Samples zwischen benachbarten Frames, bezeichnet wird. Das komplexe Spektrogramm $$X(t,\omega)$$ wird durch Weglassen des Phasenanteils des Spektrogramms in das Leistungsspektrogramm $$|X(t,\omega)|^2$$ umgewandelt. Das Leistungsspektrogramm wird mit einer Bank von überlappenden Dreiecksfiltern $$F(t,\omega)$$ mit 12 Bändern pro Oktave gefiltert, die einen Frequenzbereich von $$30$$ bis $$17\,000 \, \text{Hz}$$ abdecken. Um der menschlichen Wahrnehmung der Lautheit besser zu entsprechen, wird eine logarithmische Darstellung gewählt,


$$S(t,\omega) = \log \left( |X(t,\omega)|^2 \cdot F(t,\omega)^T + 1 \right).$$

Feature Learning

Die Feature-Lernphase selbst besteht aus zwei Hauptblöcken. Während das gefilterte logarithmische Leistungsspektrum direkt an das TCN weitergeleitet werden könnte, versucht das Netzwerk zunächst, eine kompakte Zwischendarstellung zu lernen, indem es einen vorhergehenden Faltungsblock implementiert. Um die sequentielle Struktur zu erfassen, wandelt ein TCN die Zwischendarstellung $$\mathbf z_{1:T}$$ in eine Sequenz von Taktaktivierungen $$a_{1:T}$$ um.

Der Faltungsblock besteht aus einer Reihe von Schichten mit Faltung und Max-Pooling, und er reduziert die Dimensionalität sowohl in der Zeit als auch in der Häufigkeit. Alle Faltungsschichten enthalten $$16$$ Filter, mit Kernelgrößen von $$3\ mal 3$$ für die ersten beiden und $$1\ mal 8$$ für die letzte Schicht.

Die Filter bewegen sich mit Schritt 1 und es wird kein Null-Padding verwendet. Die Zwischenschichten des Max-Poolings wenden das Pooling nur in der Frequenzrichtung über $$3$$-Frequenzbins an. Es wird eine Dropout-Rate (Tompson, 2015) von $$0,1$$ verwendet und die Aktivierungsfunktion entspricht einer exponentiellen linearen Einheit (ELU) (Clevert, 2015), definiert als


$${ f(x)={\begin{cases}e^{x}-1&{\text{for }}x\leq 0\\x&{\text{for }}x>0.\end{cases}}}.$$


Der Ausgang des Faltungsblocks ist ein 16-dimensionaler Feature-Vektor $$\mathbf z$$ und dient als Eingang zum TCN. Die Architektur des TCN besteht aus 11 gestapelten Residual Blocks, wie in der folgenden Abbildung dargestellt:

Jeder residuale Block enthält $$16$$ Kanäle mit Filtern der Größe $$5$$, und die Dilatation $$d=2^i$$ ist geometrisch von $$2^0$$ bis zu $$2^{10}$$ aufgeteilt.


Somit ist das resultierende rezeptive Feld etwa $$81,5\,\Text{s}$$ lang. Auch hier wird ein räumlicher Dropout mit einer Rate von $$0.1$$ und der ELU-Aktivierungsfunktion verwendet. Die Ausgangsschicht des TCN ist eine vollständig verbundene lineare Schicht mit zwei Einheiten, die die beiden Klassen "Beat" und "No Beat" repräsentieren. Um die Ausgabe zu normalisieren und die rechnerische Stabilität zu gewährleisten, wird die Log-Softmax-Funktion


$$\log \text{softmax}(\hat{y}_i) = \log\left(\frac{\exp{(\hat{y}_i)}}{\sum_j \exp(\hat{y}_j)}\right)$$


verwendet, die der letzten Schicht des neuronalen Netzes hinzugefügt wird. Daher stellt die Ausgabe $$\hat{\mathbf y}_t = (\hat{y}_{1_t}, \hat{y}_{2_t})^T$$ die Log-Wahrscheinlichkeiten für die beiden Klassen zum Zeitpunkt $$t$$ dar. Das Netzwerk kann somit als binärer Klassifikator mit der Kreuzentropie-Verlustfunktion trainiert werden 


$$L(\mathbf y, \hat{\mathbf y}) = - w_0 \,y_0 \log(\hat{y}_0)-w_1\,y_1 \log(\hat{y}_1).$$


Die Klasse "Beat" wird mit dem Faktor $$w_1=70$$ gewichtet, um die Unausgewogenheit der beiden Klassen auszugleichen. Schließlich kann die Beat-Aktivierung $$a_t$$ berechnet werden durch


$$a_t = \exp \left({\hat{y}_{1_t}} \right), \quad \forall \, t= 1,\dots,T$$


 was die Wahrscheinlichkeit eines Schlages im Rahmen $$t$$ darstellt.

Post-processing

Im Allgemeinen baut die metrische Struktur eines Musikstücks auf einer Hierarchie von annähernd regelmäßigen Pulsen auf. Um diese sequentielle Struktur auszunutzen, wird ein probabilistisches dynamisches Modell verwendet, das zu einer robusteren Schätzung der Taktzeitpunkte führt und unter rhythmischen Schwankungen, wie Ritardando und Accelarando oder metrischen Modulationen, korrekt arbeitet.


Zu diesem Zweck wird ein DBN verwendet, das gemeinsam die Periode und Phase des Schlags ableitet. Genauer gesagt handelt es sich bei der Nachbearbeitungsphase um ein Hidden-Markov-Modell (HMM), bei dem aus der Abfolge der beobachteten Taktaktivierungen auf eine Sequenz von verborgenen Variablen geschlossen wird, die die Taktstruktur eines Hörstücks repräsentieren. Der probabilistische Zustandsraum besteht aus zwei verborgenen Variablen, nämlich der Taktperiode, d.h. dem Kehrwert des Tempos, und der Position innerhalb der Taktperiode (Krebs, 2015). 


Bei einer Sequenz von Taktaktivierungen $$a_{1:T}$$ ist das Ziel des verborgenen Markov-Modells, die wahrscheinlichste verborgene Zustandsfolge $$\mathbf s_{1:T}^*$$ zu identifizieren. Für jeden Zeitrahmen $$t$$ wird der verborgene Zustand als $$\mathbf s_t = (\phi_t, \tau_t)^T$$ definiert, wobei $$\phi_t \in \{1, 2, \dots, \tau_t\}$$ die Position innerhalb einer Taktperiode bezeichnet, und $$\tau_t \in \{ \tau_{\text{min}}, \dots, \tau_{\text{\max}}\}$$ bezieht sich auf die Länge der aktuellen Taktperiode, gemessen in Frames. Aufgrund des Prinzips, genau einen Zustand pro Frame zu verwenden, um die Position innerhalb der Taktperiode anzugeben, entspricht die Anzahl der Positionszustände genau der Länge der aktuellen Taktperiode $$\tau_t$$. Normalerweise wird das Tempo $$\Theta$$ eines Musikstücks in Schlägen pro Minute (BPM) gemessen und muss daher in die in Frames gemessene Taktperiode umgerechnet werden, und zwar durch


$$\tau(\Theta) = \left\lfloor \frac{\Theta}{60}\, f_r \right\rfloor$$


wobei die Framefrequenz $$f_r$$ definiert ist als $$100$$ Bilder pro Sekunde. Die Grenzen der Taktperiode können leicht als $$\tau_\text{min} = \tau(\Theta_\text{max})$$ bzw. $$\tau_\text{max} =\tau(\Theta_\text{min})$$ ermittelt werden. Das Arbeiten mit einem Tempobereich von 55 bis 215 BPM führt zu einer Taktperiode von $$\tau_\text{min} = 27$$ bis $$\tau_\text{max} = 107$$ Frames und konstruiert so einen Zustandsraum mit insgesamt 5427 Zuständen. Zur Veranschaulichung ist in der folgenden Abbildung ein Beispiel mit einem deutlich kleineren Zustandsraum dargestellt.

Mit der oben erwähnten Zustandsraumdiskretisierung wird die wahrscheinlichste verborgene Zustandsfolge $$\mathbf s_{1:T}^* = \links((\phi_t^*, \tau_t^*)^T\rechts)_{1:T}$$, gegeben eine Folge von Taktaktivierungen $$a_{1:T}$$, berechnet durch


$$\mathbf s_{1:T}^* = \underset{\mathbf s_{1:T}}{\mathrm{argmax}} P(\mathbf s_{1:T}\,|\, a_{1:T})$$


mit


$$P(\mathbf s_{1:T}\,|\, a_{1:T}) \propto P(\mathbf s_1) \prod_{t=2}^T P(\mathbf s_t\,|\,\mathbf s_{t-1})\, P( a_t\,|\,\mathbf s_{t}),$$ 


wobei $$P(\mathbf s_1)$$ die Anfangszustandsverteilung ist, der Begriff $$P(\mathbf s_t\,|\,\mathbf s_{t-1})$$ entspricht dem Übergangsmodell und $$P(a_t\,|\,\mathbf s_{t})$$ bezieht sich auf das Beobachtungsmodell. Die wahrscheinlichste verborgene Zustandsfolge $$\mathbf s_{1:T}^*$$ kann mit dem bekannten Viterbi-Algorithmus (Viterbi, 1967) gelöst werden. Schließlich kann die Menge der Taktzeitpunkte $$\mathcal B$$ aus der Sequenz der Position innerhalb der Taktperiode extrahiert werden als


$$\mathcal B = \{ t: \phi_t^*=1\}.$$


Um aus einem Audiosignal auf die verborgenen Variablen schließen zu können, müssen die drei Entitäten, die Anfangsverteilung, das Übergangsmodell und das Beobachtungsmodell, spezifiziert werden. Das Übergangsmodell beschreibt die Übergänge zwischen den verborgenen Variablen. Das Beobachtungsmodell nimmt die Taktaktivierungen aus dem neuronalen Netz und die Anfangsverteilung kodiert das Vorwissen über die verborgenen Variablen. 


Anfangsverteilung

Mit der Anfangsverteilung $$P(\mathbf s_1)$$ kann jegliches Vorwissen über Tempoverteilungen in das Modell eingearbeitet werden. Wenn zum Beispiel die zu verfolgende Musik aus einem Genre stammt, kann eine bestimmte Tempoverteilung verwendet werden. Um sie genreunabhängig zu machen, wird eine gleichmäßige Verteilung verwendet.


Transition Model

Das Übergangsmodell $$P(\mathbf s_t\,|\,\mathbf s_{t-1})$$ kann weiter zerlegt werden in eine Verteilung für jede der beiden verborgenen Variablen $$\phi_t$$ und $$\tau_t$$, das heißt


$$P(\mathbf s_t\,|\,\mathbf s_{t-1}) = P(\mathbf \phi_t\,|\,\mathbf \phi_{t-1}, \tau_{t-1}) \, P(\tau_t \, |\, \tau_{t-1}),$$


wobei der erste Faktor definiert ist als

 

$$P(\mathbf \phi_t\,|\,\mathbf \phi_{t-1}, \tau_{t-1}) = \mathbf 1_A$$


mit der Indikatorfunktion $$\mathbf 1_A$$, die gleich eins ist, wenn $$\phi_t = (\phi_{t-1}+\tau_{t-1}-1)\mod M+1$$. Der Modulo-Operator macht die Taktposition zyklisch. Wenn $$\phi_t = \tau_t$$, wird der zweite Faktor durch eine Laplace-Verteilung definiert


$$P(\tau_t \, |\, \tau_{t-1}) = \frac{\lambda}{2 \, \tau_{t-1}}\exp \left( -\lambda \left| \frac{\tau_{t}}{\tau_{t-1}} -1 \right| \right),$$


sonst ist es 


$$P(\tau_t \, |\, \tau_{t-1}) = \begin{cases} 1, &\tau_t = \tau_{t-1}\\ 0, &\text{else.} \end{cases}$$


Der Parameter $$\lambda \in \mathbb Z_{\geq0}$$ bestimmt die Steilheit der Verteilung und modelliert die Wahrscheinlichkeit für einen Tempowechsel. Ein Wert von $$\lambda = 0$$ bedeutet, dass Übergänge zu allen Tempi gleich wahrscheinlich sind. In der Praxis ist für Musik mit ungefähr konstantem Tempo ein Wert von $$\lambda \in [1, 300]$$ angemessen. Die Wahrscheinlichkeit von Tempowechseln wird heuristisch auf $$p_\omega = 0,002$$ gesetzt. Zur Einstellung dieses Parameters könnte übergeordnetes oder domänenspezifisches Wissen verwendet werden. Zum Beispiel ist in der Rock- oder Popmusik der Takt in der Regel recht gleichmäßig, so dass ein kleiner Wert für $$p_\omega$$ angemessen wäre, während für klassische Musik, insbesondere für Stile mit vielen Tempowechseln, ein höherer Wert optimaler wäre.


Beobachtungsmodell

Die vom neuronalen Netz erzeugte Taktaktivierungsfunktion ist auf den Bereich $$[0, 1]$$ begrenzt und zeigt hohe Werte an den Taktpositionen und niedrige Werte an den Nicht-Taktpositionen. Daher wird die Aktivierungsfunktion direkt als zustandsbedingte Beobachtungsverteilungen verwendet (Degara, 2012). Die Beobachtungswahrscheinlichkeit ist definiert als


$$P(a_t\,|\,\phi_t) = \begin{cases} a_t, &1 \leq \phi_t\leq \frac{\lambda}{\Lambda}\\ \frac{1-a_t}{\lambda-1}, &\text{else}. \end{cases}$$

Evaluation

Um die Leistung des vorgeschlagenen Beat-Tracking-Systems zu evaluieren und mit verschiedenen Methoden zu vergleichen, werden Standardauswertungsmethoden verwendet, die in der Music Information Retrieval (MIR)-Community üblich sind. In diesem Beitrag werde ich mich jedoch nur auf die Standardreferenz für die Beat-Tracking-Auswertung beziehen (Davies, 2009).


Mit der Entwicklung des Music Information Retrieval Evaluation eXchange (MIREX) wurde die Beat-Tracking-Aufgabe als jährlicher Wettbewerb für Forscher auf diesem Gebiet in Angriff genommen. Sehen Sie sich die neuesten Ergebnisse von 2019 an. Den Code des vorgeschlagenen Beat-Tracking-Systems finden Sie hier.