Des transcriptions qui savent qui parle
Entretiens, podcasts, tables rondes et réunions font tous intervenir plusieurs voix. Une transcription qui regroupe tout en un seul bloc de texte vous oblige à deviner qui a dit quoi, et les sous-titres qui défilent rapidement sans indication sont encore plus difficiles à suivre.
🤖 /speech/transcribe identifie désormais qui parle, et chaque format de sortie l’indique : une transcription textuelle qui se lit comme un script, des sous-titres avec des balises de voix standard, et des sous-titres pour les réseaux sociaux qui attribuent à chaque intervenant sa propre couleur.
Un extrait de Houston We Have a Podcast de la NASA, épisode 441, produit par une seule Assembly à partir de l’audio seul : l’animateur en jaune, l’astronaute d’Artemis II en cyan. Fourni depuis Transloadit Storage.
Une commande
npx -y @transloadit/node speech transcribe --speaker-labels -i interview.mp3 -o interview.txt
Pour l’extrait ci-dessus, interview.txt contient :
Speaker 1: If you could just maybe we'll take a step into those 10 days in orbit and what it was like in Orion, um, and just zooming back, looking at the overall perspective of the flight, now a couple months separated from it, you know, how are you characterizing the entirety of the experience, um, over those 10 days?
Speaker 2: Well, there's a lot that you could, you could dig into there. The, you know, I think one thing that comes to mind is we are busy, uh, really busy and really working together to try to stay on the schedule.
Ajoutez --max-speakers 2 lorsque vous savez combien de personnes parlent, et
--format pour choisir un autre format de sortie.
Chaque format indique qui parle
textproduit un paragraphe par prise de parole, comme ci-dessus.webvttentoure chaque bloc de sous-titres d’une balise de voix standard, telle que<v Speaker 1>, afin que les lecteurs et les éditeurs de sous-titres puissent afficher le nom de chaque intervenant ou lui appliquer un style.srtne comporte pas de balise de voix et fait donc commencer un bloc de sous-titres parSpeaker 2:à chaque changement d’intervenant.jsonassocie chaque mot à un intervenant et ajoute un segment par prise de parole. Utilisez-le pour créer votre propre affichage.
Un bloc de sous-titres ne contient jamais les paroles de deux intervenants. Les étiquettes
d’intervenant proviennent des fournisseurs aws et
gcp ; si vous omettez provider, Transloadit en choisit un
qui les prend en charge.
Une couleur par intervenant
Les sous-titres incrustés avec 🤖 /video/subtitle peuvent désormais
attribuer à chaque intervenant sa propre couleur. Transmettez le JSON avec les étiquettes
d’intervenant issu de /speech/transcribe, ainsi qu’une liste de
speaker_colors : le mot en cours s’illumine dans la couleur de l’intervenant, et aucun
bloc de sous-titres ne se prolonge sur les mots de l’intervenant suivant.
La vidéo en haut de page est le résultat d’une seule Assembly, créée à partir du seul fichier audio. Cette Assembly importe une photo de la NASA, trace la forme d’onde, intègre les deux à une image de couverture, transforme cette image et l’audio en une vidéo, puis y incruste les sous-titres :
{
"steps": {
"photo": {
"robot": "/http/import",
"url": "https://images-assets.nasa.gov/image/art002e009567/art002e009567~orig.jpg"
},
"waveform": {
"use": ":original",
"robot": "/audio/waveform",
"format": "image",
"width": 1600,
"height": 90,
"background_color": "00000000",
"outer_color": "ffffff73",
"center_color": "ffffff73",
"waveform_style": "bars",
"bar_width": 5,
"bar_gap": 5,
"bar_style": "rounded",
"style": "v1"
},
"cover": {
"use": {
"steps": [
{ "name": "photo", "as": "base" },
{ "name": "waveform", "as": "watermark" }
]
},
"robot": "/image/resize",
"width": 1920,
"height": 1080,
"resize_strategy": "crop",
"watermark_y_offset": 40,
"format": "jpg",
"text": [
{
"text": "HOUSTON WE HAVE A PODCAST · ARTEMIS II",
"font": "Poppins-SemiBold",
"size": 30,
"color": "#ffffff",
"align": "right",
"valign": "top",
"x_offset": 60,
"y_offset": 52
}
],
"watermark_position": "bottom"
},
"video": {
"use": {
"steps": [
{ "name": "cover", "as": "image" },
{ "name": ":original", "as": "audio" }
]
},
"robot": "/video/merge",
"preset": "empty",
"ffmpeg": { "f": "mp4" },
"ffmpeg_stack": "v7"
},
"transcribed": {
"use": ":original",
"robot": "/speech/transcribe",
"speaker_labels": true,
"format": "json"
},
"captioned": {
"use": {
"steps": [
{ "name": "video", "as": "video" },
{ "name": "transcribed", "as": "subtitles" }
]
},
"robot": "/video/subtitle",
"subtitles_type": "burned",
"preset": "empty",
"style": "social",
"ffmpeg_stack": "v7",
"result": true,
"speaker_colors": ["FFD60A", "4CC9F0"]
}
}
}
Enregistrez cette configuration sous le nom speaker-captions.json et exécutez-la sur
n’importe quel fichier audio :
npx -y @transloadit/node assemblies create --steps speaker-captions.json -i podcast.mp3 -o out/
Pour une vidéo où des personnes apparaissent à l’écran, ignorez les quatre premiers Steps et utilisez
:original comme vidéo, comme dans
l’article sur les sous-titres pour les réseaux sociaux.
Commencer
Exécutez la commande ci-dessus sur l’un de vos enregistrements, ou collez les Steps dans un nouveau Template. Les pages 🤖 /speech/transcribe et 🤖 /video/subtitle répertorient tous les paramètres.
Audio et photo fournis par la NASA : Houston We Have a Podcast, épisode 441, « Reflections After Artemis II », et la photo d’Artemis II « Orion POV: Destination and Home ». La NASA ne cautionne pas Transloadit.
