Sous-titres en direct

Utilisez l'API Live Captions pour transcrire les flux audio et générer des sous-titres en temps réel pour votre application.

L'API Vonage Video Live Captions vous permet d'afficher des sous-titres en direct aux utilisateurs finaux dans une session Vonage Video, à l'aide d'un service de transcription. Nous utilisons AWS Transcribe comme fournisseur de transcription. Étant donné que Live Captions capture l'audio du routeur multimédia, il peut également fournir les sous-titres pour l'audio des participants à la connexion SIP.

Le sous-titrage en direct est activé par défaut pour tous les projets et il s'agit d'un produit basé sur l'utilisation. L'utilisation de Live Captions est facturée en fonction du nombre de flux audio de participants (ou d'identifiants de flux) envoyés au service de transcription. Pour plus d'informations, voir Règles de tarification de l'API Live Captions.

La fonction de sous-titrage en direct n'est prise en charge que dans les sessions acheminées (sessions qui utilisent la fonction Routeur média). Vous pouvez envoyer jusqu'à 50 flux audio d'une seule session Vonage à la fois au service de transcription pour les sous-titres.

Live caption illustration

Marche à suivre pour activer les sous-titres en direct

Utilisez la méthode du Client SDK pour publier l'audio vers le service de sous-titrage. Voir Mise en œuvre du sous-titrage en direct

Dans les clients qui s'abonnent, appeler la méthode SDK du client respectif pour qu'un abonné s'abonne aux sous-titres d'un flux.

Lors du lancement du sous-titrage en direct, l'audio est transmis en toute sécurité à un service de transcription audio tiers tel qu'Amazon Transcribe.

Utilisez l'API de sous-titrage dans les SDK clients pour activer ou désactiver la réception de sous-titres en direct dans votre application :

Le fait de commencer ou d'arrêter de recevoir des sous-titres en direct dans un client web n'a pas d'incidence sur les sous-titres reçus par d'autres clients connectés à la session.

Langues prises en charge

Le sous-titrage en direct prend en charge un certain nombre de langues. Indiquez la langue souhaitée dans le champ languageCode lors de l'activation des sous-titres en direct avec l'option API REST:

  • "af-ZA" - Afrikaans
  • "ar-AE" - Arabe, Golfe
  • "ar-SA" - Arabe, standard moderne
  • "eu-ES" - Basque
  • "ca-ES" - Catalan
  • "zh-HK" - Chinois, simplifié
  • "zh-CN" - Chinois, cantonais
  • "zh-TW" - Chinois, traditionnel
  • "hr-HR" - Croate
  • "cs-CZ" - Tchèque
  • "da-DK" - Danois
  • "nl-NL" - Néerlandais
  • "en-AU" - Anglais, australien
  • "en-GB" - Anglais, britannique
  • "en-IN" - Anglais, Indien
  • "en-IE" - Anglais, irlandais
  • "en-NZ" - Anglais, Nouvelle-Zélande
  • "en-AB" - Anglais, écossais
  • "en-ZA" - Anglais, sud-africain
  • "en-US" - Anglais, US
  • "en-WL" - Anglais, gallois
  • "fa-IR" - Farsi
  • "fi-FI" - Finlandais
  • "fr-FR" - Français
  • "fr-CA" - Français, Canadien
  • "gl-ES" - Galicien
  • "de-DE" - Allemand
  • "de-CH" - Allemand, Suisse
  • "el-GR" - Grecque
  • "he-IL" - Hébreu
  • "hi-IN" - Hindi, Indien
  • "id-ID" - Indonésien
  • "it-IT" - Italien
  • "ja-JP" - Japonais
  • "ko-KR" - Coréen
  • "lv-LV" - Letton
  • "ms-MY" - Malais
  • "no-NO" - Norvégien Bokmål
  • "pl-PL" - Polonais
  • "pt-PT" - Portugais
  • "pt-BR" - Portugais, brésilien
  • "ro-RO" - Roumain
  • "ru-RU" - Russie
  • "sr-RS" - Serbe
  • "sk-SK" - Slovaque
  • "so-SO" - Somali
  • "es-ES" - Espagnol
  • "es-US" - Espagnol, États-Unis
  • "sv-SE" - Suédois
  • "tl-PH" - Tagalog/Filipino
  • "th-TH" - Thaïlande
  • "uk-UA" - Ukrainien
  • "vi-VN" - Vietnamien
  • "zu-ZA" - Zoulou

Cas d'utilisation

Les sous-titres en direct peuvent améliorer l'expérience et l'engagement des utilisateurs d'une application. Le sous-titrage améliore le score d'accessibilité de votre application, ce qui se traduit souvent par une participation des personnes souffrant d'un handicap auditif. Certaines lois dans le monde exigent que les applications fournissent des sous-titres.

Le sous-titrage peut améliorer la compréhension de l'orateur dans des environnements non contrôlés, améliorant ainsi l'engagement de l'utilisateur.

Les sous-titres en direct ne sont disponibles que pour les sessions acheminées (sessions qui utilisent la fonction Routeur média).

Lorsque la fonction de sous-titrage en direct est activée :

  • Utilisez l'API de sous-titrage audio du client pour lancer le sous-titrage audio de chaque flux publié.
  • Le flux audio est envoyé à un service de transcription audio tiers (AWS Transcribe).
  • Utilisez l'API de sous-titrage audio du client pour vous abonner aux sous-titres en direct pour chaque flux publié.
  • Le choix de ne pas recevoir les sous-titres par un abonné individuel n'affecte pas la réception des sous-titres par d'autres abonnés dans d'autres clients connectés à la session.
  • Lorsque la session est terminée (lorsque tous les clients ont cessé de publier des flux dans la session), vous pouvez explicitement arrêter le sous-titrage à l'aide de l'API Stop Captions. Sinon, le sous-titrage audio s'arrête automatiquement après la durée maximale (spécifiée lors de l'appel de l'API Démarrer l'API sur les légendes) a expiré.
  • Les sous-titres en direct d'une session se terminent lors de la rotation des serveurs. Vous pouvez redémarrer un sous-titrage en direct en réponse à des événements de notification de rotation du serveur. Voir Rotation des serveurs et migration des sessions.
  • Le sous-titrage en direct s'arrête automatiquement après une durée maximale de 4 heures, mais vous pouvez configurer une durée maximale différente en appelant le service de sous-titrage en direct. Démarrer l'API sur les légendes. À l'expiration, le sous-titrage audio s'arrêtera sans effet sur la session en cours.
  • Les sous-titres en direct seront interrompus 60 secondes après que le dernier client se soit déconnecté de la session.

