Skip to content

Avatar IA : comment donner un visage à un assistant vocal et éviter les pièges

10 min de lecture
Dr. Sam «DeepFake King» Markov
aikaanamassistant vocalavatar iaintégration avatar iaproduction vidéo iasimlisynthèse vocaleweb rtcyandex realtime
AI-аватар: как добавить лицо голосовому помощнику и избежать подводных камней — illustration 1

L’intégration d’un avatar IA dans l’administrateur vocal IA existant, Aika, n’est pas seulement l’ajout d’un visage, mais une série de défis techniques. Nous nous sommes efforcés de maintenir l’architecture actuelle sur Yandex Realtime afin que le nouveau service ne fasse qu’animer les lèvres sur un son déjà généré. Lors des tests de Simli et Anam, des nuances sont apparues concernant les pauses avant la réponse, le lancement de la vidéo sur iPhone et la stabilité de l’internet mobile. Et lors de la création du deuxième personnage, Eva, il est devenu évident que la crédibilité de la neurone dépend non seulement du visage lui-même, mais aussi du contexte.

Notre moteur vocal fonctionnait déjà, la tâche consistait donc uniquement à animer le visage. Aika communique avec les visiteurs du site directement dans le navigateur via WebSocket, qui est connecté à notre serveur sur FastAPI, et celui-ci, à son tour, maintient une session avec Yandex Realtime. Cela assure un mode « parole à parole », éliminant le besoin de chaînes de reconnaissance, de modèle textuel et de synthèse séparées.

Le serveur transmet au navigateur un son non compressé au format PCM16 à 24 kHz par morceaux (pcm_chunk), et c’est à ce flux qu’il fallait synchroniser les expressions faciales de l’avatar.

Choix de la plateforme pour l’avatar IA : Simli vs Anam

Les deux services testés – Simli et Anam – proposent un mode où l’utilisateur fournit son flux audio, et le service génère une vidéo avec un visage animé, synchronisé avec le son, renvoyant le média via WebRTC. Ainsi, Yandex continue de générer la parole, et le service d’avatar est responsable de la composante visuelle.

Aspects techniques de l’intégration sonore

  • Fréquence d’échantillonnage : Yandex émet un son à 24 kHz. Simli nécessite 16 kHz, Anam a également été configuré à 16 kHz, bien qu’il prenne en charge d’autres formats.
  • Traitement des blocs audio : Le son arrive par morceaux. Pour éviter les artefacts aux jonctions, la position fractionnaire et le dernier échantillon sont transférés dans le bloc suivant. Cela assure la fluidité de l’animation, bien que la qualité du rééchantillonnage de la fréquence sans filtre complet nécessite encore des améliorations.

Sécurité et gestion des sessions

La clé du service n’est pas transmise au navigateur. La page demande à notre serveur un jeton de session de courte durée via POST /voice/avatar-session. Le serveur vérifie l’origin et limite l’émission de jetons : 6 par heure par IP et 30 par heure au total.

Si le jeton n’est pas obtenu ou si la vidéo ne se lance pas, la page bascule en mode vocal normal. 8 secondes sont allouées à la demande de jeton, 15 secondes au lancement du SDK. Il est important de noter qu’un lancement réussi du SDK ne garantit pas l’apparition immédiate de la première image ; le visage ici est un complément, pas une fonction critique.

Gestion de l’état de l’avatar dans Anam

Anam fournit deux commandes clés :

  • endSequence() : appelée après l’envoi du dernier fragment audio d’une réplique.
  • interruptPersona() : arrête la parole actuelle de l’avatar en cas d’interruption, après quoi endSequence() est également appelée.

Comparaison entre Simli (ancienne génération) et Anam Cara-4

Nous avons comparé les versions disponibles : Simli de la génération précédente et Anam Cara-4. Il ne s’agit pas d’une comparaison exhaustive de toutes les fonctionnalités, mais d’un choix pour une tâche spécifique.

Paramètre Simli (ancienne génération) Anam Cara-4
Mimique Les lèvres bougent, le reste de la mimique est limité Cligne des yeux, sourit, les dents sont visibles, incline la tête
Création du visage À partir d’une photo via l’API de la génération précédente À partir d’une seule photo, une vidéo d’essai est disponible

