Le domaine de l’IA connaît encore aujourd’hui une évolution intéressante.
Comment OpenAI propose une IA vocale à faible latence à grande échelle
Par Yi Zhang et William McDonald, membres du personnel technique
L’IA vocale ne semble naturelle que si la conversation suit le rythme de la parole. Lorsque le réseau vient perturber le flux, les usagers le perçoivent immédiatement sous forme de pauses gênantes, d’interruptions brusques ou de réponses décalées. Cela revêt une importance particulière pour la version vocale de ChatGPT, pour les développeuses et développeurs qui utilisent l’API en temps réel, pour les agents travaillant dans des flux de travail interactifs, ainsi que pour les modèles qui doivent traiter le son pendant que l’utilisateur est encore en train de parler.
À l’échelle d’OpenAI, cela se traduit par trois exigences concrètes :
Dans la foulée, l’équipe d’OpenAI chargée des interactions IA en temps réel a récemment repensé notre pile WebRTC afin de remédier à trois contraintes qui commençaient à se heurter à grande échelle : la terminaison multimédia à un port par session ne s’adapte pas bien à l’infrastructure d’OpenAI, les sessions ICE (Interactive Connectivity Establishment) et DTLS (Datagram Transport Layer Security) avec état nécessitent une propriété stable, et le routage global doit maintenir une faible latence au premier saut. Dans cet article, nous présentons l’architecture de l’émetteur-récepteur SplitRelay Plus que nous avons mise au point afin de préserver le comportement standard de WebRTC pour les clients tout en modifiant la manière dont les paquets sont acheminés au sein de l’infrastructure d’OpenAI.
WebRTC est une norme ouverte permettant de transmettre de l’audio, de la vidéo et des informations à faible latence entre les navigateurs, les applications mobiles et les serveurs. On l’associe souvent aux appels entre pairs, cependant il constitue par ailleurs une base pratique pour les systèmes en temps réel client-serveur, car il normalise les aspects techniques complexes des médias interactifs : ICE pour l’établissement de la connectivité et le franchissement du NAT (Network Address Translation), DTLS et SRTP (Secure Real-time Transport Protocol) pour le transport chiffré, la négociation de codecs pour la compression et le décodage audio, RTCP (Real-time Transport Control Protocol) pour le contrôle de la qualité, de cette manière que des fonctionnalités côté client telles que l’annulation de l’écho et la mise en mémoire tampon de la gigue.
Cette normalisation est essentielle pour les produits d’IA. Sans WebRTC, chaque client devrait trouver une plateforme différente pour établir une connexion à travers les NAT, crypter les flux multimédias, négocier les codecs (les codeurs-décodeurs choisis pour la transmission et la décompression) et s’adapter aux conditions changeantes du réseau. Grâce à WebRTC, nous pouvons nous appuyer sur une pile de protocoles déjà implémentée dans les navigateurs et sur les plateformes mobiles, et concentrer nos efforts sur l’infrastructure qui relie les médias en temps réel aux modèles.
Précisons, nous nous appuyons en outre sur l’écosystème WebRTC lui-même, notamment sur des implémentations open source éprouvées et sur les travaux de normalisation qui garantissent l’interopérabilité des navigateurs, des applications mobiles et des serveurs. Les travaux fondamentaux de Justin Uberti (l’un des architectes originaux de WebRTC) et de Sean DuBois (créateur et responsable de Pion) ont permis à des équipes comme la nôtre de s’appuyer sur une infrastructure multimédia éprouvée plutôt que de réinventer les mécanismes de transport, de chiffrement et de contrôle de la congestion au niveau bas. Nous avons la chance que Justin et Sean soient désormais tous deux nos collègues chez OpenAI, où ils contribuent à définir la manière dont nous allons rapprocher le WebRTC et l’IA en temps réel.
Le chapitre n’est pas clos, loin de là.
Pour aller plus loin :
Selon l’information initialement publiée par OpenAI : OpenAI