Mise à jour de l'état des légendes en direct

Vous pouvez configurer un webhook pour recevoir des événements lorsque les sous-titres en direct démarrent, s'arrêtent et échouent pour une session.

  1. Accédez à votre Video API Account et sélectionnez le projet dans la liste des projets dans le menu de gauche.
  2. Sous Paramètres du projet, trouver Surveillance des sous-titres en direct et cliquez sur Configurer.
  3. Soumettre l'URL à laquelle les rappels doivent être envoyés.

Sécuriser les rappels : Fixer un Signature Secret pour utiliser des demandes de rappel de webhook sécurisées avec des rappels signés, en utilisant le secret de signature. Voir Rappels sécurisés.

Lorsque l'état des sous-titres en direct change, un message HTTP POST est envoyé aux URL de rappel. Si aucune URL de rappel n'est configurée, aucune mise à jour de l'état n'est envoyée. Les données brutes de la requête HTTP sont un message codé en JSON de la forme suivante :

{
  "captionId": "<captionsId>",
  "applicationId": "<applicationId>",
  "sessionId": "<sessionId>",
  "status": "stopped",
  "createdAt": 1651253477,
  "updatedAt": 1651253837,
  "duration": 360,
  "stream": {
    "streamId": "<streamId>",
    "streamStatus": "stopped"
  },
  "languageCode": "en-US",
  "reason": "Maximum duration exceeds.",
  "provider": "aws-transcribe",
  "status": "stopped",
  "group": "captions"
}

