UTILISATION DES PARAMÈTRES
ET MODÈLES ARTICULATOIRES

Rapport Technique : Version finale du 29/04/2004

I BUT DES TRAVAUX

L'une des tâches de l'ICP dans le projet Artus est la construction d'un synthétiseur multi-modal (audio et animation d'un clone 3D réaliste) du LPC (Langage Parlé Complété), et sa mise en ›uvre dans un système complet. Chez le téléspectateur sourd ou malentendant, un terminal spécifique doit permettre de remplacer les informations textuelles du sous-titrage classique en activant un clone animé (visage + main en 3D). Le message initialement disponible sous forme textuelle devient donc accessible aux jeunes enfants ou aux personnes ne maîtrisant pas assez bien la lecture.

Ce projet a retenu le principe du pilotage du clone par le biais de paramètres de contrôle cachés (par des techniques de tatouage) dans l'image et le son. Cela permettra à l'émission originale, une fois transmise ou enregistrée, de conserver sa capacité à piloter le clone LPC, malgré les codages et média très hétérogènes d'aujourd'hui.

Dans un souci de réalisme, on a aussi choisi d'enregistrer une vraie locutrice, habituée à coder le LPC. Ce sont ces signaux qui servent à analyser les mouvements spécifiques du LPC et leurs synchronisations relatives dans le temps, ainsi qu'à construire les dictionnaires de la synthèse de parole LPC et les modèles graphiques pour le rendu final. À différentes étapes, cette approche a l'avantage de permettre de quantifier et d'évaluer la précision numérique du travail de modélisation ou de re-synthèse par rapport aux signaux de référence.

II MODÈLES ET PARAMÈTRES ARTICULATOIRES

La bande passante disponible avec un tatouage robuste sera relativement faible. Elle impose un principe de réduction des données : les très nombreuses coordonnées des points du visage et de la main ne pourront pas être transmises telles quelles, une par une, cachées dans le signal audio-visuel. On va profiter de ce que les mouvements de tous ces points sont fortement corrélés, par l'anatomie mais aussi par la tâche, pour compiler ces connaissances a priori dans un modèle.

Le paradigme de la modélisation articulatoire proposé par l'ICP sera utilisé pour la synthèse automatique à partir du (télé)texte et l'animation du clone. Au final, un faible nombre de paramètres (une trentaine pour l'ensemble visage+main, quelle que soit la résolution en points ou triangles des modèles qui seront incrustés à l'écran) permettra au récepteur de reconstituer fidèlement l'animation originale et de préserver sa sémantique. Le décodeur possède en effet une copie du modèle de (dé)codage, qui exprime les coordonnées des points et leurs relations avec les paramètres articulatoires.

II.1 Nature des modèles

Le rapport T1.1 a décrit précisément la stratégie choisie pour l'acquisition des données d'apprentissage, réalisée chez Attitude Studio (pour tout ce qui concerne la main et pour les données dynamiques relatives au visage) ainsi qu'à l'ICP (pour la version haute-définition du visage).

La nature de la main et celle des gestes impliqués dans le LPC font qu'une approche linéaire (utilisée pour le clone parlant du projet RNRT TempoValse) ne suffisait pas à les modéliser : les articulations des doigts et les mouvements de torsion du cou lorsque la main et le visage se rapprochent dans un mouvement de constriction nous ont amené à définir des modèles à deux étages, pas toujours linéaires. On fait émerger ces modèles des données qui ont été récoltées, rectifiées puis augmentées spatialement.

En pratique, cela signifie aussi que la technique, classique en animation, de KeyFraming où l'on interpole entre un petit nombre de formes de référence (ou shape) ne pourra pas suffire à restituer une animation réaliste à partir des paramètres articulatoires qui auront été extraits des images tatouées.

II.2 Utilisation des paramètres articulatoires

Que ce soit pour la main ou le visage, les paramètres articulatoires en entrée seront tout d'abord recombinés, pas forcément linéairement, pour produire un plus grand nombre de paramètres qu'on peut qualifier de secondaires ou de cachés. Ces sont une combinaison linéaire des différents , de leur cosinus ou de leur sinus. C'est à partir des que seront calculées (par combinaison linéaire ou application pondérée d'une rotation) les coordonnées de tous les points qui animent le modèle 3D.

Fig. 1: Animation des points du clone par un petit nombre de paramètres articulatoires

II.3 Codage des modèles

Chaque modèle (que ce soit pour la main ou le visage) peut être lu dans un fichier. L'exemple fictif qui suit illustre le codage type d'un de ces fichiers. Les numéros de ligne et certaines tabulations ont été rajoutés pour la lisibilité. On retrouve les étages de la modélisation, sous forme de deux matrices successives : l'une pour la recombinaison fonctionnelle des paramètres, la suivante pour le calcul des coordonnées.

01: 5 transformations
02: 3                       par1   par2    ang1
03: lpar1            LIN 0  1       2       3
04: lpar2            LIN 1  0       0       1
05: apar1            SIN 1  1       0       0
06: apar2            COS 0  0       .3      .4
07: ROTVz1.0_2.0_3.0 LIN .1 0       0       .3
08: 2 points
09: 1
10:      2.0 .1 .2 .3 .4 0
11:      0.0 .6 .7 .8 .9 0
12:      -1   2  3  4  5 0
13: 2
14:      1.0  1  0  1  0  0
15:      1.0  0  1  1  0  0
16:      0.0  0  0  0  0  0.3


