Critérios de Sucesso WCAG · Level AA

WCAG 1.2.4: Legendas (ao vivo)

A WCAG 1.2.4 exige que todo o conteúdo de áudio ao vivo em mídias sincronizadas — como webinars, transmissões ao vivo e broadcasts — seja acompanhado por legendas em tempo real. Isso garante que pessoas surdas e com deficiência auditiva possam acessar o conteúdo falado à medida que ele acontece, em tempo real.

  • Level AA

O que Esta Regra Significa

\n

WCAG 1.2.4 (Legendas — Conteúdo ao vivo) exige que sejam fornecidas legendas para todo conteúdo de áudio ao vivo em mídia sincronizada. Mídia sincronizada é definida como conteúdo de áudio ou vídeo que é sincronizado com outro formato de apresentação de informações ou com componentes interativos baseados em tempo, como uma webcast, transmissão ao vivo ou transmissão em tempo real na web.

\n

Na prática, isso significa que qualquer evento ao vivo publicado em um site ou aplicação web que inclua áudio — uma coletiva de imprensa transmitida em um site de notícias, uma transmissão geral para toda a empresa, uma audiência governamental, uma aula online ao vivo ou uma transmissão de comentários esportivos — deve exibir legendas em tempo real que reflitam com precisão o que está sendo falado à medida que ocorre.

\n

O que conta como aprovação: Uma transmissão ao vivo atende a este critério quando legendas em tempo real, precisas e sincronizadas estão visíveis para o usuário durante a reprodução. As legendas devem representar todos os diálogos e informações relevantes de áudio não verbal (como "[aplausos]" ou "[som de alarme]"). Abordagens comuns incluem CART (Communication Access Realtime Translation) fornecido por um profissional de legendagem, legendas de reconhecimento automático de fala (ASR) de um serviço qualificado de legendagem ao vivo ou integrações de terceiros, como as oferecidas por plataformas de streaming.

\n

O que conta como falha: Uma transmissão ao vivo falha neste critério quando não há legendas disponíveis, quando as legendas não estão sincronizadas com o áudio falado, quando as legendas omitem partes significativas do diálogo ou quando a precisão das legendas é tão ruim que a compreensão fica gravemente prejudicada. Fornecer uma transcrição depois do fato não atende a este requisito — as legendas devem estar disponíveis ao vivo, em tempo real.

\n

Exceções oficiais: As WCAG definem uma exceção a esta regra: mídias que são, elas próprias, uma alternativa em mídia para texto, e que estão claramente rotuladas como tal, estão isentas. Por exemplo, se você publicar uma transcrição em texto detalhada de uma entrevista e também fornecer uma versão em áudio ao vivo do mesmo conteúdo, explicitamente rotulada como uma alternativa em áudio ao texto, as legendas podem não ser estritamente exigidas. No entanto, essa exceção é restrita e raramente aplicável na prática.

\n

O critério se aplica a toda mídia sincronizada publicada na web — independentemente de o vídeo ter sido pré-produzido ou ser realmente ao vivo. Uma reprise de webinar pré-gravado transmitida como se fosse ao vivo ainda se enquadra em 1.2.3 ou 1.2.5, mas uma transmissão genuinamente em tempo real se enquadra diretamente em 1.2.4.

\n\n

Por Que Isso Importa

\n

Aproximadamente 430 milhões de pessoas no mundo têm perda auditiva incapacitante, de acordo com a Organização Mundial da Saúde, e esse número deve subir para mais de 700 milhões até 2050. Para pessoas surdas e com deficiência auditiva, legendas em tempo real não são uma conveniência — são o meio principal ou único de acessar conteúdo de áudio em um contexto ao vivo. Sem legendas, essas pessoas são totalmente excluídas de participar ou compreender qualquer evento de mídia ao vivo.

\n

Além da surdez e da perda auditiva, legendas ao vivo beneficiam um público muito mais amplo. Usuários em ambientes barulhentos — aeroportos, escritórios abertos, transporte público — podem não conseguir usar áudio. Usuários assistindo em ambientes silenciosos sem fones de ouvido, ou usuários que silenciaram seus dispositivos, dependem de legendas para acompanhar. Pessoas que não são falantes nativos frequentemente consideram as legendas indispensáveis para a compreensão, especialmente quando os palestrantes usam vocabulário complexo, sotaques ou jargão técnico. Diferenças cognitivas e de processamento de linguagem também podem tornar as legendas essenciais para uma compreensão precisa.

\n

Considere um cenário concreto: um município na Turquia transmite ao vivo uma reunião da câmara municipal em seu site oficial. Uma moradora que é surda quer acompanhar o debate sobre mudanças de zoneamento em seu bairro. Sem legendas em tempo real, essa moradora é completamente excluída da participação cívica. O mesmo se aplica a um estudante surdo que participa de uma aula online ao vivo em um sistema de gestão de aprendizagem de uma escola particular, ou a um cliente tentando acompanhar um webinar ao vivo de anúncio de produto de um banco.

\n

