Wir haben die Klassifizierung des Musikgenres mit dem Microsoft Cognitive Toolkit (CNTK) zusammengefasst.
Teil 1 bereitet die Klassifizierung des Musikgenres vor.
Ich werde sie in der folgenden Reihenfolge vorstellen.
GTZAN Genre Sammlungen
・ Blues ・ Klassik ・ Land · Disko · HipHop ・ Jazz · Metall ・ Reggae · Felsen
Enthält 10 verschiedene Musikgenres. Jeder hat 100 Daten für 30 Sekunden.
Laden Sie genres.tar.gz über den obigen Link herunter und entpacken Sie es.
Die Verzeichnisstruktur ist diesmal wie folgt.
MGCC |―gtzan |―... mgcc_gtzan.py
Sprache wird als Wellenformdaten dargestellt, aber bei der Spracherkennung werden sie im Allgemeinen als Frequenzdaten unter Verwendung der Fourier-Transformation behandelt, anstatt wie sie sind als Wellenformdaten behandelt zu werden.
Erstellen Sie dieses Mal ein logarithmisches Melspektogrammbild aus den Sprachwellenformdaten wie folgt.
Wir haben die train_test_split-Funktion von scikit-learn verwendet, um sie in Trainings- und Validierungsdaten aufzuteilen. Das Argument test_size war 0.2.
・ CPU Intel (R) Core (TM) i7-6700K 4,00 GHz
・ Windows 10 Pro 1909 ・ Python 3.6.6 ・ Matplotlib 3.1.1 ・ Numpy 1.19.2 ・ Librosa 0.8.0 ・ Scikit-Learn 0.23.2
Das implementierte Programm wird auf [GitHub] veröffentlicht (https://github.com/sho-watari/SpeechRecognition/tree/master/MGCC).
mgcc_genre.py
Es ergänzt die wesentlichen Inhalte des auszuführenden Programms.
Wie unten links in der Abbildung unten gezeigt, wird Audio als Wellenformdaten mit der Zeit auf der horizontalen Achse und der Amplitude auf der vertikalen Achse erhalten. Andererseits bestehen Wellenformdaten aus Wellenformen mit mehreren Frequenzen, wie oben rechts gezeigt. Daher können Sie mithilfe der schnellen Fourier-Transformation die in der Wellenform enthaltene Frequenz überprüfen, wie unten rechts gezeigt.
Die Kurzzeit-Fourier-Transformation unterteilt die Wellenformdaten in Abschnitte und führt eine schnelle Fourier-Transformation durch. Dies ermöglicht es, die zeitliche Änderung der Frequenz mit jedem Abschnitt als einen Rahmen zu sehen.
Zum Zeitpunkt der Ausführung ist, wie in der folgenden Abbildung gezeigt, eine Überlappung zulässig, der Abschnitt wird ausgeschnitten, die Fensterfunktion wird angewendet und dann wird die Fourier-Transformation durchgeführt.
Ich habe ein summendes Fenster für die Fensterfunktion verwendet. Das Summenfenster wird durch die folgende Formel ausgedrückt.
W_{hamming} = 0.54 - 0.46 \cos \left( \frac{2n \pi}{N-1} \right)
Wie in der folgenden Abbildung gezeigt, können die durch die Kurzzeit-Fourier-Transformation erhaltenen Ergebnisse als Bild mit der Zeit auf der horizontalen Achse und der Frequenz auf der vertikalen Achse betrachtet werden. Ein solches Bild wird als Spektrogramm bezeichnet, wobei jedes Pixel die Intensität des Amplitudenspektrums darstellt, das hier in dB umgewandelt wird.
Je höher die Frequenz des menschlichen Gehörs ist, desto niedriger ist die Auflösung. Die Mel-Skala [2] ist eine Skala, die dies widerspiegelt. Es gibt verschiedene Arten von Mel-Skalenumwandlungsformeln, aber librosa verwendet standardmäßig die Slaney-Formel.
Wandeln Sie das Spektrogramm in Mel-Frequenz um, indem Sie das innere Produkt des folgenden Filters und das Leistungsspektrum der Kurzzeit-Fourier-Transformation berechnen.
Durch Ausführen des Programms werden logarithmische Melspektogrammbilder von Trainings- und Validierungsdaten erstellt und gespeichert.
Die folgende Abbildung zeigt ein logarithmisches Melspektogramm jedes Genres. Die horizontale Achse ist die Zeit und die vertikale Achse ist die Mel-Frequenz, und jedes Pixel repräsentiert die logarithmische Stärke.
Jetzt, da Sie bereit sind zu trainieren, wird Teil 2 eine Klassifizierung des Musikgenres durchführen.
Recommended Posts