On va maintenant détailler les généricités sous-jacentes à chaque ligne de l'exemple.

L'en-tête :

01: 5 transformations

La première ligne annonce le nombre de transformations, c'est à dire le nombre de paramètres secondaires qui seront générés.

02: 3 par1 par2 ang1

La seconde ligne donne le nombre de paramètres du premier niveau, ainsi que leurs noms (repris dans les fichiers de modélisation). Il y aura ensuite lignes qui expliciteront le mode de calcul de chaque paramètre de second niveau, comme combinaison (pas forcément linéaire) d'une constante et des paramètres du premier niveau. Chacune de ces lignes aura colonnes.

Le calcul des paramètres de second niveau :

03: lpar1 LIN 0 1 2 3
04: lpar2 LIN 1 0 0 1

Ces deux premières lignes correspondent au cas d'une combinaison linéaire simple (LIN est spécifié en deuxième colonne, après le nom du paramètre de second niveau).

Ici, on a soit :
et de la même façon, soit :

Le type de combinaison à opérer pour le paramètre n'est pas toujours LIN. Cela peut aussi être COS ou SIN, comme c'est justement le cas pour les lignes suivantes :

05: apar1 SIN 1 1 0 0
06: apar2 COS 0 0 .3 .4

Dans ces cas là, le calcul de la combinaison linéaire entre la constante et les paramètres du premier niveau doit être suivi par l'évaluation de la fonction trigonométrique demandée.

Pour l'exemple donné, on aura donc :
et .

07: ROTVz1.0_2.0_3.0 LIN 0.1 0 0 .3

Le nom du paramètre, en première colonne, sert aussi à activer la fonction de rotation, s'il est du type ROT<caractère><caractère><flottant>_< flottant>_<flottant> : la combi-naison linéaire (constante + paramètres du premier niveau) calculera l'angle d'une rotation. Dans l'exemple, la valeur de base de l'angle de la future rotation vaut donc . Celle-ci sera appliquée au moment du calcul des points, après une translation spécifiée dans le nom et avant la translation inverse. Cela équivaut à une rotation centrée sur le point de coordonnées opposées, soit ici.

À ce stade, tous les paramètres secondaires ont été calculés. Ce sont eux qui vont servir pour la génération des coordonnées des points 3D du modèle à animer.

La génération des points :

08: 2 points

La ligne qui suit la dernière transformation annonce le nombre de points qui seront générés pour l'animation. Pour chaque point, on a 4 lignes dont les 3 dernières (avec colonnes) décrivent la transformation. Celle-ci est une succession de contributions additives (la constante et la plupart des paramètres de second niveau) et de contributions rotatives (à chacun des paramètres de second niveau déclaré comme un angle de rotation).

09: 1
10: 2.0 .1 .2 .3 .4 0
11: 0.0 .6 .7 .8 .9 0
12: -1 2 3 4 5 0

Le premier point (numéroté 1) ne fait pas intervenir de rotation (les coefficients du paramètre sont toutes nulles). Ses coordonnées seront :


13: 2
14: 1.0 1 0 1 0 0
15: 1.0 0 1 1 0 0
16: 0.0 0 0 0 0 0.3

Le calcul du point suivant (numéroté 2) fait intervenir le paramètre qui est lié à une rotation, déclarée en ligne 7, et dont on a mémorisé que le centre était . Avant l'application de cette rotation, les coordonnées calculées sont :


Les angles pour la rotation valent . Il n'y aura donc pas de rotation (effet nul) autour de l'axe X, ni autour de l'axe Y. La troisième rotation s'effectue autour de l'axe Z passant par le point et d'angle . Les coordonnées finales seront donc modifiées de cette façon :



Lorsque plusieurs angles sont non nuls, on calcule d'abord la rotation autour de l'axe X, puis autour de l'axe Y, et enfin autour de l'axe Z. S'il y avait des paramètres secondaires supplémentaires, les transformations associées (rotations ou combinaison linéaires) s'effectueraient successivement, après cette première rotation.

II.4 Implémentation de référence

Le source en C qui est proposé implémente le chargement de modèles articulatoires et le calcul des coordonnées 3D des points à partir des paramètres articulatoires.

Une fois compilé (par gcc artmdl2trc.c -o artmdl2trc -lm sous Unix par exemple), il accepte en entrée le nom d'une séquence de paramètres articulatoires, et d'un ou deux fichiers de modèles (l'ordre est important, il doit correspondre à l'ordre des paramètres dans la séquence). L'utilitaire génèrera en sortie un (ou deux) fichier(s) .trc, susceptibles d'être utilisés sous MotionBuilder :

artmdl2trc fichier_articulatoire.seq modele_visage.txt modele_main.txt

L'archive Modeles.zip (100 ko) inclut le source en C de cet utilitaire, les modèles de la main et du visage de la locutrice clonée pour le projet Artus, ainsi qu'une version PDF de ce document. Un exécutable pour Windows a déja été précompilé.

Une seconde archive, Exemples_sequences.zip (570 ko), comporte quelques séquences de paramètres articulatoires (capturés ou synthétisés) et les pistes audio associées.