Do ponto de vista prático, a infraestrutura de legendagem ao vivo também produz uma transcrição que pode ser indexada por mecanismos de busca, melhorando a capacidade de descoberta do conteúdo em vídeo. Organizações que investem em legendagem ao vivo frequentemente descobrem que o artefato de transcrição se torna um recurso valioso para documentação pós-evento, resumos e pesquisa em arquivos.

\n\n

Regras Relacionadas do Axe-core

\n

WCAG 1.2.4 exige testes manuais. Nenhuma regra automatizada do axe-core pode detectar de forma confiável a presença ou a qualidade de legendas ao vivo, e essa é uma distinção importante a ser entendida ao planejar sua estratégia de auditoria de acessibilidade.

\n
    \n
  • Teste manual obrigatório — presença de legendas ao vivo: Ferramentas automatizadas como o axe-core podem analisar o DOM em busca da presença de um elemento <track> com kind='captions' em um elemento <video>, mas transmissões ao vivo quase nunca são entregues por meio de um simples elemento HTML <video> com um <track>. Elas normalmente usam formatos de taxa de bits adaptativa (HLS, DASH) entregues por players baseados em JavaScript, como Video.js, JW Player ou players nativos de plataforma. Esses players renderizam legendas dinamicamente de maneiras que o axe-core não consegue inspecionar. Uma ferramenta não pode assistir a uma transmissão ao vivo em tempo real, avaliar a precisão das legendas, medir o atraso de sincronização ou determinar se uma sobreposição de legendas está realmente refletindo o conteúdo falado ou é um espaço reservado estático.
  • \n
  • Teste manual obrigatório — qualidade e precisão das legendas: Mesmo que uma ferramenta automatizada pudesse detectar que existe um feed de legendas, ela não teria como avaliar se as legendas são precisas, completas ou sincronizadas em um grau aceitável. Legendas produzidas por CART e legendas automáticas de baixa qualidade podem ambas aparecer como "legendas presentes" para uma ferramenta, mas apenas uma delas atende à WCAG 1.2.4. A revisão humana durante um evento ao vivo é a única forma confiável de verificar a conformidade.
  • \n
  • Teste manual obrigatório — acessibilidade das legendas dentro do player: Ferramentas automatizadas geralmente não conseguem determinar se os controles de legendas dentro de um player de mídia personalizado são acessíveis por teclado, se a exibição das legendas pode ser redimensionada ou personalizada pelo usuário, ou se a estilização das legendas atende às necessidades dos usuários. Esses aspectos exigem testes práticos com navegação real por teclado e uso de leitor de tela.
  • \n
\n\n

Como Testar

\n
    \n
  1. Identifique toda mídia ao vivo na página: Revise a página em busca de qualquer transmissão de vídeo ou áudio ao vivo. Verifique players incorporados, iframes ou componentes de mídia carregados dinamicamente. Observe se o conteúdo é realmente ao vivo (transmissão em tempo real) ou pré-gravado. Apenas conteúdo de áudio genuinamente ao vivo em mídia sincronizada se enquadra em 1.2.4.
  2. \n
  3. Execute uma varredura automatizada com axe DevTools ou Lighthouse: Abra o axe DevTools no Chrome DevTools e execute uma varredura de página inteira. Embora o axe não possa validar legendas ao vivo, ele pode sinalizar problemas relacionados, como ausência de aria-label em controles do player de mídia, botões de reproduzir/pausar inacessíveis ou ausência de gerenciamento de foco. Registre quaisquer problemas sinalizados como evidência de apoio, mas entenda que um relatório limpo do axe não confirma conformidade com 1.2.4.
  4. \n
  5. Verifique manualmente a disponibilidade de legendas durante um evento ao vivo: Acesse a transmissão ao vivo durante uma transmissão ativa. Verifique se as legendas são exibidas. Se o player tiver um botão de alternância de legendas (botão CC), ative-o e confirme que as legendas aparecem e são atualizadas quase em tempo real à medida que a pessoa fala. Confirme que o atraso das legendas é aceitável — normalmente não mais que alguns segundos para CART, ou um pouco mais para ASR.
  6. \n
  7. Avalie a precisão das legendas: Ouça o áudio enquanto lê as legendas. Verifique se há palavras perdidas, erros sistemáticos ou omissões significativas. As legendas não precisam ser literais, mas devem transmitir o significado completo do conteúdo falado. Observe a identificação de quem fala se houver vários palestrantes — as legendas devem indicar quem está falando quando isso não for óbvio.
  8. \n
  9. Teste com NVDA + Firefox: Navegue até o player de mídia usando a tecla Tab. Verifique se todos os controles do player, incluindo o botão de legendas, são alcançáveis e operáveis por teclado. Confirme que o NVDA anuncia o estado do botão de legendas (ligado/desligado). Ative as legendas e verifique se o texto das legendas aparece em um elemento do DOM que o NVDA possa ler se o usuário tabular até o player ou ao redor dele.
  10. \n
  11. Teste com VoiceOver + Safari (macOS ou iOS): Use gestos do VoiceOver ou comandos de teclado para navegar pelo player. Verifique se o botão de legendas é anunciado e operável. Confirme que as mudanças no texto das legendas são expostas adequadamente dentro da região acessível do player.
  12. \n
  13. Teste com JAWS + Chrome: Navegue até os controles do player usando Tab. Verifique se o JAWS lê todos os rótulos dos controles. Confirme se o botão de legendas é identificado como um botão com um rótulo e estado apropriados. Ative as legendas e verifique se a exibição das legendas é atualizada conforme esperado.
  14. \n
  15. Verifique a personalização da exibição das legendas: Verifique se o player permite que os usuários redimensionem o texto das legendas, alterem cores ou ajustem o contraste. Embora isso não seja estritamente exigido por 1.2.4, é um ponto de avaliação de boa prática e relevante para os critérios 1.4 das WCAG.
  16. \n
