Como anotar legendas do YouTube
Como descarregar legendas com o yt-dlp e anotá-las no Potato, o que as legendas automáticas permitem e não permitem, como lidar com o vídeo e o que verificar antes de redistribuir conteúdos.
Descarregue as legendas com o yt-dlp e aponte o Potato para os ficheiros. O primeiro ponto a saber: as legendas geradas automaticamente não têm pontuação nem etiquetas de falante, e as suas quebras de linha não significam nada, o que limita o que pode anotar com sentido. O Potato lê todos os formatos de legenda que o yt-dlp produz. Consulte Formatos de transcrição para a lista completa.
As plataformas de vídeo são uma fonte ampla e cómoda de fala natural. A legendagem transforma essa fala em texto, e o texto é pequeno, fácil de mover e fácil de anotar. O problema é que nem todas as legendas são o mesmo tipo de objeto, e tratá-las como se fossem é onde a maioria dos projetos de anotação sobre legendas se desencaminha.
Como descarrego as legendas?
O yt-dlp obtém legendas com ou sem o conteúdo:
# Human-written subtitles, if the uploader provided any
yt-dlp --write-subs --sub-langs en --skip-download <URL>
# Auto-generated captions
yt-dlp --write-auto-subs --sub-langs en --sub-format vtt --skip-download <URL>O Potato lê vtt, srt, json3, ttml e as variantes srv1, srv2 e srv3, portanto qualquer --sub-format que escolha será analisado. Escolha em função do que quer preservar: json3 mantém os tempos por palavra, enquanto WebVTT e SubRip são mais fáceis de ler e editar à mão.
Qual é a diferença entre legendas humanas e automáticas?
Num editor de texto parecem-se, e como material de anotação comportam-se de forma muito diferente:
| Legendas humanas | Legendas automáticas | |
|---|---|---|
| Pontuação | Sim | Não, ou pouco fiável |
| Fronteiras de frase | Significativas | Arbitrárias |
| Falantes | Às vezes, através de etiquetas <v Name> | Nunca |
| Tempos por palavra | Não | Sim, em json3 |
| Literalidade | Muitas vezes condensadas para leitura | Mais próximas do que foi dito |
Nenhuma é melhor em termos absolutos. As legendas humanas leem-se bem mas são editadas para legibilidade, por isso cortam hesitações, comprimem repetições e às vezes reescrevem uma frase inteira. As automáticas estão mais perto do literal, que é o que quer para qualquer coisa sobre como as pessoas falam de facto, mas chegam como um fluxo sem pontuação.
O que posso anotar em legendas automáticas?
Não desenhe um esquema de anotação ao nível da frase sobre legendas automáticas. As suas fronteiras de bloco caem onde a janela de legenda se encheu, não onde uma frase terminou. Um bloco num ficheiro de legendas automáticas é um artefacto de apresentação, não uma unidade linguística. Peça aos anotadores que avaliem frases e cada um escolherá em silêncio fronteiras diferentes, e os seus números de concordância acabarão por medir isso em vez daquilo que lhe interessava.
Duas opções viáveis:
- Anote os blocos de legenda tal como estão. Etiquete cada bloco com o que se lhe aplicar e aceite que a unidade é arbitrária mas consistente. Serve para tema, presença de um fenómeno, ou qualquer coisa que se possa julgar sobre um fragmento.
- Volte a segmentar a montante. Passe um modelo de restauro de pontuação ou um sistema de reconhecimento de fala que pontue, e realinhe. Mais trabalho, mas obtém unidades reais.
Se tiver legendas humanas, este problema desaparece quase por completo. As fronteiras foram colocadas por alguém a ler, portanto costumam respeitar as orações.
E o vídeo?
As legendas são pequenas e fáceis de redistribuir. O vídeo normalmente não é. Três opções:
# Media hosted somewhere your annotators can reach
potato transcripts ./captions --media-url-prefix https://cdn.example.org/video -o data/talks.json
# Media downloaded locally as audio only
yt-dlp -f 'ba' -x --audio-format mp3 -o './audio/%(id)s.%(ext)s' <URL>
potato transcripts ./captions --media-dir ./audio -o data/talks.jsonA terceira opção é não ter conteúdo nenhum. As transcrições sem áudio anotam-se bem; os anotadores leem em vez de ouvir. Se for esse o plano, diga-o nas instruções, porque de outra forma os anotadores vão assumir que a falta de leitor é um erro e reportá-lo como tal.
Warning: Verifique os seus direitos antes de redistribuir seja o que for que não tenha criado. Descarregar legendas ou conteúdos para a sua própria investigação é uma questão diferente de servir esse conteúdo a um grupo de anotadores, e aí pesam os termos da plataforma, os direitos de autor e as regras da sua instituição. Resolva isto antes de montar o fluxo de trabalho, não depois.
Como monto a tarefa?
O conversor escreve um ficheiro de dados com a transcrição já normalizada:
potato transcripts ./captions --media-dir ./audio -o data/talks.json{
"id": "talk_01",
"conversation": {
"audio": "audio/talk_01.mp3",
"turns": [
{"turn_id": "t0", "speaker": null, "start": 0.0, "end": 4.2,
"text": "so the thing about caption windows is"}
]
}
}speaker: null é o que uma legenda automática lhe dá. Esses turnos aparecem como Unassigned com um seletor, para que os anotadores os atribuam enquanto ouvem.
As legendas automáticas não trazem falantes, por isso cada bloco fica como Unassigned até um anotador escolher um
annotation_task_name: "Talk Annotation"
task_dir: .
data_files:
- data/talks.json
item_properties:
id_key: id
text_key: conversation
instance_display:
fields:
- key: conversation
type: audio_dialogue
label: "Captions"
span_target: true
display_options:
show_timestamps: true
allow_speaker_assignment: auto
annotation_schemes:
- annotation_type: radio
name: cue_topic
description: "What is this caption window about?"
labels: [setup, argument, example, aside]
turn_level: true
turn_binding:
field: conversationturn_level: true associa a pergunta a cada bloco em vez do vídeo inteiro, que é a unidade certa quando os blocos são tudo o que tem. Execute:
python potato/flask_server.py start config.yaml -p 8000Também pode dispensar por completo o conversor e apontar um ficheiro de dados para os ficheiros de legendas em disco. Consulte Como anotar transcrições do Whisper, onde o resto do fluxo é igual.
Leituras adicionais
- Formatos de transcrição, todos os formatos de legenda e transcrição suportados
- Como anotar transcrições do Whisper, a versão deste fluxo para saída de reconhecimento de fala
- Ingestão de formatos de transcrição, um design executável com seis formatos lado a lado
- Anotação de vídeo, para anotar o vídeo em vez das suas legendas
- Desenhar formatos de dados para anotação
- Timed Text Markup Language, a norma de legendagem de difusão que o Potato também lê