Par: Julien Marcotrigiano, Aminata SY, Parth Tripathi, Vanessa Vanderberghe
Un exode problématique
Ces dernières années, un exode rural massif a rassemblé les populations de nombreuses régions indiennes dans les grandes villes du sud de l’Inde. Cette évolution démographique a eu pour impact de faire de ces villes, qui étaient jusque-là des bastions de leur langue régionale (Kannada, Tamoul), un melting pot de toutes les langues indiennes. On retrouve ainsi dans ces villes des populations entières qui ne parlent pas la même langue et qui ont des problèmes pour s’exprimer dans la langue historique de la ville.
Dans ce contexte, les centres téléphoniques de relations clients d’une grande entreprise du sud de l’Inde sont dans l’incapacité de rediriger les appels de ses clients vers des opérateurs parlant la même langue qu’eux. Alors qu’ils utilisaient jusque-là des données géographiques pour savoir vers quel opérateur rediriger un appel. Un système inefficace aujourd’hui. C’est dans cette optique que cette entreprise cherche à développer un assistant vocal permettant de détecter la langue parlée par le client et de le rediriger vers le bon opérateur.
Un assistant vocal: pour qui ? comment ?
Dans ce cadre, nous intervenons pour Airtel, le premier opérateur de téléphonie mobile en Inde. Grâce à cet assistant vocal, le client sera directement redirigé vers un conseiller pouvant répondre à sa question dans sa langue natale.
Pour sa création, l’entreprise nous demande à partir d’un clip vocal de moins de 5 secondes sous format .wav de détecter la langue parlée par le client pour pouvoir rediriger l’appel vers le bon conseiller. L’entreprise se chargera par la suite de rediriger la personne directement vers quelqu’un qui sera familier avec son problème à l’aide d’une reconnaissance vocale du problème exposé.
Schéma illustrant le cas d’usage
La grande majorité des habitants et néo-habitants des grandes villes du Sud de l’Inde maîtrisent les rudiments de l’anglais et de l’hindi, qui sont les langues officielles de l’union indienne. L’idée est donc de demander à l’utilisateur en Anglais et en Hindi d’exposer son problème dans la langue de son choix. Airtel se charge d’envoyer les 5 premières secondes de parole du client à notre système qui devrait pouvoir analyser et détecter la langue à partir des 5 premières secondes d’audio. Après avoir détecté la langue, notre système renvoie la réponse chez Airtel qui pourra rediriger l’appel vers le bon conseiller.
Il a été convenu avec l’entreprise d’obtenir un taux de réussite supérieur à 80% pour que le système soit considéré comme satisfaisant.
Quelles données utiliser ?
Pour réaliser notre part de cet assistant vocal, nous avions besoin d’enregistrements vocaux d’Indiens. Le nombre de langues parlées en Inde étant élevé, nous avons décidé de nous concentrer sur les langues principales du sud de l’Inde. Ces dernières correspondent à celles traditionnelles du sud de l’Inde, le Kannada, le Tamoul et le Telugu, ainsi que l’Hindi (parlé par plus de 50% de la population Indienne) et l’anglais. De plus, ces cinq langues couvrent environ 99% des habitants des grandes villes du Sud de l’Inde et représentent l’intégralité des langues gérées dans les call centers.
Dans un premier temps, nous avons utilisé des données de différents datasets: Common Voice, Google Research, LibriVox, LibriSpeech et Microsoft Research.
Lors de notre projet, nous avons dû effectuer un changement de dataset car les audios provenaient de datasets différents pour chaque langue. Ils représentaient chacun des conditions d’enregistrement différentes (matériels professionnels ou amateurs, lieux d’enregistrement…). C’est ce facteur qui influe la classification et c’est ce facteur qui peut être détecté par notre modèle plutôt que la langue parlée.
Ainsi, nous avons donc testé notre modèle avec de nouveaux datasets pour les trois langues régionales provenant de la même source (Google Research). Nous considérerons donc, par la suite, les nouveaux jeux de données.
Descriptions des datasets
Après une étude des statistiques descriptives de nos données, nous remarquons que la majorité des fichiers audios dont nous disposons ont une durée entre 5 à 10s.
Graphique représentant le nombre d’enregistrements correspondant à une certaine durée pour chaque langue
Langues | Durée d’enregistrement |
Anglais | 323 min |
Tamoul | 424 min |
Telugu | 341 min |
Hindi | 173 min |
Kannada | 458 min |
Graphique représentant le nombre d’enregistrements pour chaque genre (femme ou homme)
Enfin, les locuteurs sont différents et ces enregistrements concernent globalement autant d’hommes que de femmes, d’âges variés, parlant de différents sujets. Ces données sont donc très utiles dans notre cas.
Des enregistrements aux images
Afin d’homogénéiser nos différentes données audios, celles-ci doivent être mises sous le même format, les fichiers MP3 seront donc convertis en fichier WAV car c’est ce format qui est le plus utilisé pour les traitements audio. Tous les fichiers audios seront aussi échantillonnés en 8 kHz car c’est la fréquence utilisée en téléphonie.
Nous avons ensuite découpé nos fichiers audios pour ne garder que des enregistrements de cinq secondes pour correspondre à notre cas d’usage.
Enfin, en s’inspirant de certains travaux de Deep learning pour le speech-to-text, nous avons décidé d’utiliser un modèle de réseaux de neurones convolutifs qui prend en entrée une image d’un mel-spectrogramme. Un spectrogramme est une représentation visuelle du son en temps et en fréquence avec des intensités de pixels représentant l’amplitude ou l’énergie du son à ce moment et à cette fréquence. L’avantage d’utiliser des spectrogrammes par rapport aux données wav brutes est que notre analyse sera abordée comme étant un problème de classification d’image.
Image d’un mel-spectrogramme générée à partir d’un audio de 5 secondes
Ci-dessous, le nombre d’images obtenues pour chaque langue :
Langues | Kannada | Telugu | Tamil | Anglais | Hindi |
Nombre d’images | 3039 | 1478 | 2861 | 1585 | 2081 |
Des résultats satisfaisants?
Comme évoqué précédemment, nous avons utilisé un réseau de neurones convolutifs créé à l’aide de Keras sous Python.
Premier modèle (différentes sources de datasets) | Deuxième modèle (changement de datasets) |
Notre algorithme arrive à prédire la bonne langue, en moyenne, pour 94% (accuracy) des données. | Notre algorithme est moins performant puisqu’il se trompe dans 18% des cas (accuracy = 0.82). |
Les matrices de confusion permettent d’exprimer les prédictions de notre algorithme par rapport à la véritable langue à laquelle appartient une image. On remarque clairement une baisse de l’efficacité du modèle avec le changement des datasets. Notre modèle semble avoir des difficultés pour différencier les trois langues traditionnelles du sud de l’Inde (le Kannada, le Tamoul et le Telugu). Cette différence d’efficacité s’explique par la grande ressemblance entre ces trois langues.
Nous avons donc joué sur les variables de notre modèle, pour améliorer sa performance. Voici les résultats du modèle final:
Notre modèle final estime la bonne langue dans 91% des cas. De plus, les résultats pour chaque langue sont supérieurs à 80%. Ces derniers respectent donc le taux fixé par l’entreprise (taux d’erreur inférieur à 20%).
Et pour la suite ?
Des améliorations sont possibles pour notre algorithme, l’entreprise Airtel pourra continuer l’entraînement de l’algorithme avec ses propres datasets. La taille du dataset peut aussi être augmentée en ajoutant un bruit de fond qui correspondrait à l’environnement d’un client qui appellerait le call center, cela permettrait d’augmenter l’efficacité de l’algorithme pour notre cas d’usage. Notre algorithme de détection de langues peut être testé sur d’autres langues indiennes (comme le Bengali, le Gujarati, le Punjabi) afin de vérifier l’efficacité de celui-ci.
Déploiement
Pour la mise en production de notre algorithme, celui-ci utilisera la voix du client afin de faire une prédiction sur la langue de celui-ci. Les lois en Inde concernant l’enregistrement de la voix des clients ne sont pas clairement définies, les entreprises peuvent enregistrer des appels de clients sans leurs consentements. Notre algorithme est donc en adéquation avec la loi indienne.