\n\n

Como Corrigir

\n

Transmissão ao vivo sem trilha de legendas — Incorreto

\n
<!-- A live HLS stream embedded with no caption configuration -->\n<video id='live-player' controls autoplay>\n  <source src='https://stream.example.com/live/event.m3u8' type='application/x-mpegURL'>\n  <!-- No <track> element and no caption configuration in the player -->\n</video>
\n

Transmissão ao vivo com trilha de legendas CART integrada — Correto

\n
<!-- Live stream using Video.js with a live WebVTT caption track fed by a CART service.\n     The src for the track points to a live caption endpoint that updates in real time. -->\n<video\n  id='live-player'\n  class='video-js vjs-default-skin'\n  controls\n  autoplay\n  aria-label='Live conference stream with real-time captions'>\n  <source src='https://stream.example.com/live/event.m3u8' type='application/x-mpegURL'>\n  <track\n    kind='captions'\n    src='https://captions.example.com/live/event.vtt'\n    srclang='tr'\n    label='Turkish captions'\n    default>\n</video>\n<script>\n  var player = videojs('live-player');\n  // Enable captions by default for accessibility\n  player.ready(function() {\n    player.textTracks()[0].mode = 'showing';\n  });\n</script>
\n

Transmissão ao vivo incorporada de uma plataforma com legendas desativadas no embed — Incorreto

\n
<!-- YouTube live embed with closed captions explicitly disabled via cc_load_policy=0.\n     This removes the user's ability to enable captions, causing a 1.2.4 failure. -->\n<iframe\n  src='https://www.youtube.com/embed/live_stream?channel=CHANNEL_ID&cc_load_policy=0'\n  title='Company all-hands live stream'\n  allowfullscreen>\n</iframe>
\n

Transmissão ao vivo incorporada de uma plataforma com legendas ativadas — Correto

\n
<!-- YouTube live embed with closed captions enabled by default (cc_load_policy=1).\n     The platform's native caption infrastructure is used, which supports live auto-captions\n     and human-reviewed CART when configured in the YouTube Studio settings.\n     The host page also provides a direct link to the captioned stream for users\n     who cannot interact with the iframe. -->\n<iframe\n  src='https://www.youtube.com/embed/live_stream?channel=CHANNEL_ID&cc_load_policy=1'\n  title='Company all-hands live stream with captions enabled'\n  allowfullscreen>\n</iframe>\n<p>\n  <a href='https://www.youtube.com/watch?v=LIVE_VIDEO_ID'>\n    Watch with captions directly on YouTube\n  </a>\n</p>
\n

Player personalizado com um botão de legendas que não é acessível por teclado — Incorreto

\n
<!-- Caption toggle implemented as a non-interactive <div>.\n     Keyboard users and screen reader users cannot activate this control. -->\n<div class='player-controls'>\n  <div class='cc-button' onclick='toggleCaptions()'>CC</div>\n</div>
\n

Player personalizado com um botão de legendas acessível — Correto

\n
<!-- Caption toggle implemented as a <button> with an explicit label and\n     ARIA pressed state so keyboard and screen reader users can discover\n     and operate it. The state updates dynamically when captions are toggled. -->\n<div class='player-controls'>\n  <button\n    class='cc-button'\n    id='captions-toggle'\n    aria-pressed='false'\n    aria-label='Toggle captions'\n    onclick='toggleCaptions(this)'>\n    CC\n  </button>\n</div>\n<script>\n  function toggleCaptions(btn) {\n    var isActive = btn.getAttribute('aria-pressed') === 'true';\n    btn.setAttribute('aria-pressed', String(!isActive));\n    // logic to show/hide the caption track\n  }\n</script>
\n\n

Erros Comuns

\n
    \n
  • Fornecer uma transcrição pós-evento em vez de legendas em tempo real: Publicar uma transcrição em texto de um evento ao vivo depois que ele termina não satisfaz 1.2.4. As legendas devem estar disponíveis simultaneamente ao áudio ao vivo, permitindo que pessoas surdas acompanhem o conteúdo em tempo real junto com pessoas ouvintes sem deficiência visual.
  • \n\n

    (Content truncated due to token limit — please retry this article.)