§1O problema
A tradução ao vivo nativa dos fones tem falhas (fecha, nem sempre fala no fone). Faltava um app com o menor atraso possível, que funcione com a outra pessoa sem ela instalar nada.
§2O que eu construí
- PlanosPlano de produto e plano técnico (cobrança por pacotes de minutos, saldo como extrato, login).
- ProtótipoProtótipo de telas aprovado, com tema claro e escuro do design system próprio.
- Bancada de testeComparou motores de tradução com áudio real e levou à decisão do motor principal e da reserva.
- ServidorCloudflare Worker + banco D1, ainda em rascunho, rodando no meu servidor em casa enquanto o app não vai para a loja.
- Página do convidadoPágina web para o convidado entrar por QR code.
- AppEm SwiftUI (iPhone/iPad/Watch em sincronia), feito no Mac; o app está pronto.
§3As partes difíceis
5 itens- 01
Medir atraso e qualidade de motores diferentes
Voz para voz versus ouvir + traduzir + falar, numa bancada com a mesma entrada.
- 02
Tocar só o sentido certo da tradução
Um segundo serviço diz quem está falando e filtra.
- 03
Captação pelo microfone do fone
Só um microfone funciona por vez, e a outra pessoa precisa ser captada também.
- 04
Sincronizar iPhone, iPad e Watch em tempo real
E permitir dois celulares, cada um na sua língua.
- 05
Saldo de minutos no servidor como extrato
Para a assinatura entrar depois sem refazer.
§4Resultado
A comparação dos motores foi feita e o motor está escolhido, com os resultados registrados. O backend ainda é um rascunho e por enquanto roda no meu servidor em casa. O app de iPhone/iPad/Watch está pronto, mas ainda não está nas lojas e não tem usuários.
§5Stack
- Swift / SwiftUI
- Cloudflare Workers + Durable Objects + D1
- API de tradução de voz em tempo real
- Serviços de voz para texto e texto para voz (reserva)
- Node
- pm2
- Tailscale (temporário)