Reconnaissance vocale : Etude d’un engine Monolocuteur – Approche globale

Etude d’un engine Monolocuteur – Approche globale

PRINCIPE

En générale, on peut distinguer quatre modules fondamentaux pour les systèmes de traitement de la parole.

  • Le module d’analyse de la parole (front-end) qui cherche à mettre en évidence les caractéristiques du signal vocal tel qu’il est produit, mais jamais tel qu’il est compris, ce rôle étant réservé à la reconnaissance.
  • Le module d’apprentissage qui a pour but de définir dans la machine un dictionnaire de références acoustiques. Pour l’approche analytique, l’ordinateur demande à l’utilisateur d’énoncer des phrases souvent dépourvues de toute signification, mais qui présentent l’intérêt de comporter des successions de phonèmes bien particuliers. Dans l’approche globale, ce sera des mots que l’on devra énoncer afin de définir le dictionnaire. Pour un système multi-locuteur, cette phase n’existe pas, c’est la principale différence. (On utilise alors un dictionnaire de références acoustiques prédéfini et supposé représentatif des interlocuteurs cibles)
  • Le module de reconnaissance qui a pour mission de décoder l’information portée par le signal vocal à partir des données fournies par l’analyse. On distingue fondamentalement deux types de reconnaissance, en fonction de l’information que l’on cherche à extraire du signal vocal : la reconnaissance du locuteur, dont l’objectif est de reconnaître la personne qui parle, et la reconnaissance de la parole, où l’on s’attache plutôt à reconnaître ce qui est dit. Ce module va retourner une série de “meilleur solution” en terme de mot reconnu. Chaque solution étant caractérisée par un “score”.
  • Le module de rejet va permettre d’éliminer dans certains cas la (les) solution(s) fournie(s) par le module de reconnaissance. Celle-ci pouvant être cataloguée comme étant soit un “déchets”, soit trop ambigüe selon que le “score” de la première solution est trop proche du score de la seconde, ou pas assez satisfaisant selon que le score n’est pas assez élevé.

Le module d’analyse de la parole – Front-End – Feature extraction

analyse

Le Front End d’un engine vocal est en général composé de plusieurs sous-modules qui permettent de transformer dans les meilleurs conditions un morceau d’échantillon sonore en empreintes acoustiques qui ont comme principale caractéristique d’être plus facilement identifiable.Nous pouvons mettre en évidence les sous-modules suivants :

Préemphasis : Suite à l’utilisation du micro, d’amplificateur, de filtre analogique, le signal contient du “bruit additionnel” que l’on désire retirer.

On applique en général une préemphase permettant d’écraser les graves “sans pour autant toucher au “aigus” et ce, d’une manière linéaire.

Hamming : La fenêtre de Hamming est utilisé pour minimiser l’effet de bord de la FFT dû au découpage en “frames” de la source sonore.

Lorsque le signal présente des discontinuités ( signal carré par exemple), la limitation du nombre de termes fait apparaître des dépassements au moment des transitions : c’est le phénomène de Gibbs. Ce phénomène peut être atténué en augmentant le nombre de termes de la décomposition. On peut atténuer ce phénomène de Gibbs en utilisant une technique de fenêtrage. Les N coefficients de la décomposition tronquée sont alors pondérés par un coefficient qui varie selon le type de fenêtre utilisé.

  • une fenêtre simple à appliquer est celle de Fejer, il suffit de multiplier l’harmonique k par le coefficient (N-k)/N
  • une autre fenêtre très utilisée est celle de Hamming pour laquelle le coefficient s’écrit 0,54 + 0,46.cos(kp/N)

FFT : Fast Fourier Transform : Application de l’algorithme de transformée de Fourier Discret optimisé (Conversion dans le domaine spectrale)

Mel-scale triangular filters :

BARK

On retrouve dans ce sous-module, deux fonctions: la première permettant de remettre en “forme” le spectre obtenu par la FFT et ce de façon à mieux séparer certaines fréquences (fonction de scaling). Le Bark-Scale par exemple permet de “Zoomer sur les graves” et de “Dezoomer sur les aigus”, comme le montre la figure ci-après. La raison de cette remise en forme vient du fait que l’oreille humaine est plus sensible aux variations dans les fréquences graves que dans les fréquences aigus.

Son utilisation a montré de façon empirique qu’il augmentait le taux de reconnaissance vocal.

 

La seconde fonction joue le rôle de “compacteur”, elle permet de rassembler par paquet une série de valeur. Ces valeurs seront donc représentée par un nombre “moyen”.

 

Dans notre exemple, le Mel-Scale Filters-bank permet en plus du Bark-Scale de mettre en paquet une série de valeurs par l’utilisation de Filters-bank. (par exemple on passera de 128 valeurs à 16 valeurs moyennes) Chacun d’eux va représenter les valeurs moyennes des zones qu’ils couvrent. L’utilisation de valeur moyenne permettent de passer un nombre moindre de valeur au niveau de la DCT et du LOG (16 au lieu de 128).

 

Log : SI l’on regarde le schéma général d’Analyse de la parole, on remarque que l’utilisation d’une échelle logarithmique permet de mettre en évidence des composantes (2) qui sous une échelle linéaire serait cachés par la composante principale (1).

DCT : Conversion vers le “Cepstral domain” : En comparant les deux graphiques, on remarque que deux personnes prononçant le même mot génère une courbe différente mais ayant une allure générale sensiblement identique. On recherche donc un système capable de déterminer à partir d’un signal, la tendance générale. Il y a plusieurs moyens de réaliser cela, et une de celles-ci consiste à utiliser la décomposition en série de fonctions, sous la condition de ne prendre que les premières composantes et ce afin de n’avoir que l’allure générale. En effet, ces composantes principales ne décrivent que les variations lentes de la courbe qui dans notre cas sont les premieres composantes de la DCT de notre forme spectrale. C’est cette fonction donnant l’allure générale du spectre que les spécialistes de la reconnaissance vocale appelle “Cepstrum”.

 

