Réunions et appels multimédia en temps réel avec Microsoft teamsReal-time media calls and meetings with Microsoft Teams

La plateforme multimédia en temps réel permet aux robots d’interagir avec les appels et les réunions Microsoft teams à l’aide de la voix, de la vidéo et du partage d’écran en temps réel.The Real-time Media Platform enables bots to interact with Microsoft Teams calls and meetings using real-time voice, video, and screen sharing. Il s’agit d’une fonctionnalité avancée qui permet au bot d’envoyer et de recevoir des images de contenu audio et vidéo par frame.This is an advanced capability which allows the bot to send and receive voice and video content frame by frame. Le bot dispose d’un accès « brut » aux flux de médias vocaux, vidéo et de partage d’écran.The bot has "raw" access to the voice, video, and screen sharing media streams. (Les bots qui traitent les médias eux-mêmes sont appelés robots multimédia hébergés par l’application, contrairement aux robots multimédia hébergés par le service, qui reposent sur la plateforme multimédia en temps réel pour tout le traitement multimédia.)(Bots which process media themselves are called application-hosted media bots, as opposed to simpler service-hosted media bots that rely on the Real-time Media platform for all media processing.)

Par exemple, dans un appel 1:1 avec un bot, comme l’utilisateur parle, le bot recevra 50 images audio par seconde, chaque image contenant 20 millisecondes (MS) d’audio.For example, in a 1:1 call with a bot, as the user speaks, the bot will receive 50 audio frames per second, with each frame containing 20 milliseconds (ms) of audio. Un robot multimédia hébergé par l’application peut effectuer une reconnaissance vocale en temps réel au fur et à mesure que les images audio sont reçues, au lieu de devoir attendre un enregistrement une fois que l’utilisateur a cessé de parler.An application-hosted media bot can perform real-time speech recognition as the audio frames are received, rather than having to wait for a recording after the user has stopped speaking. Le bot peut également envoyer et recevoir de la vidéo haute définition, y compris du contenu de partage d’écran vidéo.The bot can also send and receive high-definition-resolution video, including video-based screen sharing content.

La plateforme fournit une API de type Socket simple pour le robot pour l’envoi et la réception de médias, et gère le codage et le décodage en temps réel des paquets audio/vidéo à l’aide de codecs tels que la soie et G. 722 pour le son et H. 264 pour la vidéo.The platform provides a simple socket-like API for the bot to send and receive media, and handles the real-time encoding and decoding of audio/video packets using codecs such as SILK and G.722 for audio and H.264 for video. La plateforme gère également tous les paquets de chiffrement/déchiffrement et de transmission de paquets multimédias automatiquement, de sorte que le robot doit uniquement se préoccuper du contenu audio/vidéo réel.The platform also handles all media packet encryption/decryption and packet network transmission automatically, so the bot just needs to concern itself with the actual audio/video content. Un bot multimédia en temps réel peut participer à des appels 1:1, ainsi qu’à des réunions avec plusieurs participants.A real-time media bot may participate in 1:1 calls as well as meetings with multiple participants.

Cet article présente les concepts clés relatifs à la création d’un bot qui peut effectuer des appels audio/vidéo en temps réel avec Microsoft Teams.This article introduces key concepts related to building a bot that can conduct real-time audio/video calls with Microsoft Teams.

Session multimédiaMedia session

Lorsqu’un bot multimédia en temps réel répond à un appel entrant ou rejoint une réunion Microsoft Teams, il doit déclarer les modalités qu’il envisage de prendre en charge.When a real-time media bot answers an incoming call or joins a Microsoft Teams meeting, it must declare what modalities it intends to support. Pour chaque modalité prise en charge, le bot déclare s’il peut envoyer et recevoir des médias, recevoir uniquement ou envoyer uniquement.For each supported modality, the bot declares whether it can send and receive media, receive only, or send only. Par exemple, un bot conçu pour gérer les appels de 1:1 Teams peut souhaiter envoyer et recevoir de l’audio, mais uniquement Envoyer de la vidéo (car il n’a pas besoin de recevoir la vidéo de l’appelant).For example, a bot designed to handle 1:1 Teams calls may wish to both send and receive audio, but only send video (as it does not need to receive the video of the caller). L’ensemble des modalités audio et vidéo établies entre le bot et l’appelant ou la réunion de teams est appelé session multimédia.The set of audio and video modalities established between the bot and the Teams caller or meeting is called the media session.

