Il existe deux types de personnes dans ce monde : celles qui regardent des émissions de télévision avec des sous-titres et celles qui sont bizarres.
Blague à part, l'importance des sous-titres pour les vidéos ne peut être sous-estimée. En plus d'être cruciaux pour les sourds et les malentendants, les sous-titres sont également importants lorsque l'audio n'est pas disponible ou n'est pas clairement audible. Peut-être que vous regardez une vidéo dans un lieu public et que le son est noyé par le bruit ambiant. Ou peut-être que la personne qui parle dans la vidéo utilise un microphone qui n'est pas de la meilleure qualité, ou parle avec un accent ou un dialecte qui n'est pas familier au spectateur. Les légendes sont toujours une bonne chose. Malheureusement, le sous-titrage audio dans un flux en direct est délicat.
Avant de creuser le problème du sous-titrage des flux en direct, parlons un peu de la sémantique. Saviez-vous qu'il existe une différence entre les termes sous-titres et sous-titres ?
transcription ou traduction du dialogue, adaptée lorsque le son est disponible mais non compris (par exemple parce que l'utilisateur ne comprend pas la langue de la piste audio de la ressource multimédia). Superposé sur la vidéo.
La spécification décrit les sous-titres comme :
Transcription ou traduction du dialogue, des effets sonores, des indices musicaux pertinents et d'autres informations audio pertinentes, adaptée lorsque le son n'est pas disponible ou n'est pas clairement audible (par exemple, parce qu'il est coupé, noyé par le bruit ambiant ou parce que l'utilisateur est sourd ). Superposé sur la vidéo ; marqué comme approprié pour les malentendants.
Cela signifie que lorsque nous parlons de "sous-titres codés" pour les vidéos en direct, nous faisons généralement référence aux sous-titres , car les sous-titres incluent généralement des informations descriptives. Pensez à une scène dans une émission de télévision où un acteur monte dans la voiture pour quitter la maison et dit au revoir à son conjoint. La légende de cette scène pourrait être "Au revoir, ma chérie. [le moteur de la voiture démarre]".
Nous ne sommes pas près d'avoir des systèmes d'IA décrivant des informations contextuelles comme celle-ci pour nous, nous sommes donc limités à l'ajout de sous-titres purs "parole-texte" à notre flux en direct ; nous pouvons le faire en utilisant la méthode ci-dessous.
Remarque : Vous remarquerez que le titre et le corps de cet article de blog utilisent les termes « légendes » ou « sous-titres codés », même si ce dont nous parlons vraiment ici, ce sont des sous-titres basés sur les définitions ci-dessus. Malheureusement, étant donné que le terme "sous-titres codés" est si souvent utilisé à mauvais escient, il est plus logique d'utiliser ce terme de manière incorrecte pour aider les développeurs à trouver cet article de blog et à apprendre comment ajouter cette fonctionnalité à leurs flux en direct. Sachez simplement que ce dont nous parlons vraiment ici, ce sont des sous-titres !
La solution que nous examinons dans cet article se concentre sur la diffusion vers un flux en direct Amazon Interactive Video Service (Amazon IVS) à partir de
Pour cette démo, j'ai choisi d'utiliser le OBS-captions-plugin
de ratwithacompiler (
Ensuite, sélectionnez l'icône "engrenage" dans le dock des sous-titres pour modifier les paramètres.
Assurez-vous qu'une source de sous-titres est sélectionnée et modifiez la configuration du plug-in en fonction de vos besoins. Par exemple, le délai d'attente de légende par défaut pour moi était défini sur 15.0
secondes, mais j'ai trouvé que 5.0
secondes était une meilleure valeur.
Une fois que vous avez enregistré votre configuration et démarré un nouveau flux en direct, le plug-in gère la conversion de votre discours en texte et produit les informations de sous-titre requises pour le flux en direct.
Pour lire les données de sous-titres avec le lecteur Amazon IVS, nous pouvons ajouter un écouteur d'événement pour écouter l'événement TextCue
(
ivsPlayer.addEventListener(IVSPlayer.PlayerEventType.TEXT_CUE, (evt) => { console.log(evt); }
Le gestionnaire tel que configuré ci-dessus enregistre tous les événements TextCue
entrants dans la console.
La propriété text
de l'événement TextCue
contient les données de légende.
Avec du HTML et du CSS, nous pouvons restituer les données de sous-titres en superposition sur l'élément <video>
. Cette implémentation dépend fortement de vos besoins, mais vous devez prendre en compte le masquage automatique de la superposition après une période spécifiée sans données de sous-titres.
Dans cet article, nous avons examiné comment utiliser un plug-in OBS pour convertir la parole en texte et publier ce texte sous forme de données de sous-titres sur un flux en direct Amazon IVS.