[PYTHON] Reconnaissance vocale: Classification des genres - Partie 1 - Collections de genres du GTZAN

Cible

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.

  1. Télécharger le jeu de données GTZAN
  2. Création d'une image de spectrogramme mel logarithmique
  3. Préparation des données de formation et des données de vérification

introduction

Télécharger le jeu de données GTZAN

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.

GTZAN Genre Collections

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

Création d'images de spectrogramme de mel logarithmique

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.

  1. Génération de spectrogramme par transformée de Fourier à court terme
  2. Conversion en spectrogramme Mel par banque de filtres Mel Scale
  3. Appliquez le logarithme, puis divisez en une taille d'image de 128 x 128

Préparation des données d'entraînement et des données de vérification

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.

la mise en oeuvre

Environnement d'exécution

Matériel

・ Processeur Intel (R) Core (TM) i7-6700K 4,00 GHz

Logiciel

・ 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

Programme à exécuter

Le programme implémenté est publié sur GitHub.

mgcc_genre.py


Commentaire

Il complète le contenu essentiel du programme à exécuter.

Transformée de Fourier

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.

time_fft_frequency.png

Transformée de Fourier de courte durée

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.

stft.png

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.

spectrogram.png

Banque de filtres à l'échelle Mel

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.

mel_filterbank.png

résultat

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.

log-mel_spectrogram.png

Maintenant que vous êtes prêt à vous entraîner, la partie 2 fera une classification des genres musicaux.

référence

GTZAN Genre Collections

  1. Bob L. Sturm. "The GTZAN dataset: Its contents, its faults, their effects on evaluation, and its futre use", arXiv preprint arXiv:1306.1461 (2013).
  2. Stanley Smith Stevens, John Volkman, and Edwin Newman. "A scale for the measurement of the psychological magnitude pitch", Journal of the Acoustical Society of America, vol. 8, no. 3, pp. 185-190(1937).
  3. Koichi Shinoda. «Reconnaissance vocale de la série professionnelle Machine Learning», Kodansha, 2017.

Recommended Posts

Reconnaissance vocale: Classification des genres - Partie 1 - Collections de genres du GTZAN
Reconnaissance vocale: Classification des genres Part2-Classification des genres musicaux CNN
Reconnaissance vocale: Prédiction phonémique Partie 2 - Classification temporelle connectionniste RNN
Reconnaissance vocale: Prédiction de phonèmes Part1 - Ensemble de données de la parole ATR
Reconnaissance vocale avec Python