Intelligence artificielle

Construire un capteur d'émotion vocale avec un apprentissage en profondeur

Construire un capteur d'émotion vocale avec un apprentissage en profondeur


Des machines à enseigner pour mieux comprendre la communication humaine

L'expression humaine est complexe et à multiples facettes. Par exemple, un locuteur communique non seulement à travers des mots, mais également à travers la cadence, l'intonation, les expressions faciales et le langage corporel. C’est la raison pour laquelle nous préférons organiser des réunions de travail en personne plutôt que par téléconférence, et pourquoi les téléconférences sont préférées aux courriels ou aux SMS. Plus nous sommes proches, plus la bande passante de communication existe.

Les logiciels de reconnaissance vocale ont beaucoup évolué ces dernières années. Cette technologie fait maintenant un excellent travail en reconnaissant les sons phonétiques et en les assemblant pour reproduire les mots et les phrases parlés. Cependant, traduire simplement la parole en texte ne résume pas complètement le message du locuteur. Mis à part les expressions faciales et le langage corporel, le texte est très limité dans sa capacité à capturer une intention émotionnelle par rapport à l'audio.

Au départ, j’ai choisi de construire un capteur d’émotions vocales car c’était un projet amusant et intéressant sur lequel travailler. En réfléchissant davantage au problème, j’ai réalisé que la détection des émotions via l’audio avait des applications vraiment intéressantes. Imaginez si votre appareil smart-home pouvait jouer des chansons correspondant à vos émotions, par exemple en jouant des chansons édifiantes quand vous êtes triste. Les départements du service clientèle peuvent utiliser la détection des émotions pour former les employés ou déterminer si les clients sont plus satisfaits au cours d'un appel de service.

Les ensembles de données que j'ai utilisés pour construire mon classificateur d'émotions étaient RAVDESS, TESS et SAVEE, qui sont tous disponibles gratuitement au public (SAVEE nécessite un enregistrement très simple). Ces jeux de données contiennent des fichiers audio dans sept catégories communes: neutre, heureux, triste, en colère, craintif, dégoûté et surpris. Ensemble, j'ai eu accès à plus de 160 minutes d'audio sur 4 500 fichiers audio étiquetés produits par 30 acteurs et actrices. Les fichiers consistent généralement en un acteur ou une actrice parlant une phrase simple et courte avec une intention émotionnelle spécifique.

Acteurs pour le jeu de données SAVEE

Ensuite, je devais trouver des fonctionnalités utiles pouvant être extraites de l'audio. Au départ, je pensais utiliser des transformations de Fourier à court terme pour extraire des informations de fréquence. Cependant, certaines recherches sur le sujet ont révélé que les transformations de Fourier sont assez imparfaites pour les applications de reconnaissance vocale. La raison en est que les transformations de Fourier, bien qu’il s’agisse d’une excellente représentation physique du son, ne représentent pas la façon dont l’humain perçoit le son.

Forme d'onde audio brute. Sous cette forme, il est inutile pour la classification.

Une meilleure façon d'extraire les caractéristiques de l'audio est d'utiliser les coefficients de fréquence de Mel, ou MFCC, en abrégé. Une belle explication de la façon dont les MFCC sont dérivés de l'audio est fournie ici. Les IMF s'efforcent de représenter l'audio de manière à mieux s'aligner sur la perception humaine.

Pour dériver des MFCC à partir de l'audio, il est nécessaire de décider du nombre de cases de fréquence à utiliser et de l'étendue d'une étape temporelle à segmenter. Ces décisions déterminent la granularité des données de sortie MFCC. Une pratique standard pour les applications de reconnaissance vocale consiste à appliquer 26 bandes de fréquences comprises entre 20Hz et 20kHz et à n'utiliser que les 13 premières pour la classification. Les informations les plus utiles se situent dans les plages de fréquences les plus basses, et inclure des plages de fréquences plus élevées conduit souvent à une dégradation des performances. Pour les pas temporels, des valeurs comprises entre 10 et 100 millisecondes sont courantes. J'ai choisi d'utiliser 25 millisecondes.

Les banques de filtres Mel sont utilisées pour stocker le contenu de fréquence audio

Une fois dérivés, les MFCC peuvent être tracés sur une carte thermique et utilisés pour visualiser le son. Cela ne révèle aucune différence évidente entre les catégories émotionnelles. Ce n’est pas tellement dû à un manque de schémas, mais au fait que les humains ne sont pas entraînés à reconnaître visuellement ces différences émotionnelles subtiles. Cependant, à partir de ces cartes thermiques, il est assez facile de voir les différences entre les hommes et les femmes.

