ADR-0017: Voz DESLIGADA por padrão - política de segurança
- Status: Accepted
- Data: 2026-05-27 (retroativo - a voz foi entregue na v2.0.0)
- Responsáveis pela decisão: Waldemar Szemat
Contexto e definição do problema
Seção intitulada “Contexto e definição do problema”A ADR-0013 adicionou voz (TTS via ElevenLabs
eleven_multilingual_v2, STT por WebSocket em tempo real) como uma extensão da
SPA da demo. Aquela ADR captura o design, mas não codifica a postura de
segurança para o estado padrão da voz nem o portão de consentimento que o
governa.
A voz em uma demo próxima a um contexto regulado introduz uma superfície de consentimento e de risco diferente da do texto:
- Falsificação de identidade / deepfake: uma voz sintetizada pode ser mal interpretada como a gravação de uma pessoa real.
- Privacidade: o áudio de STT é processado em trânsito mesmo quando a demo não o retém; o ônus do consentimento é maior do que para texto.
- Autoridade do sinal de áudio: uma voz que soa clínica pode ser ouvida como instrução mesmo quando o texto enquadra uma recusa.
A decisão é: qual é o estado padrão da voz, e como o consentimento a ela é registrado, para um visitante de primeira vez?
Fatores de decisão
Seção intitulada “Fatores de decisão”- Postura de consentimento em primeiro lugar: demos próximas a um contexto regulado demonstram consentimento, elas não o presumem.
- Exposição a deepfake: deixar a voz LIGADA por padrão coloca uma voz sintética nos ouvidos de cada visitante como primeira impressão. Esse é o sinal errado.
- Paridade de localidade: o padrão deve ser uniforme entre en / es-419 / pt-BR. Uma localidade com um padrão diferente seria difícil de defender.
- Reversibilidade: o opt-in deve ser revogável a qualquer momento sem perder a experiência de texto.
Opções consideradas
Seção intitulada “Opções consideradas”- Opção A: Voz LIGADA por padrão; o interruptor é um recurso de “silenciar”.
- Opção B: Voz DESLIGADA por padrão; opt-in capturado como consentimento explícito registrado no servidor por chave, persistido entre sessões.
- Opção C: Voz DESLIGADA por padrão; opt-in registrado no lado do cliente em
localStoragepor dispositivo. - Opção D: Voz condicionada a um modal de privacidade explícito a cada sessão (sem persistência).
Resultado da decisão
Seção intitulada “Resultado da decisão”Opção escolhida: Opção B - Voz DESLIGADA por padrão, desbloqueada apenas por consentimento explícito que o servidor registra por chave e persiste entre sessões. A razão determinante é a postura de consentimento em primeiro lugar: uma demo próxima a um contexto regulado que fala no momento em que um visitante a abre escolheu o padrão errado. Registrar o consentimento no lado do servidor, por chave, respeita a decisão anterior do usuário sem incomodar a cada sessão e mantém o portão passível de imposição, onde um sinalizador no lado do cliente não estaria; o aviso explícito no rodapé “Áudio NÃO retido” é exibido independentemente do estado da voz, de modo que o contexto de consentimento nunca desaparece. A própria voz é um direito pago (ADR-0013), portanto o portão de consentimento só se aplica a chaves que podem usar voz.
Confirmação
Seção intitulada “Confirmação”- A voz está desligada por padrão na SPA da demo; nenhum turno de áudio é servido até que o consentimento seja registrado.
- O consentimento é registrado no lado do servidor por chave. Até que seja
concedido, uma requisição de voz é rejeitada com 403
consent_required; o servidor, não o navegador, mantém o estado de consentimento e o persiste entre sessões. - Os recursos de voz aparecem apenas para chaves que carregam o direito de voz; uma chave sem o direito nunca recebe voz, independentemente do consentimento.
- Uma divulgação de voz única é o portão de consentimento que o usuário passa para habilitar o áudio.
- A nota de governança sobre deepfake e consentimento documenta a política e referencia esta ADR (consulte política de consentimento de voz e deepfake).
- Paridade de localidade: a voz está DESLIGADA por padrão em en, es-419, pt-BR; a divulgação é totalmente traduzida nas três.
Consequências
Seção intitulada “Consequências”Positivas
Seção intitulada “Positivas”- A experiência na primeira visita é silenciosa. A decisão de consentimento é do usuário, não da demo.
- A exposição a deepfake fica limitada aos usuários que habilitaram a voz explicitamente.
- O aviso de rodapé “Áudio NÃO retido” carrega o contexto de consentimento de forma visível o tempo todo.
- A paridade de localidade é imposta.
Negativas
Seção intitulada “Negativas”- Um clique extra para usuários que ativamente querem voz. Pequeno custo de UX.
Neutras
Seção intitulada “Neutras”- O consentimento é registrado por chave no servidor, de modo que a decisão de um usuário acompanha a chave entre dispositivos e sessões em vez de viver no armazenamento de um único navegador.
Prós e contras das opções
Seção intitulada “Prós e contras das opções”Opção A: Voz LIGADA por padrão
Seção intitulada “Opção A: Voz LIGADA por padrão”- Boa, porque descoberta sem atrito do recurso de voz.
- Ruim, porque uma voz sintética toca na primeira visita - o consentimento é retroativo, não prévio.
- Ruim, por causa da exposição a deepfake para cada visitante.
- Ruim, porque é difícil de defender diante de um revisor clínico.
Opção B (escolhida): Voz DESLIGADA por padrão + consentimento registrado no servidor
Seção intitulada “Opção B (escolhida): Voz DESLIGADA por padrão + consentimento registrado no servidor”- Boa, porque consentimento em primeiro lugar.
- Boa, porque a exposição a deepfake fica limitada aos usuários que fizeram opt-in.
- Boa, porque o consentimento é imposto no servidor, onde um sinalizador no lado do cliente poderia ser contornado, e persiste entre sessões e dispositivos.
- Boa, porque a divulgação carrega o enquadramento explícito de voz + privacidade.
- Ruim, por causa de um clique extra para usuários que querem voz, mais o registro de consentimento no lado do servidor que um interruptor apenas no cliente não precisaria.
Opção C: Voz DESLIGADA por padrão + opt-in no lado do cliente em localStorage
Seção intitulada “Opção C: Voz DESLIGADA por padrão + opt-in no lado do cliente em localStorage”- Boa, porque é simples e não precisa de registro de consentimento no lado do servidor.
- Ruim, porque o estado de consentimento vive em um único navegador e não acompanha o usuário entre dispositivos ou sessões.
- Ruim, porque um sinalizador mantido no cliente não pode ser imposto no lado do servidor, então é a ferramenta errada para condicionar uma capacidade paga e sensível a consentimento.
Opção D: Modal a cada sessão
Seção intitulada “Opção D: Modal a cada sessão”- Boa, porque o consentimento é reafirmado a cada sessão.
- Ruim, por causa do padrão de UX que incomoda. Gera fadiga de consentimento.
- Ruim, porque um usuário que consentiu ontem é perguntado novamente hoje sem ganho operacional algum.
Mais informações
Seção intitulada “Mais informações”- ADR-0013 - design da extensão de voz
- Política de consentimento de voz e deepfake
- MADR 4.0.0: https://adr.github.io/madr/