Épico inteiro em docs/epics/EPIC-14-voz-ouvir-e-falar.md do espaço de trabalho, 12 tarefas. Esta issue é a porta de entrada.
Depende do texto de privacidade (#92), porque gravar a voz da cidadã tem base legal própria: voz pode ser dado biométrico, e aí não é art. 7º.
O que existe hoje
apps/web/lib/speech.ts e os botões de components/ui.tsx já leem tópico e alternativa. O que falta é o resto.
O que falta, na ordem
- Ouvir também a resposta do chat, que hoje é a única parte longa que a pessoa não consegue ouvir.
- Dois botões, "Ouvir" e "Parar", nunca "Pausar". O
pause() do speechSynthesis é quebrado em Android e em WebView: ele para e não volta, e o botão fica mentindo.
- Velocidade persistida. Quem precisa de 0,8x precisa em toda tela, não em uma.
- Texto falado normalizado: hoje o leitor diz "erre cifrão", "porcento" e "oábi". Valor, percentual e sigla precisam virar fala antes de ir para o sintetizador.
- Casos de indisponibilidade dizem isso em palavras: aparelho sem voz em português, e aparelho sem
speechSynthesis. Hoje o botão fica inerte e a pessoa acha que ela errou.
- Gravar e transcrever: o microfone só é pedido depois de um diálogo que explica o que acontece com o áudio; a onda de barras mostra que o som está sendo captado de verdade; a transcrição aparece escrita e editável; nada é enviado até a pessoa apertar enviar.
- Nenhum arquivo de áudio fica no servidor nem é servido por rota alguma.
Pronto quando: num Android e num navegador embutido do WhatsApp, dá para ouvir toda a explicação e toda resposta do chat, mudar a velocidade e ela persistir, e responder falando com a transcrição revisável antes do envio.
Épico inteiro em
docs/epics/EPIC-14-voz-ouvir-e-falar.mddo espaço de trabalho, 12 tarefas. Esta issue é a porta de entrada.Depende do texto de privacidade (#92), porque gravar a voz da cidadã tem base legal própria: voz pode ser dado biométrico, e aí não é art. 7º.
O que existe hoje
apps/web/lib/speech.tse os botões decomponents/ui.tsxjá leem tópico e alternativa. O que falta é o resto.O que falta, na ordem
pause()dospeechSynthesisé quebrado em Android e em WebView: ele para e não volta, e o botão fica mentindo.speechSynthesis. Hoje o botão fica inerte e a pessoa acha que ela errou.Pronto quando: num Android e num navegador embutido do WhatsApp, dá para ouvir toda a explicação e toda resposta do chat, mudar a velocidade e ela persistir, e responder falando com a transcrição revisável antes do envio.