Subjectivement, Anam a montré une mimique plus vivante et naturelle. Pour nous, cela a été un facteur décisif. Ensuite, nous avons rencontré un certain nombre de problèmes spécifiques.

Particularités de la lecture multimédia

  • Son : Dans Simli, le son était lu via un élément audio séparé, dans Anam — via le même élément vidéo. Cela signifie que l’élément vidéo Anam ne peut pas être laissé muted, sinon l’avatar « parlera » sans son.
  • Résolution : La vidéo commençait souvent avec une basse résolution (384×576) et ne passait à une haute résolution (768×1152) qu’après quelques secondes. L’option sessionOptions.videoQuality: "high" aidait, mais ne garantissait pas un démarrage en haute qualité.
  • Délai de génération des images : Anam a besoin de recevoir 0,8 seconde d’audio avant de commencer la génération des images. Ce n’est pas toujours égal à 0,8 seconde d’attente en temps réel, car le son peut arriver plus vite qu’il n’est joué.

Gestion du microphone et des sessions

  • Suppression de l’écho : Sur téléphone, pendant qu’Aika parle, le microphone est désactivé pour éviter de capter sa voix depuis le haut-parleur. Sur PC, le microphone est actif, et au début de la parole de l’utilisateur (événement barge_in de Yandex Realtime), l’avatar arrête sa parole actuelle.
  • Slot de session occupé : Avec le plan gratuit, une seule session simultanée est disponible. En cas de plantage du navigateur, le slot pouvait rester occupé. La requête GET /v1/sessions/concurrency aide à diagnostiquer l’occupation des slots.
  • Annulation de la connexion : Si l’utilisateur clique sur « stop » pendant la connexion vidéo, il est nécessaire de terminer correctement les opérations asynchrones pour ne pas laisser de session inutile. Pour cela, un compteur de générations videoGen a été introduit.

Problèmes avec Safari sur iPhone

Sur iPhone, dans Safari, la vidéo ne démarrait pas. L’hypothèse est liée aux règles de lecture automatique. Un appel préliminaire à play() sur l’élément vidéo avec une alimentation temporaire du flux depuis le canvas et la suppression de muted a aidé lors d’un test, mais n’est pas une solution universelle.

Une longue pause avant la réponse de l’avatar, qui regarde silencieusement l’utilisateur, est ressentie beaucoup plus lourdement que sans elle. Initialement, le seuil de silence (VAD) était réglé à 2,2 secondes pour qu’Aika n’interrompe pas les utilisateurs dictant des informations avec des pauses.

Nous avons transféré la logique du pont téléphonique vers le site : dans une conversation normale, le seuil est de 1500 ms, lors d’une dictée, il est de 2200 ms. Cela permet de réguler dynamiquement la sensibilité du VAD. Les paramètres sont appliqués via session.update sans reconnexion.

AI-аватар: как добавить лицо голосовому помощнику и избежать подводных камней — illustration 2

Création d’un deuxième personnage : Eva

Pour l’administratrice du studio Eva, nous avons été confrontés au problème de la « blonde de stock » sur un fond vide. Le tournant est survenu lorsqu’un intérieur est apparu derrière elle : des lampes chaudes, des étagères, des plantes, un arrière-plan flou. Cela a rendu l’image beaucoup plus convaincante, transformant le « catalogue » en « personne au travail ».

Détails de la création du fond et du portrait

  • Fond : Nous avons utilisé un intérieur existant dans notre style, en supprimant les personnes avec un générateur.
  • Découpe du personnage : Eva a été découpée à l’aide des outils macOS Vision (VNGeneratePersonSegmentationRequest avec le niveau .accurate). Le bord du masque a été rétréci et adouci pour éliminer l’halo.
  • Échelle : Il est important de respecter l’échelle des objets en arrière-plan pour éviter les situations comiques (par exemple, une tasse géante derrière elle). Le fond n’a été pris qu’au-dessus du plan de travail et flouté pour un objectif de portrait.
  • Résolution : Pour Cara-4, une source carrée de 1152×1152 est recommandée. L’agrandissement pur Real-ESRGAN ×4 rendait la peau trop lisse. Une combinaison d’agrandissement par réseau neuronal avec une mise à l’échelle normale, une augmentation de la netteté et l’ajout de grain donnait un meilleur résultat.