Visualisation des MFCC pour des locuteurs hommes et femmes heureux. Les voix des femmes ont tendance à être plus fortes dans les hautes fréquences, comme le montrent les couleurs plus vives situées en haut de la carte thermique.

En dérivant des MFCC, les problèmes de classification audio sont essentiellement traduits en problèmes de reconnaissance d'images. En tant que tels, les outils, algorithmes et techniques très efficaces dans le domaine de la reconnaissance d'image sont également très efficaces pour la classification audio. Pour aborder le problème de la classification des émotions, j'ai choisi d'utiliser un réseau de neurones convolutifs (CNN), car ceux-ci se sont révélés efficaces pour la reconnaissance image et audio.

Avant d’entraîner mon CNN, j’avais assigné de manière aléatoire des fichiers de mon ensemble de données à des ensembles d’entraînement ou de test divisés en 80/20. J'ai ensuite effectué un certain nombre d'étapes de prétraitement sur les fichiers de formation. Le processus pour chaque fichier était le suivant:

  1. Couper tout le silence.
  2. Sélectionnez un nombre de fenêtres 0.4s aléatoires.
  3. Déterminez les MFCC pour chaque fenêtre, produisant un tableau de 13 x 16.
  4. Mettez les MFCC à l'échelle de 0 à 1. (Cette étape est extrêmement importante! Elle empêche le modèle de s’adapter au niveau de volume des enregistrements audio.)
  5. Associez chaque fenêtre à l'étiquette d'émotion du fichier d'origine.

Au terme du prétraitement, j’avais généré 75 000 fenêtres étiquetées 0,4s pour la formation, chaque fenêtre étant représentée par un tableau 13x16. J'ai ensuite formé mon CNN sur ces données pour 25 époques.

Pour analyser le modèle sur l'ensemble de tests, j'ai appliqué un flux de travaux de processus similaire à celui utilisé pour créer des données d'apprentissage. Le processus pour chaque fichier de l'ensemble de test était le suivant:

  1. Couper tout le silence.
  2. Créez des fenêtres «glissantes» 0,4 s avec une taille de pas de 0,1 s. (Par exemple, la première fenêtre est comprise entre 0,0s et 0,4s, la seconde entre 0,1s et 0,5s, etc.)
  3. Déterminez les MFCC pour chaque fenêtre et mettez-les à l'échelle.
  4. Classer chaque fenêtre et retourner la sortie softmax.
  5. Agrégation des prévisions pour chaque fenêtre.
  6. La prédiction finale est la classe maximale après agrégation.

L'application de ce processus à l'ensemble des 889 fichiers de l'ensemble de tests a généré un score global de précision de 83%. Je doute fortement que je serais capable d'étiqueter moi-même ces fichiers avec une précision proche de 83%. La précision pour chaque émotion spécifique est indiquée sur le diagramme à barres ci-dessous.

Cet article de blog peut donner l’impression que la création, la formation et le test du modèle sont simples et directs. Je peux vous assurer que ce n'était vraiment pas le cas. Avant d’atteindre une précision de 83%, de nombreuses versions du modèle avaient des performances assez médiocres. Dans une itération, je n’ai pas mes échelles correctement, ce qui a conduit à prédire quasiment tous les fichiers du jeu de tests comme «surpris». Alors qu'est-ce que j'ai appris de cette expérience?

Tout d’abord, ce projet a bien montré à quel point la simple collecte de plus de données peut considérablement améliorer les résultats. Ma première itération réussie du modèle utilisait uniquement le jeu de données RAVDESS, environ 1400 fichiers audio. La meilleure précision que j'ai pu obtenir avec cet ensemble de données seul était de 67%. Pour atteindre une précision de 83%, je n'ai fait qu'augmenter la taille de mon jeu de données à 4500 fichiers.

Deuxièmement, j'ai appris que le traitement préalable des données de classification audio est essentiel. L’audio brut, et même les transformations de Fourier à court terme, sont presque totalement inutiles. Comme j'ai appris à la dure, une mise à l'échelle appropriée peut faire ou défaire un modèle. Ne pas supprimer le silence est un autre piège simple. Une fois que l'audio a été correctement transformé en fonctionnalités informatives, il est relativement facile de créer et de former un modèle d'apprentissage en profondeur.

Pour conclure, construire un modèle de classification pour la détection des émotions vocales était une expérience difficile mais enrichissante. Dans un proche avenir, je reviendrai probablement sur ce projet pour le développer. Parmi les choses que je voudrais faire, notons: tester le modèle avec un plus grand nombre d’entrées, l’adapter à un plus grand nombre d’émotions et déployer un modèle dans le cloud pour la détection des émotions en direct.

Github, LinkedIn, Blog personnel

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close