[PITCH] Abri como API a avaliação de pronúncia do meu app: nota por som, e um campo para dizer quando NÃO corrigir
Oi! Sou o Nik, faço o TonePerfect, um app de pronúncia (então sim, é um projeto meu). Abri a parte que avalia a pronúncia como uma API e queria mostrar como ela funciona por dentro e ouvir a opinião de vocês.
Demo ao vivo, sem cadastro: https://api.toneperfect.app (aperta "Record yourself", lê a frase e vê o JSON).
O que ela faz
Só fala lida (scripted speech): você manda o áudio e o texto que a pessoa deveria ler. Não é speech-to-text e não avalia fala livre. Saber o texto de antemão é o que permite comparar som por som o que era esperado com o que foi ouvido.
curl https://api.toneperfect.app/v1/assess \
-H "Authorization: Bearer $TONEPERFECT_API_KEY" \
-H "Idempotency-Key: licao-42-tentativa-1" \
-F "audio=@ola.wav" \
-F "text=Olá, tudo bem?" \
-F "language=pt-BR"
A resposta vem em três níveis já ligados entre si: nota da frase, nota de cada palavra (com start_ms/end_ms para tocar de novo só aquele trecho) e cada som com expected, heard e uma nota. Em mandarim cada sílaba é avaliada em inicial, final e tom separados, e o sandhi do 3º tom (3-3 vira 2-3) é levado em conta, para não marcar como erro algo que está certo.
Decisões técnicas que talvez interessem
- Nota não é decisão. A nota de 0 a 100 é para mostrar ao usuário. Para corrigir ou não, cada palavra (e cada inicial/final/tom no mandarim) vem com
decision:review,uncertainouno_correction. Corrigir errado quem falou certo irrita muito, então o padrão é ficar quieto quando a dúvida é grande. - Retry seguro com Idempotency-Key. Upload de áudio em celular falha muito. Com a mesma chave você reenvia sem pagar duas vezes; o resultado fica guardado no máximo 24 h só para isso.
- Áudio é apagado depois da avaliação e não é usado para treino.
- Chaves de teste (
tp_test_) devolvem um resultado fixo de exemplo, não gastam crédito e podem ficar no código do navegador para montar a interface. - Cobrança por 15 s de áudio iniciados; requisições que falham ou que não dá para avaliar não custam nada.
- Especificação em OpenAPI 3.1: https://api.toneperfect.app/openapi.json
Limites (para ser honesto)
São 10 idiomas (mandarim, inglês, francês, espanhol, alemão, italiano, português, russo, coreano, japonês) e todos os pacotes estão marcados como experimentais; coreano e japonês ainda em beta. No japonês o acento de altura (pitch accent) não é avaliado, só os sons. O português é pt-BR.
Preço
Toda conta nova ganha 50 créditos grátis, sem cartão. Depois: US$ 10/mês (2.500 créditos), US$ 50 (15.000) ou US$ 150 (50.000).
Se alguém aqui faz app de idiomas, leitura para crianças ou treino de fala, queria muito saber o que falta, e se a nota discordar do seu ouvido na demo, me conta em qual frase 🙏
Fonte: https://api.toneperfect.app