L'objet JSON comprend les propriétés suivantes :

  • captionsId L'identifiant unique de la session de sous-titrage audio.
  • applicationId Votre identifiant unique d'application vidéo.
  • sessionId Session OpenTok pour laquelle le sous-titrage audio a démarré.
  • status État actuel des sous-titres en direct.
    • "started" La plateforme Video API de Vonage a réussi à allouer les ressources nécessaires à l'envoi de flux audio pour le sous-titrage.
    • "transcribing" Le service de transcription a commencé (et le sous-titrage est en cours).
    • "stopped" Le sous-titrage a cessé et toutes les ressources ont été supprimées.
    • "failed" Le sous-titrage n'a pas alloué les ressources nécessaires ou n'a pas envoyé de flux pour le sous-titrage.
  • createdAt L'horodatage Unix (Epoch) auquel le sous-titrage audio a commencé.
  • updatedAt L'horodatage Unix (Epoch) auquel le sous-titrage audio a été mis à jour. Si l'horodatage status est "stopped"le paramètre updatedAt indique l'heure à laquelle le sous-titrage s'est arrêté.
  • stream Un objet contenant l'ID du flux et le statut du flux sous-titré.
  • languageCode Le code linguistique BCP-47 utilisé.
  • reason Informations d'erreur supplémentaires sur le changement d'état.
  • providerLe fournisseur de services tiers utilisé pour le sous-titrage audio :
    • "aws-transcribe" Amazon Transcribe.
  • group Le type d'événement, qui est toujours défini sur "captions" pour les événements API de sous-titres audio.

Mise en place de sous-titres en direct

Utiliser le sous-titres en direct API pour permettre le sous-titrage audio en temps réel des éditeurs et des abonnés connectés à une session.

Le sous-titrage en direct doit être activé au niveau de la session via l'option API REST.

Le sous-titrage en direct n'est possible que dans les cas suivants session acheminée.

Publishing live captions

To enable live captions, initialize the `OTPublisher` component with the optional boolean `publishCaptions` property of the `properties` prop set to true:
<OTPublisher
  style={{width: 400, height: 300}}
  properties={{
    publishCaptions: true,
    // ... other properties
  }}
/>

Ce réglage est false par défaut.

Vous pouvez modifier dynamiquement cette propriété (en fonction d'un changement d'état React) pour activer ou désactiver les légendes pour le flux publié.

Subscribing to live captions

To start receiving captions, set the `subscribeToCaptions` property of the `properties` prop of the `OTSubscriber` component:
<OTSubscriber
  style={{width: 200, height: 200}}
  properties={{
    subscribeToCaptions: true,
    // ... other properties
  }}
  eventHandlers={{
    captionReceived: event => {
      console.log('Caption received:', event.text);
      console.log('Caption final:', event.isFinal);
    },
  }}
/>

Vous pouvez régler la subscribeToCaptions à la propriété true que le client qui publie le flux soit ou non en train de publier des sous-titres en direct. L'abonné commencera à recevoir les données de sous-titrage dès que l'éditeur commencera à publier des sous-titres.

Les abonnés reçoivent les sous-titres par l'intermédiaire de l'application captionReceived (voir ci-dessus).

L'objet d'événement captionReceived comporte deux éléments properties:

  • texte - Le texte de la légende (une chaîne)
  • isFinal - Si le texte de la légende est final pour une phrase (true) ou partiel (false). Le SDK React Native n'affiche pas le texte des événements de légende. Vous pouvez créer votre propre élément d'interface utilisateur pour rendre le texte des légendes en fonction des événements de légendes.

Recevoir ses propres sous-titres en direct

Le Vonage Client SDK ne permet pas à un éditeur de recevoir des événements pour ses propres sous-titres. Pour rendre les sous-titres d'un flux publié par le client local, créez un abonné caché (au flux de l'éditeur local) pour écouter les événements de sous-titres. Définissez la propriété subscribeToSelf de la propriété OTSubscriber à true. Vous ne devez pas rendre la vidéo de cet abonné (en réglant son width et height à 0) et vous ne devez pas vous abonner à l'audio (pour éviter l'écho, en mettant subscribeToAudio à faux).

Vous pouvez ajouter les légendes à l'interface utilisateur, comme vous le feriez pour les légendes d'autres flux. Voir Rendu personnalisé des abonnés.

Problèmes connus

  • Lorsqu'un participant reste muet pendant plus de 15 secondes, la connexion avec le fournisseur de transcription tiers est coupée, afin de réduire les coûts de facturation. Il peut s'écouler 2 à 5 secondes avant que la connexion ne soit rétablie et que les sous-titres ne reprennent.

Plus d'informations

Voir cet article sur le soutien de l'API de Vonage pour plus d'informations sur les spécifications techniques et les FAQ.

Voir cet article sur le soutien de l'API de Vonage pour obtenir des informations sur les tarifs de l'API Live Captions.