Deux types de modalités vidéo sont pris en charge : le partage d’écranvidéo principal et vidéo.Two types of video modalities are supported: main video and video-based screen sharing. La vidéo principale est utilisée pour transporter la vidéo à partir de la webcam d’un utilisateur.Main video is used to transport the video from a user's webcam. Le partage d’écran vidéo permet à un utilisateur de partager son écran en tant que flux vidéo.Video-based screen sharing allows a user to share his or her screen as a video stream. La plateforme permet à un bot d’envoyer et/ou de recevoir les deux types de vidéo.The platform allows a bot to send and/or receive both video types.

Lorsqu’elle est jointe à une réunion Teams, un bot peut recevoir simultanément plusieurs flux vidéo, jusqu’à 10 par session multimédia.When joined to a Teams meeting, a bot can receive multiple main video streams simultaneously — up to 10 per media session. Cela permet au bot de « voir » plusieurs participants à la réunion.This allows the bot to "see" more than one participant in the meeting.

Images et fréquence d’imagesFrames and frame rate

Un bot multimédia en temps réel interagit directement avec les modalités audio et vidéo d’une session multimédia.A real-time media bot interacts directly with the audio and video modalities of a media session. Cela signifie que le bot envoie et/ou reçoit des médias sous la forme d’une séquence de trames, dans laquelle chaque image représente une unité de contenu.This means the bot is sending and/or receiving media as a sequence of frames, where each frame represents a unit of content. Une seconde de l’audio peut être transmise sous la forme d’une séquence de 50 trames, chaque image contenant 20 millisecondes (MS) (1/50e de seconde) de contenu de synthèse vocale.One second of audio may be transmitted as a sequence of 50 frames, with each frame containing 20 milliseconds (ms) —1/50th of a second — of speech content. Une seconde partie de la vidéo peut être découpée en une séquence de 30 images fixes, chacune étant destinée à être affichée uniquement 33.3 ms (1/30 de seconde) avant l’affichage de l’image vidéo suivante.One second worth of video may be sliced as a sequence of 30 still images, each intended to be viewed for just 33.3ms — 1/30th of a second — before the next video frame is displayed. Le nombre de trames émises ou rendues par seconde est appelé la fréquence d’images.The number of frames transmitted or rendered per second is called the frame rate. « 30fps » indique 30 images par seconde."30fps" indicates 30 frames per second.

Format audioAudio format

Chaque seconde de l’audio est représentée par des exemples16 000, chaque exemple contenant 16 bits de données.Each second of audio is represented as 16,000 samples, with each sample containing 16-bits of data. Une trame audio 20 ms contient 320 exemples (640 octets de données).A 20ms audio frame contains 320 samples (640 bytes of data).

Format vidéoVideo format

Il existe plusieurs formats pris en charge pour la vidéo.There are several formats supported for video. Deux propriétés clés d’un format vidéo sont sa taille d’image et son format de couleur.Two key properties of a video format are its frame size and color format. Les tailles de cadre prises en charge sont 640x360 (« 360p »), 1280x720 (« 720p ») et 1920x1080 (« 1080p »).Supported frame sizes include 640x360 ("360p"), 1280x720 ("720p"), and 1920x1080 ("1080p"). Les formats de couleurs pris en charge incluent NV12 (12 bits par pixel) et RGB24 (24 bits par pixel).Supported color formats include NV12 (12 bits per pixel) and RGB24 (24 bits per pixel).

