Sous-titres façon réseaux sociaux, mot prononcé en surbrillance
La plupart des vidéos courtes sur les réseaux sociaux sont regardées sans le son : ce sont donc les sous-titres qui portent l’histoire. De simples sous-titres, un texte fin affichant une phrase entière en bas de l’image, se font facilement ignorer au fil du défilement. Les sous-titres qui retiennent l’attention sont différents : quelques mots à la fois, grands et en gras, et le mot en train d’être prononcé qui s’allume.
Jusqu’ici, il fallait un logiciel de montage vidéo ou un outil de sous-titrage séparé pour obtenir ce rendu. Désormais, une seule commande suffit : téléversez une vidéo et récupérez-la avec ces sous-titres incrustés.
Un extrait vidéo montrant Kevin, cofondateur de Transloadit. L’extrait a été sous-titré par la commande ci-dessous et est servi depuis Transloadit Storage. Lancez la lecture avec le son pour comparer.
Une seule commande
npx -y @transloadit/node assemblies create \
--template builtin/caption-video@0.0.2 \
--field style=social \
--field vocabulary=Transloadit \
-i video.mp4 -o out/
builtin/caption-video est un Template prêt à l’emploi : il transcrit la vidéo avec
🤖 /speech/transcribe et incruste les sous-titres avec
🤖 /video/subtitle. En plus de la vidéo sous-titrée, out/ reçoit
la transcription en JSON, avec un horodatage pour chaque mot, et en SRT, pour que vous puissiez aussi
proposer des sous-titres que vos spectateurs peuvent désactiver.
Si vous omettez --field style=social, vous obtenez de simples sous-titres à la place :

Bien orthographier votre marque
La reconnaissance vocale connaît les mots courants, pas les noms de vos produits. Sans aide,
l’extrait ci-dessus est revenu sous la forme « co-founder of Transloaded ». --field vocabulary=Transloadit
indique à la transcription les mots à repérer. Séparez plusieurs termes par des virgules, comme dans
vocabulary=Transloadit,Uppy,tus. Chaque correspondance complète, insensible à la casse, est aussi renvoyée
avec l’orthographe que vous avez fournie : « transloadit » devient ainsi « Transloadit ».
Les indications de vocabulaire fonctionnent avec le fournisseur par défaut et avec
"provider": "gcp". AWS ne prend en charge que des vocabulaires préparés à l’avance ; la
combinaison avec "provider": "aws" renvoie donc une erreur explicite au lieu d’ignorer vos
mots en silence.
Ce que fait le style réseaux sociaux
- Quelques mots à la fois. Les sous-titres contiennent normalement jusqu’à trois mots. Les expressions courtes peuvent rester groupées, et un mot de fin de phrase peut rejoindre le sous-titre précédent, ce qui autorise au plus un mot supplémentaire. Un sous-titre se termine plus tôt en fin de phrase ou lors d’une pause de plus de 0,4 seconde : les sous-titres suivent ainsi le rythme de la parole plutôt que les segments du fournisseur de transcription. Un mot anglais placé en fin de sous-titre, comme « by » ou « to », passe au sous-titre suivant lorsque c’est possible : vous obtenez « YOU’RE FREAKED OUT » puis « BY MY ROBOT », et non un sous-titre qui se termine par « by ».
- Le mot prononcé s’allume. Le mot actif passe au jaune et reste en surbrillance pendant les courtes pauses, jusqu’au début du mot suivant. Les autres mots restent à leur place, de sorte que la ligne ne saute pas pendant que vous la lisez.
- Lisible sur tous les fonds. Poppins ExtraBold en majuscules dans le tiers inférieur, avec un contour épais et une ombre douce.
- Adapté aux vidéos verticales, carrées et horizontales. Avec le dimensionnement automatique
par défaut, les sous-titres au format JSON rétrécissent ou passent sur une deuxième ligne pour
tenir dans l’image, sans couper de mot. Définir
font_sizedésactive cet ajustement automatique. - Un court effet pop. À son apparition, chaque sous-titre part de 85 % de sa taille complète et grandit jusqu’à celle-ci sur une durée de 120 millisecondes.

Personnaliser le rendu
Le Template accepte ces champs :
highlight_colordéfinit la couleur du mot actif (par défautFFD60A).font_color,font_size,border_coloretpositionfonctionnent comme pour les sous-titres simples.provider,source_language,target_languageetvocabularycontrôlent la transcription.
Le fournisseur par défaut détecte automatiquement la langue parlée. Utilisez target_language
pour fournir une indication facultative de la langue parlée, par exemple german. Pour
AWS et GCP, utilisez plutôt source_language, avec un code de langue comme
de-DE. Aucun de ces deux champs ne traduit la parole.
Intégrer le sous-titrage dans votre propre Template
Pour ajouter le sous-titrage à votre propre Template, enchaînez ces deux Steps dans un pipeline existant, par exemple après un téléversement depuis Uppy ou avant un encodage en HLS :
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"transcribed": {
"use": ":original",
"robot": "/speech/transcribe",
"format": "json",
"vocabulary": ["Transloadit"]
},
"captioned": {
"robot": "/video/subtitle",
"use": {
"steps": [
{ "name": ":original", "as": "video" },
{ "name": "transcribed", "as": "subtitles" }
]
},
"subtitles_type": "burned",
"style": "social",
"preset": "empty",
"ffmpeg_stack": "v7",
"result": true
}
}
}
/video/subtitle accepte comme sous-titres le JSON horodaté issu de /speech/transcribe. La
mise en surbrillance des mots, le regroupement et les majuscules nécessitent ce JSON. Les sous-titres
SRT et VTT reprennent aussi la police et la taille du style réseaux sociaux, mais conservent leurs
propres lignes et leur propre minutage. Les fichiers ASS conservent leurs propres styles. Avec
max_words_per_caption, vous définissez le nombre maximal de mots visé par sous-titre, avec les
ajustements de découpage propres au style réseaux sociaux décrits plus haut. "preset": "empty"
conserve le conteneur de l’entrée : un MP4 revient donc sous forme de MP4.
Démarrer
Lancez la commande ci-dessus avec votre propre vidéo, ou essayez les Steps dans le Template Editor. La documentation de 🤖 /video/subtitle répertorie tous les paramètres.