Voix d’Eva

Pour Eva, nous avons choisi une voix de la famille LiveTTS de Yandex. Dans l’API SpeechKit v3, le modèle est sélectionné via "model": "livetts", et la voix et le rôle sont transmis via hints. Pour les textes longs, le texte était divisé en phrases et synthétisé séparément.

Parmi sept options de voix pour une phrase, nous avons choisi la voix vera dans le rôle casual. Nous avons dû réécrire la phrase, car la synthèse faisait systématiquement des erreurs d’accentuation.

Enregistrement de vidéos avec l’avatar

La vidéo d’Eva a été enregistrée via le même moteur d’animation que l’appel en direct, en utilisant MediaRecorder directement depuis video.srcObject (vidéo et son ensemble, WebM avec VP9 et Opus). Pour un démarrage correct de l’enregistrement, le flux était préalablement « réveillé » par une seconde de silence, afin que la vidéo ne commence pas par un écran noir.

Questions fréquemment posées

Qu’est-ce qu’un avatar IA et comment fonctionne-t-il ?

Un avatar IA est un personnage numérique capable d’animer les expressions faciales et les mouvements des lèvres en fonction de l’audio fourni. Il utilise des réseaux neuronaux pour créer une image visuelle réaliste qui se synchronise avec la parole, rendant l’interaction plus naturelle et attrayante.

Peut-on utiliser sa propre voix pour un avatar IA ?

Oui, la plupart des plateformes, comme Anam et Simli, permettent d’utiliser votre propre moteur vocal ou un son préenregistré. L’avatar animera le visage en fonction de ce flux audio, préservant ainsi la reconnaissance de votre marque ou de votre personne.

Quelles sont les principales difficultés lors de l’intégration d’un avatar IA ?

Parmi les principales difficultés figurent la synchronisation audio et vidéo, le traitement des fragments audio, l’optimisation des latences, l’assurance d’un fonctionnement stable sur divers appareils (en particulier mobiles), ainsi que la création d’une image visuelle convaincante qui corresponde au contexte et à la marque.

Comment l’arrière-plan influence-t-il la perception d’un avatar IA ?

L’arrière-plan joue un rôle crucial dans la création d’une image convaincante. Un arrière-plan vide ou inapproprié peut rendre l’avatar artificiel. Un intérieur correspondant au style du personnage ou de la marque augmente considérablement le réalisme et la confiance envers l’avatar, créant une sensation de présence d’une « personne au travail ».

Combien coûte la création d’un avatar IA ?

Le coût de création d’un avatar IA peut varier considérablement en fonction de la plateforme choisie, du niveau de personnalisation, de la richesse des expressions faciales et de la nécessité de fonctions uniques. Certains services proposent des modèles d’abonnement, tandis que d’autres peuvent facturer chaque minute de vidéo générée ou le développement d’un personnage unique.

Conclusion

L’intégration d’un avatar IA est un outil puissant pour augmenter l’engagement des utilisateurs, mais elle nécessite une élaboration technique approfondie. Du choix de la plateforme au réglage fin des arrière-plans et des pauses, chaque étape influence le résultat final. Nous avons vu que les réseaux neuronaux sont capables d’insuffler une nouvelle vie aux interfaces vocales, mais seulement avec une attention particulière aux détails.

Si vous souhaitez mettre à l’échelle votre contenu et créer des vidéos IA pour la publicité, envisagez les possibilités de la production neuronale par abonnement. Cela permet de générer des centaines de vidéos, qu’il s’agisse d’UGC IA pour un projet crypto ou d’une usine de vidéos IA pour le e-commerce. Nous sommes prêts à vous aider ! Contactez-nous pour découvrir comment la production de contenu IA peut transformer votre entreprise.


← Retour au blog