Une image vidéo « 720p » contient 921 600 pixels (1280 fois 720).A "720p" video frame contains 921,600 pixels (1280 times 720). Dans le format de couleur RGB24, chaque pixel est représenté par 3 octets (24 bits) constitués d’un octet, chacun des composants de couleur rouge, vert et bleu.In the RGB24 color format, each pixel is represented as 3 bytes (24-bits) comprised of one byte each of red, green, and blue color components. Par conséquent, une image vidéo 720p RGB24 nécessite 2 764 800 octets de données (921 600 pixels à 3 octets/pixel).Therefore, a single 720p RGB24 video frame requires 2,764,800 bytes of data (921,600 pixels times 3 bytes/pixel). À une fréquence d’images de 30fps, l’envoi de trames vidéo 720p RGB24 signifie un traitement approximatif de 80 Mo/s de contenu (qui est largement compressé par le codec vidéo H. 264 avant la transmission réseau).At a frame rate of 30fps, sending 720p RGB24 video frames means processing approximately 80 MB/s of content (which is substantially compressed by the H.264 video codec before network transmission).

Une fonctionnalité avancée de la plateforme permet à un bot d’envoyer/recevoir des vidéos en tant que trames H. 264 codées .An advanced capability of the platform allows a bot to send/receive video as encoded H.264 frames. Cela prend en charge les robots qui fournissent leur propre codeur/décodeur H. 264, ou qui n’ont pas besoin du flux vidéo décodé dans des RGB24 brutes ou des bitmaps NV12.This supports bots which provide their own H.264 encoder/decoder, or do not need the video stream decoded into raw RGB24 or NV12 bitmaps.

Haut-parleurs actifs et dominantActive and dominant speakers

Lorsqu’elle est jointe à une réunion teams composée de plusieurs participants, un bot peut identifier les participants à la réunion en cours de conversation.When joined to a Teams meeting consisting of multiple participants, a bot can identify which meeting participants are currently speaking. Les haut-parleurs actifs identifient les participants qui sont entendus dans chaque trame audio reçue.Active speakers identify which participants are being heard in each received audio frame. Les haut-parleurs dominants identifient les participants les plus actifs (ou « dominant ») dans la conversation de groupe, même si leur voix n’est pas audible dans chaque cadre audio.Dominant speakers identify which participants are currently most active (or "dominant") in the group conversation, even though their voice may not be heard in every audio frame. Le jeu de haut-parleurs dominant peut varier à mesure que les différents participants prennent la parole.The set of dominant speakers can change as different participants take turns speaking.

Abonnement vidéoVideo subscription

Dans un appel 1:1, le bot reçoit automatiquement la vidéo de l’appelant si le bot est activé pour recevoir la vidéo.In a 1:1 call, the bot will automatically receive the video of the caller if the bot is enabled to receive video. Dans une réunion Teams, le bot doit indiquer à la plateforme que les participants qu’il souhaite voir.In a Teams meeting, the bot must indicate to the platform which participants it wants to see. Un abonnement vidéo est une demande de la part du bot pour recevoir le contenu vidéo principal d’un participant ou un partage d’écran.A video subscription is a request by the bot to receive a participant’s main video or screen-sharing content. Lorsque les participants à la réunion conduisent leur conversation, le bot peut modifier les abonnements vidéo souhaités en fonction des mises à jour du jeu de haut-parleurs dominant ou des notifications indiquant quel participant est en train de partager des écrans.As the participants in the meeting conduct their conversation, the bot may modify its desired video subscriptions based on updates of the dominant speaker set or notifications indicating which participant is currently screen sharing.

Ressources pour les développeursDeveloper resources

Pour développer un robot multimédia hébergé par une application, vous devez installer le package NuGet suivant dans votre projet Visual Studio :To develop an application-hosted media bot, you must install the following NuGet package within your Visual Studio project:

Les robots multimédias hébergés par l’application requièrent .NET/C# et Windows Server, comme décrit en détail dans Requirements and Considerations for application-Hosted Media bots.Application-hosted media bots require .NET/C# and Windows Server, as described in detail in Requirements and considerations for application-hosted media bots.