Dérivée : On ajoute aux Cepstres, une information dynamique sur l’évolution du spectre, en calculant la dérivée première et seconde. On obtient alors la référence acoustique ou Features.

En résumé, les Features = Cepstre + ƒ Cepstre + ƒ’ Cepstre + Énergie + ƒ Énergie + ƒ’ Énergie = Vecteur composé de +/- 40 éléments.

Le module d’apprentissage – Training

PRINCIPE_AP

Le principe de l’apprentissage est divisé en deux phases : la première consistant à créé les éléments du dictionnaires acoustiques, la seconde phase servant à ajuster ces données et ce afin d’avoir une valeur moyenne représentative de la façon dont on peut prononcer un mot. Cette phase est un élément primordiale dans un moteur de reconnaissance. Si cette phase d’apprentissage est réalisée de façon inopportune, le moteur ne pourra pas donner de bon résultat. C’est pourquoi, une formation doit être donnée aux utilisateurs afin de mener aux mieux “ces campagnes d’entraînement”.

Le module de reconnaissance – Recognition – Pattern Matching

EnergySpeechEnergy

Avant toute chose : Comment déterminer que le locuteur… parle ? Le calcul des frontières d’un signal est basé sur la variation instantanée de l’énergie de la parole. La plus simple méthode pour calculer l’énergie instantanée de la parole est de calculer l’énergie de chaque paquet en sommant le carré des échantillons. Ce module est souvent nommé VAD (Voice Activity Detection)

Maintenant que nous savons que le locuteur vient de parler, il s’agit ici de le reconnaître.

Principe : Le signal vocal émis par l’utilisateur, une fois paramétré, va pouvoir être comparé aux mots du dictionnaire de références (cf. module d’apprentissage) en terme d’images acoustiques. L’algorithme de reconnaissance permet de choisir le mot le plus ressemblant, par calcul d’un taux de similitude – au sens d’une distance – entre le mot prononcé et les diverses références.

Aussi, ce calcul n’est pas simple, même pour un locuteur unique, car les mots, donc les formes, à comparer ont des durées et des rythmes différents . En effet, un locuteur même entraîné ne peut prononcer plusieurs fois une même séquence vocale avec exactement le même rythme et la même durée. Les échelles temporelles de deux occurrences d’un même mot ne coïncident donc pas, et les formes acoustiques issues de l’étape de paramétrisation ne peuvent être simplement comparées point à point.

Une technique pour résoudre le problème d’échelle temporelle consisterait à réaliser un “mapping linéaire” (resizing) avant la comparaison. Mais là aussi, des problèmes subsistent : “le temps est élastique”. En effet, un “heeello” et un “hellooooo” peuvent être considérés comme différent alors qu’il possèdent la même longueur. On utilise dans ce cas des algorithmes de type “Dynamic Time Warping” ou algorithmes de comparaison dynamique qui vont mettre en correspondance optimale les échelles temporelles des deux mots.

LTWNLTW
La modélisation stochastique, en particulier sous forme de modèles markoviens peut-être aussi utilisée. Dans cette approche, chaque mot du vocabulaire est représenté par une source de Markov capable d’émettre le signal vocal correspondant au mot. Les paramètres de cette source sous-jacente au processus d’émission d’un mot sont ajustés au cours d’une phase préalable d’apprentissage sur de très gros corpus de parole. La reconnaissance d’un mot inconnu consiste à déterminer la source ayant la probabilité la plus forte d’avoir émis ce mot.DDTWTW = façon d’optimiser le calcule d’un “non linear time warping” permettant de déterminer le plus court chemin… (on pourrait essayer toute les possibilités mais ce serait très long ).On va calculer les distances entre les vecteurs acoustiques Xk et Yk, le but étant de tester toute la suite de vecteurs acoustiques. Le problème c’est qu’il faut trouver le meilleur chemin (de poids minimum) pour comparer ces vecteurs. Le meilleur chemin donnant la moins mauvaise note en totalité. Chaque modèle sera comparé de cette façon, et les résultats obtenus seront transmis au module de rejet.

etat

Le module de rejet – Rejection

Ce module de rejet va interpréter les résultats obtenus par le module de reconnaissance. C’est lui qui va déterminer si un mot a été reconnu ou s’il doit être “rejeté”

– Si un mot obtient un bon résultat (80%) par exemple, et que les autres mots n’obtiennent pas de résultats probants (<60%), le mot sera considéré comme reconnu. Si deux, voir plusieurs mots obtiennent des résultats probant, un ambiguïté subsiste : le mot ne sera donc pas reconnu.

– L’utilisation de mots poubelles (garbage), permet au système de ne pas se déclencher sur des bruits involontaires (bruits d’environnement, sonnerie de téléphone,…). Si la reconnaissance renvoie une “bonne note” pour l’un de ces bruits, le module de rejet ne tiendra donc pas compte de celui-ci (sachant son attributs “garbage”).

Performance de l’engine

10MOTS20MOTS
Problème de robustesse

On se doute bien que ces engines de reconnaissance vocale sont influencés par l’environnement extérieur qui peuvent être de tout type. Diverse techniques peuvent être utilisée afin d’augmenter le taux de reconnaissance dans ces environnement :

– Echo canceler

– Dictionnaire acoustique contenant des “mots garbages”