Como gerar legendas, transcrição e capítulos para podcasts e vídeos do YouTube
Basta transcrever o episódio uma vez com a marcação de tempo por palavra. Com esse único resultado em mãos, você gera o arquivo SRT, o texto para a descrição do episódio, as legendas traduzidas e os capítulos. Como a API exige um arquivo enviado ou um link direto de mídia (e o link de um vídeo no YouTube é uma página web), use o áudio ou vídeo que você mesmo exportou.
Transcreva uma única vez
Exporte o áudio (MP3 ou M4A) ou o vídeo do episódio. Depois, faça o envio usando a função auxiliar do guia de edição de vídeo e peça a resposta em JSON:
{
"audio_url": "https://example.com/interview.mp3",
"model": "oracle",
"language": "auto",
"word_timestamps": true,
"output_format": "json"
}
Em entrevistas e mesas-redondas, passe include_diarization: true para identificar quem está falando em cada trecho.
Legendas em arquivo SRT
Junte as palavras para formar as linhas e suba o arquivo .srt no YouTube Studio ou no seu serviço de hospedagem de podcasts. No guia de SRT, você encontra o código e vê como funciona a saída SRT da própria API, que traz uma linha por palavra.
Legendas traduzidas
Você pode rodar um segundo trabalho com o mesmo arquivo usando translate_to (nos modelos Oracle) e output_format: "srt", ou passar o texto do primeiro resultado para o seu LLM traduzir. Fazer um trabalho separado para cada idioma de destino mantém as legendas sincronizadas com o áudio.
Transcrição para as notas do episódio
Use output_format: "txt" se quiser apenas texto puro, ou junte os campos text dos trechos do JSON com o nome de cada participante. Vale revisar antes de publicar, já que transcrições automáticas costumam errar nomes próprios, marcas e números.
Capítulos com marcação de tempo
Passe os trechos numerados para o LLM e peça que ele indique onde começa cada capítulo usando o número do trecho, nunca o tempo em si. Depois, seu código busca o tempo exato daquele trecho. Este prompt funciona bem em qualquer modelo:
Below is a podcast transcript, one line per segment: S<number> [start-end] text.
Pick 5 to 9 chapter starts. For each give the segment number and a title of at most six words.
Return JSON: [{"segment": 0, "title": "Intro"}]. The first chapter must be segment 0.
chapters.py
# chapters.py — YouTube chapter lines from (seconds, title) pairs
def stamp(seconds):
m, s = divmod(int(seconds), 60)
h, m = divmod(m, 60)
return f"{h}:{m:02}:{s:02}" if h else f"{m}:{s:02}"
def chapter_lines(chapters):
return "\n".join(f"{stamp(start)} {title}" for start, title in chapters)
print(chapter_lines([(0, "Intro"), (95, "Why captions matter"), (412, "Editing from a transcript")]))
Para o YouTube transformar os tempos da descrição em capítulos no vídeo, a lista precisa começar em 0:00, ter pelo menos três marcações em ordem crescente e cada capítulo deve durar no mínimo dez segundos.
Quanto custa
| Trabalho | Modelo | Custo |
|---|---|---|
| Episódio de uma hora, áudio limpo | base | US$ 0,48 |
| Episódio de uma hora, qualidade de produção com separação de vozes | oracle | US$ 1,44 |
| Legendas traduzidas, uma hora | oracle_mini | US$ 0,96 |
Cobramos por segundo, sem valor mínimo. Veja a tabela em /llms/pricing.md.
Perguntas e respostas
Como faço para transcrever um episódio de podcast?
Envie o arquivo de áudio ou a URL direta dele para POST /transcribe. Use output_format: "txt" para receber o texto puro, ou json se precisar dos tempos e da identificação de quem fala.
Posso passar um link do YouTube?
Não. A API exige um arquivo enviado ou o link de um arquivo de mídia, e a URL de um vídeo no YouTube é uma página da web. Use apenas áudios ou vídeos que pertençam a você ou que você tenha o direito de usar.
Como coloco legendas no YouTube?
Gere o arquivo SRT seguindo o guia de SRT e faça o upload na aba de legendas do vídeo lá no YouTube Studio.
Como faço para criar capítulos?
Passe a transcrição com os trechos numerados para o seu LLM e peça os números de onde cada capítulo começa. Depois, converta esses números em tempos no seu código e cole a lista na descrição do vídeo.
Consigo gerar legendas em vários idiomas?
Sim. Basta rodar uma tarefa para cada idioma usando translate_to com um dos modelos Oracle.