Nous avons résumé la classification des genres musicaux à l'aide du Microsoft Cognitive Toolkit (CNTK).
La première partie se prépare à la classification des genres musicaux.
Je vais les présenter dans l'ordre suivant.
Collections de genres GTZAN
・ Bleus ・ Classique · Pays · Disco · Hip hop · Le jazz · Métal · Reggae · Roche
Contient 10 genres musicaux différents. Chacun a 100 données pendant 30 secondes.
Téléchargez et décompressez genres.tar.gz à partir du lien ci-dessus.
La structure des répertoires cette fois est la suivante.
MGCC |―gtzan |―... mgcc_gtzan.py
La voix est représentée comme des données de forme d'onde, mais dans la reconnaissance vocale, elle est généralement traitée comme des données de fréquence en utilisant la transformée de Fourier, plutôt que d'être traitée comme des données de forme d'onde telles quelles.
Cette fois, créez une image de melspectogramme logarithmique à partir des données de forme d'onde vocale en suivant la procédure suivante.
Nous avons utilisé la fonction train_test_split de scikit-learn pour le diviser en données d'entraînement et de validation. L'argument test_size était de 0,2.
・ Processeur Intel (R) Core (TM) i7-6700K 4,00 GHz
・ Windows 10 Professionnel 1909 ・ Python 3.6.6 ・ Matplotlib 3.1.1 ・ Numpy 1.19.2 ・ Librosa 0.8.0 ・ Scikit-learn 0.23.2
Le programme implémenté est publié sur GitHub.
mgcc_genre.py
Il complète le contenu essentiel du programme à exécuter.
Comme indiqué dans le coin inférieur gauche de la figure ci-dessous, l'audio est obtenu sous forme de données de forme d'onde avec le temps sur l'axe horizontal et l'amplitude sur l'axe vertical. D'autre part, les données de forme d'onde sont composées de formes d'onde avec plusieurs fréquences, comme indiqué dans le coin supérieur droit. Par conséquent, en utilisant la Transformée de Fourier Rapide, vous pouvez vérifier la fréquence contenue dans la forme d'onde comme indiqué en bas à droite.
La transformation de Fourier à court terme divise les données de forme d'onde en sections et effectue une transformation de Fourier rapide. Cela permet de voir le changement temporel de la fréquence avec chaque section comme une trame.
Au moment de l'exécution, comme le montre la figure ci-dessous, le chevauchement est autorisé, l'intervalle est coupé, la fonction de fenêtre est appliquée, puis la transformée de Fourier est effectuée.
J'ai utilisé une fenêtre bourdonnante pour la fonction de fenêtre. La fenêtre de bourdonnement est exprimée par la formule suivante.
W_{hamming} = 0.54 - 0.46 \cos \left( \frac{2n \pi}{N-1} \right)
Les résultats obtenus par la transformée de Fourier à court terme peuvent être visualisés comme une image avec le temps sur l'axe horizontal et la fréquence sur l'axe vertical, comme le montre la figure ci-dessous. Ces images sont appelées spectrogrammes, où chaque pixel représente l'intensité du spectre d'amplitude, qui est ici convertie en dB.
Plus la fréquence de l'audition humaine est élevée, plus la résolution est faible. L'échelle de Mel [2] est une échelle qui reflète cela. Il existe plusieurs types de formules de conversion à l'échelle de Mel, mais la librosa utilise par défaut la formule de Slaney.
Convertissez le spectrogramme en fréquence mel en calculant le produit interne du filtre suivant et le spectre de puissance de la transformée de Fourier à court terme.
L'exécution du programme crée et enregistre des images de spectogramme logarithmique des données d'apprentissage et de validation.
La figure ci-dessous est une image de melspectogramme logarithmique de chaque genre. L'axe horizontal est le temps et l'axe vertical est la fréquence mel, et chaque pixel représente la force logarithmique.
Maintenant que vous êtes prêt à vous entraîner, la partie 2 fera une classification des genres musicaux.
Recommended Posts