Transcripciones que saben quién habla
Las entrevistas, los pódcast, los paneles de discusión y las reuniones tienen más de una voz. Una transcripción que lo reúne todo en un solo bloque de texto te obliga a adivinar quién dijo qué, y los subtítulos que pasan rápidamente sin indicar quién habla son aún más difíciles de seguir.
🤖 /speech/transcribe ahora etiqueta a quien habla, y todos los resultados lo reflejan: una transcripción de texto que se lee como un guion, subtítulos con etiquetas de voz estándar y subtítulos para redes sociales que asignan un color propio a cada hablante.
Un clip del episodio 441 de Houston We Have a Podcast, de la NASA, creado por una sola Assembly únicamente a partir del audio: el presentador en amarillo y el astronauta de Artemis II en cian. Servido desde Transloadit Storage.
Un solo comando
npx -y @transloadit/node speech transcribe --speaker-labels -i interview.mp3 -o interview.txt
Para el clip anterior, interview.txt muestra lo siguiente:
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.
Añade --max-speakers 2 cuando sepas cuántas personas hablan, y
--format para elegir otro tipo de salida.
Todos los formatos identifican al hablante
textgenera un párrafo por turno de habla, como en el ejemplo anterior.webvttencierra cada bloque en un span de voz estándar, como<v Speaker 1>, para que los reproductores y los editores de subtítulos puedan nombrar a cada hablante o aplicarle un estilo.srtno tiene etiqueta de voz, por lo que inicia el bloque conSpeaker 2:cada vez que cambia el turno de habla.jsonetiqueta cada palabra y añade un segmento por turno de habla. Úsalo para crear tu propia vista.
Un bloque de subtítulos nunca incluye a dos hablantes. Las etiquetas de hablante provienen de los
proveedores aws y gcp;
omite provider y Transloadit elegirá uno que las admita.
Un color por hablante
Los subtítulos incrustados con 🤖 /video/subtitle ahora pueden
usar un color propio para cada hablante. Pasa el JSON con etiquetas de hablante de
/speech/transcribe y una lista de speaker_colors:
la palabra activa se ilumina con el color de su hablante, y un bloque de subtítulos nunca se
extiende hasta las palabras del siguiente hablante.
El video del inicio se creó con una sola Assembly, únicamente a partir del archivo de audio. La Assembly importa una foto de la NASA, dibuja la forma de onda, coloca ambas en una carátula, convierte la carátula y el audio en un video e incrusta los subtítulos:
{
"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"]
}
}
}
Guarda el ejemplo como speaker-captions.json y ejecútalo con cualquier archivo de audio:
npx -y @transloadit/node assemblies create --steps speaker-captions.json -i podcast.mp3 -o out/
Para un video con personas en pantalla, omite los primeros cuatro Steps y usa
:original como video, como en la
publicación sobre subtítulos para redes sociales.
Primeros pasos
Ejecuta el comando anterior con una grabación propia, o pega los Steps en un nuevo Template. Las páginas de 🤖 /speech/transcribe y 🤖 /video/subtitle enumeran todos los parámetros.
Audio y foto cortesía de la NASA: Houston We Have a Podcast, episodio 441, «Reflections After Artemis II», y la foto de Artemis II «Orion POV: Destination and Home». La NASA no avala a Transloadit.
