Legenda VTT para vídeo na web
Gere o arquivo WebVTT (.vtt) do seu áudio ou vídeo direto pela API: a fala é reconhecida, dividida em blocos e sincronizada no formato que os players de site entendem nativamente. É a legenda para vídeo na web — plataformas de curso, portais e o elemento de vídeo do HTML5.
Rode online
Rode nos nossos servidores com a sua conta. As ferramentas grátis rodam no seu navegador; esta aqui é descontada do seu saldo do KIT pelo preço acima.
VTT e SRT: qual é a diferença
Os dois carregam o mesmo conteúdo — blocos de texto com tempo de entrada e saída —, mas servem a mundos diferentes. O SRT domina editores de vídeo e uploads em redes sociais; o WebVTT é o formato que o navegador entende sem plugin: é ele que a tag de vídeo do HTML5 espera na faixa de legendas. Se o destino do seu vídeo é um site, uma plataforma de cursos ou um player embutido, o VTT é o arquivo certo.
Como gerar o seu .vtt
Envie o áudio (ou a trilha do vídeo) pela API em MP3, M4A, WAV ou OGG — até 200 MB e 180 minutos por arquivo. A tarefa devolve o WebVTT pronto: cabeçalho, blocos e tempos no padrão do formato. Hospede o arquivo junto com o vídeo, aponte a faixa de legenda para ele e pronto: o navegador exibe as legendas, e o espectador liga e desliga quando quiser.
Acessibilidade que também é obrigação
Legenda em vídeo de site não é só cortesia: diretrizes de acessibilidade como as WCAG — referência também para o setor público brasileiro — pedem alternativa em texto para conteúdo falado. Plataformas de ensino a distância, portais corporativos e órgãos que publicam vídeo ganham conformidade e alcance: quem assiste no ônibus sem fone, quem tem baixa audição e quem só prefere ler acompanham do mesmo jeito.
Preço por minuto de áudio
US$ 0,002 por chamada mais US$ 0,0055 por minuto processado, sempre em dólares americanos. Uma videoaula de 25 minutos sai por menos de US$ 0,15; uma biblioteca com 100 aulas dessas, por cerca de US$ 14 — pago uma vez, sem assinatura. Para catálogos grandes, dá para automatizar: cada vídeo novo que entra no seu sistema dispara a chamada e recebe o .vtt de volta.
Casos de uso
Plataforma de cursos com legenda em tudo
Uma edtech de Belo Horizonte processa cada aula nova automaticamente: o vídeo sobe, a API devolve o .vtt e o player já exibe a legenda — requisito que clientes corporativos cobram em contrato.
Portal de notícias com vídeo acessível
Os vídeos da redação ganham legenda antes de ir ao ar; quem navega no celular com o som desligado continua consumindo o conteúdo até o fim.
Vídeo institucional no site da empresa
A TecnoSul embutiu o vídeo de apresentação no site com faixa de legenda VTT: mais profissional e acessível para qualquer visitante, em qualquer situação de som.
Perguntas frequentes
Onde coloco o arquivo .vtt no meu site?
Hospede o .vtt junto do vídeo e referencie na faixa de legendas do player — no HTML5, o elemento track. Qualquer player moderno de web aceita.
Qual a diferença prática entre VTT e SRT?
Conteúdo igual, destino diferente: VTT para navegador e players de site; SRT para editores de vídeo e redes sociais. O KIT gera os dois — escolha pela plataforma de destino.
Posso estilizar a legenda?
O WebVTT aceita marcações simples e o visual final é controlado pelo CSS do seu player. O arquivo gerado sai limpo, pronto para receber o estilo do seu site.
Quanto custa legendar um catálogo de 50 vídeos de 20 minutos?
Cerca de US$ 5,60: 50 chamadas × (US$ 0,002 + 20 × US$ 0,0055). Pagamento por uso em dólares americanos, sem mensalidade.
Meus vídeos ficam armazenados por aí?
O áudio enviado serve para gerar a legenda que você baixa. Precisa de detalhes de tratamento de dados para o seu compliance? Escreva para [email protected].
Preciso assinar plano?
Não. Sem cadastro e sem plano: você paga cada lote pelo PayPal e usa. Transparência total: ainda não aceitamos Pix.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/audio/subtitles-vtt \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"audio":"https://ejemplo.com/audio.mp3"}'const res = await fetch("https://api.kit.forhosting.com/audio/subtitles-vtt", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"audio": "https://ejemplo.com/audio.mp3"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/subtitles-vtt",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"audio": "https://ejemplo.com/audio.mp3"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/subtitles-vtt", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"audio":"https://ejemplo.com/audio.mp3"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"audio":"https://ejemplo.com/audio.mp3"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/subtitles-vtt", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"audio": "https://ejemplo.com/audio.mp3"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.subtitles_vtt",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 200 |
max_minutes | 180 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
422 | task_failed | A tarefa falhou do nosso lado. Você não paga nada por ela. |