O problema que resolve
Pesquisadores que estudam língua falada, alternância de código ou idiomas com poucos recursos têm dificuldade para encontrar dados naturais e conversacionais em quantidade. Muitos vídeos não têm legendas, e as que existem misturam fontes humanas e automáticas de qualidade variável. As equipes precisam de um pipeline consistente que lide com muitos idiomas e registre a origem de cada transcrição.
O que incluir na primeira versão
- Detecção dos idiomas de legenda disponíveis em cada vídeo
- Reconhecimento de fala por IA em 99 idiomas para vídeos sem legenda
- Suporte a alternância de código para fala que mistura idiomas
- Timestamps por palavra para alinhamento
- Metadados de idioma e origem da legenda para cada transcrição
Como criar, passo a passo
- 01
Encontre vídeos candidatos
Resolva canais ou playlists conhecidos por trazer seus idiomas alvo e chame /transcripts/{video_id}/languages para ver quais faixas de legenda existem.
- 02
Use as legendas quando houver
Busque as legendas manuais quando existirem, já que costumam ser as mais precisas.
- 03
Preencha as lacunas com reconhecimento de fala
Para vídeos sem legenda, solicite ASR com o idioma definido ou detectado automaticamente, e ative codeSwitching para fala com idiomas misturados.
- 04
Armazene com dados de alinhamento
Solicite format.words para obter timestamps por palavra e armazene o idioma e a origem de cada transcrição junto com o texto.
Código inicial
Esta ideia segue o padrão "Receita 3: carregue uma playlist inteira em uma base de conhecimento". Use seus próprios canais, prompts e armazenamento.
import requests
API = "https://www.youtubetranscript.dev/api/v2"
HEADERS = {"Authorization": "Bearer yt_sk_live_YOUR_KEY"}
playlist = requests.post(f"{API}/playlists/resolve", headers=HEADERS,
json={"playlist_url": "https://www.youtube.com/playlist?list=PLAYLIST_ID",
"limit": 100}).json()
ids = [v["video_id"] for v in playlist["items"]]
batch = requests.post(f"{API}/batch", headers=HEADERS, json={
"video_ids": ids,
"format": {"timestamp": True, "paragraphs": True},
}).json()
# Large batches run async: poll GET /batch/{batch_id} until status is "completed"
for r in batch.get("results", []):
if r["status"] == "completed":
for p in r["data"]["transcript"].get("paragraphs") or []:
store(video_id=r["video_id"], start=p["start"], text=p["text"]) # your vector DBPor que vale a pena criar
Laboratórios e equipes de IA ganham dados de avaliação e pesquisa em idiomas que seriam caros de coletar de outra forma. Datasets limpos e bem documentados para idiomas ou domínios específicos também têm valor para quem desenvolve modelos.
Erros a evitar
- Presumir que legendas automáticas são a verdade absoluta: identifique as fontes e valide uma amostra manualmente.
- Misturar dialetos sem metadados: registre o canal e a região para que os resultados possam ser interpretados.
- Esquecer o licenciamento: verifique os termos da plataforma e os direitos autorais antes de redistribuir qualquer dataset.
Dúvidas sobre esta ideia
Quantos idiomas o reconhecimento de fala suporta?
O reconhecimento de fala por IA suporta 99 idiomas, com detecção automática de idioma e alternância de código opcional para fala com idiomas misturados.
Consigo timestamps por palavra?
Sim. Solicite format.words para receber o tempo de cada palavra, o que é útil para alinhamento e pesquisa fonética.
Posso redistribuir um dataset construído a partir do YouTube?
Depende dos termos do YouTube, da lei de direitos autorais e das políticas da sua instituição. Muitos pesquisadores compartilham os IDs dos vídeos e o código, e não as transcrições em si.