Legendas estilo redes sociais com a palavra falada em destaque
A maioria dos vídeos curtos nas redes sociais é assistida sem som, então são as legendas que contam a história. Legendas simples, com texto fino e uma frase inteira na parte de baixo do quadro, são fáceis de ignorar ao rolar a tela. As legendas que prendem a atenção são diferentes: poucas palavras por vez, grandes e em negrito, com a palavra que está sendo falada se acendendo.
Até agora, para conseguir esse visual, você precisava de um editor de vídeo ou de uma ferramenta de legendagem separada. Agora um só comando resolve: faça o upload de um vídeo e receba-o de volta com essas legendas embutidas.
Clipe com Kevin, cofundador da Transloadit, legendado pelo comando abaixo e servido a partir do Transloadit Storage. Dê play com som para comparar.
Um só comando
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 é um Template pronto: ele transcreve o vídeo com
🤖 /speech/transcribe e embute as legendas com
🤖 /video/subtitle. Além do vídeo legendado, out/ recebe a
transcrição em JSON, com uma marca de tempo para cada palavra, e em SRT, para que você também
possa oferecer legendas que seus espectadores consigam desativar.
Se você omitir --field style=social, recebe legendas simples:

Acerte a grafia da sua marca
O reconhecimento de fala conhece palavras comuns, não os nomes dos seus produtos. Sem ajuda, o
clipe acima voltou como “co-founder of Transloaded”. --field vocabulary=Transloadit informa à transcrição
as palavras às quais ela deve ficar atenta. Separe vários termos com vírgulas, como em
vocabulary=Transloadit,Uppy,tus. Toda correspondência completa, sem diferenciar maiúsculas de minúsculas,
também volta com a grafia que você informou, então “transloadit” vira “Transloadit”.
As dicas de vocabulário funcionam com o provedor padrão e com "provider": "gcp". A AWS só aceita
vocabulários preparados com antecedência, então a combinação com "provider": "aws" retorna um
erro claro em vez de ignorar suas palavras silenciosamente.
O que o estilo social faz
- Poucas palavras por vez. Normalmente, as legendas contêm até três palavras. Expressões curtas podem ficar juntas, e a última palavra de uma frase pode se juntar à legenda anterior, permitindo no máximo uma palavra extra. Uma legenda termina antes de atingir o limite normal de palavras quando uma frase acaba ou quando há uma pausa de mais de 0,4 segundo, para que as legendas sigam o ritmo da fala, e não os segmentos do provedor de transcrição. Uma palavra final em inglês, como “by” ou “to”, passa para a legenda seguinte quando possível: você recebe “YOU’RE FREAKED OUT” e depois “BY MY ROBOT”, e não uma legenda que termina em “by”.
- A palavra falada se acende. A palavra ativa fica amarela e continua destacada durante pausas curtas até a próxima palavra começar. As outras palavras ficam no lugar, então a linha não pula enquanto você lê.
- Legível em qualquer fundo. Poppins ExtraBold em maiúsculas no terço inferior, com contorno grosso e sombra suave.
- Funciona em vídeo vertical, quadrado e horizontal. Com o dimensionamento automático padrão,
as legendas em JSON diminuem ou quebram para uma segunda linha para caber no quadro, sem partir
nenhuma palavra. Definir
font_sizedesativa esse ajuste automático. - Um efeito pop curto. Cada legenda cresce de 85% até o tamanho total ao longo de 120 milissegundos quando aparece.

Deixe com a sua cara
O Template aceita estes campos:
highlight_colordefine a cor da palavra ativa (padrãoFFD60A).font_color,font_size,border_colorepositionfuncionam como nas legendas simples.provider,source_language,target_languageevocabularycontrolam a transcrição.
O provedor padrão detecta o idioma falado automaticamente. Use target_language como dica
opcional do idioma falado, por exemplo german. Na AWS e no GCP, use source_language em vez
disso, com um código de idioma como de-DE. Nenhum dos dois campos traduz a fala.
Integre ao seu próprio Template
Para adicionar legendas ao seu próprio Template, encadeie estes dois Steps em um pipeline existente, por exemplo depois de um upload pelo Uppy ou antes da codificação para 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 aceita como legendas o JSON com marcas de tempo gerado por /speech/transcribe. O
destaque de palavras, o agrupamento e as maiúsculas precisam desse JSON. Legendas SRT e VTT também
recebem a fonte e o tamanho do estilo social, mas mantêm as próprias linhas e a própria
temporização. Arquivos ASS mantêm os próprios estilos. Com
max_words_per_caption, você define o número máximo de palavras por legenda que serve de meta, com
os ajustes de fraseado do estilo social descritos acima. "preset": "empty" mantém o
contêiner da entrada, então um MP4 volta como MP4.
Comece agora
Execute o comando acima com o seu próprio vídeo ou experimente os Steps no Template Editor. A documentação do 🤖 /video/subtitle lista todos os parâmetros.
