You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

8.6 KiB

Italiano Vivo — Especificação do Produto (v1)

App de italiano situacional-first, com voz livre, scoring de inteligibilidade ("errado mas entendido" conta como sucesso), treino de estratégias de comunicação (circunlóquio, pedir a palavra que falta) e modo viagem offline. Do extremo básico (A0/Pre-A1) ao avançado (C1), ancorado nos can-do statements do CEFR / ALTE Social & Tourist Can-Dos.

1. Por que este app existe (lacunas comprovadas na pesquisa)

Dor Estado do mercado Nossa resposta
Avaliação binária ❌/✅ Babbel/Duolingo/Speakly marcam fala correta como errada; nenhum separa precisão de sentido Scoring em 3 eixos: Sentido transmitido / Naturalidade / Precisão gramatical. Saída padrão: "Quase lá — o italiano diria: …", nunca "Errado"
Vocabulário temático solto Babbel começa com queijo de cabra; Duolingo prende o aluno no path Dia 1: aluno escolhe as próprias situações-âncora ("quero pedir um lanche", "preciso reclamar do aquecedor")
Falta de estratégia quando a palavra some Zero apps de italiano treinam circunlóquio (evidência: Coluzzi 2022; Dörnyei 1995) Módulo dedicado "Salvavita": Come si dice…?, Può ripetere più lentamente?, descrever sem nomear. Penaliza abandonar a mensagem, não o erro
Syllabus gramatical (presente→congiuntivo) Todos os grandes Unidades = missões comunicativas (aeroporto, farmácia, hotel…). Gramática entra como insumo da missão, nunca como capítulo
Voz livre sem memória Apps de IA conversacional: "no vocab list, no grammar log, no review schedule" Conversa livre → extrai as frases que quebraram → rebuild → reaparecem espaçadas dentro de uma situação nova
Offline confiável + áudio-only Só Pimsleur é hands-free, e 9% das reviews negativas citam offline quebrado PWA com Service Worker + catálogo 100% local; TTS/áudio empacotados; IA só quando online, com degradação suave
ASR hostil ao aprendiz Monossílabos ignorados, correções circulares ASR via LLM multimodal (tolerante a sotaque) + botão "isso estava certo" que vira dado de re-treino; sensível a geminadas (pala/balla, nono/nonna)
Billing predatório Queixa nº1 (renovação silenciosa, expiração antecipada) Compra única por trilha ou lifetime. Sem streak-guilt, sem conteúdo removido

2. Persona e escopo

  • Henrique viajante: foi à Itália, travou no balcão. Quer o básico de criança ("io voglio / io ho bisogno / mi scusi, non so come si dice") encaixado em contexto real, progredindo até conversa adulta.
  • Escopo tudo: viajante + expat/burocracia (permesso, ASL, banca, affitto), porque há exigência legal objetiva (B1 cidadania CILS/CELI) e disposição a pagar por resultado mensurável.

3. Metodologia implementada (mecânica de app)

Princípio Mecânica
Aquisição natural (como criança) Fase 1 só áudio+imagem, sem escrita; texto desbloqueado após N exposições; produção cedo porém curta
Comprehensible input i+1 Diálogos com % de cognatos controlado pelo nível; missão seguinte libera com comprehension ≥ ~80%
Chunks / lexical approach Unidade mínima = bloco pronto (Mi scusi, non ho capito — può ripetere più lentamente?), nunca palavra isolada
CLT / Task-Based Learning Cada missão tem critério de sucesso comunicativo ("marque uma visita médica sem inglês"). O app avalia a meta atingida, depois expõe os gaps
Output practice (Swain) Após conversa livre: extrair 3 frases tentadas-e-quebradas → rebuild → re-gravar → reencontrar 3 dias depois
SRS Revisão de frases-chunks (SM-2 simplificado), reintroduzidas dentro de diálogo novo, não como flashcard morto
Shadowing Modo carro/corrida: áudio nativo em velocidade real, gravação sobreposta, medição de lag; protocolo Arguelles (blind → transcript → read+shadow)
Estratégias de comunicação (CS) Minijogo "descreva sem nomear" cronometrado; cartões de resgate; auto-repair pontuado positivamente
CEFR can-do Badge = "Você agora consegue: reclamar de um item com defeito", com verificação por voz. Pre-A1 → B2/C1

4. Trilhas e missões (espinha dorsal)

Trilha Bambino (A0–A1) — núcleo da ideia: quero/não quero, tenho/preciso, gosto, dói, é grande/pequeno, mais/menos, isto/aquilo, números, sim/não/forse, e principalmente os salvavidas: come si dice…? / non capisco / ripeta piano / come si scrive? / scusi, non conosco la parola.

Trilha Viaggio (A1–B2) — aeroporto e alfândega · check-in de voo · táxi/ônibus/trem · hotel (checar, reclamar do quarto, pedir extra) · bar e restaurante (pedir, alergia, conta, gorjeta, reserva) · supermercado/padaria/lanche ("vorrei un panino con…" + descrever o que não sei o nome) · farmácia e médico (sintomas, dor, dosagem) · banco e câmbio · aluguel de carro · compras e devolução · reclamar/negociar/recusar · fazer amizade/small talk · emergência e polícia · telefone/online burocrático.

Trilha Vivere (B1–C1) — questura/permesso, ASL/sanità, SPID, comune/anagrafe, casa e landlord, scuola dei figli, lavoro, preparazione CILS/CELI B1 cittadinanza.

Cada missão = scenario com: objetivos can-do, chunks essenciais, diálogos-âncora (áudio), armadilhas reais (tu vs Lei, cortesia italiana, "magari/dai/vabbè"), role-play de voz livre, e checklist de sobrevivência offline.

5. Motor de feedback (o diferencial)

Pipeline por tentativa de fala:

  1. ASR (qwen omni-flash, tolerante a sotaque) → transcrição + confusão provável.
  2. Judge (qwen3.8-max) produz JSON estruturado:
    • meaning_conveyed: full | partial | failed
    • naturalness: score + versão que um italiano diria
    • grammar: erros classificados (grave=gera mal-entendido / leve / cosmético)
    • next_move: continuação do diálogo como italiano faria
    • rescue_card: se o aluno travou por falta de palavra → ensina o salvavita aplicável
  3. Regra de ouro: meaning_conveyed=full ⇒ missão avança mesmo com erros graves leves; feedback sempre termina com a frase reconstruída para repetir.
  4. Botão "isto estava certo" → registra dissidência (dataset futuro de calibração).

6. Arquitetura técnica

cursoitaliano/
  app/                  # PWA React+Vite+TS (IndexedDB/Dexie, Workbox SW, MediaRecorder, Web Speech playback)
    src/lib/ai.ts       # cliente OpenAI-compatible -> LiteLLM (http://10.8.0.1:4000/v1)
    src/engine/         # judge, scoring, srs, mission graph
    src/content/        # JSONs gerados (missões, chunks, diálogos, salvavidas)
  server/               # Node TS: /transcribe /judge /tts /generate-mission (cache + rate-limit + fallback chain)
  content/              # pipeline de geração (Node) -> JSON versionado no repo
  audio/                # assets TTS pré-gerados (por missão)
  SPEC.md README.md .env.example
  • IA: tudo via LiteLLM local (sem custo PAYG): chat/judge qwen3.8-max, drills rápidos qwen3.8-flash, voz/ASR qwen3-omni-flash (audio base64), TTS via Edge TTS vozes it-IT-ElsaNeural/it-IT-DiegoNeural (geração em lote, pacote offline; fallback Web Speech API).
  • Offline: catálogo, chunks, diálogos e áudio empacotados no build + IndexedDB; role-play de voz exige rede; phrasebook de resgate e SRS funcionam 100% offline; fila de tentativas para julgamento quando voltar a conexão.
  • Segurança: chave do proxy fora do bundle — .env no server/, app fala só com o próprio server; .env no .gitignore; .env.example sem segredo.

7. MVP (o que está sendo construído agora)

  1. Repo inicializado, config, scripts.
  2. Conteúdo gerado: trilha Bambino completa (12 unidades) + Viaggio M1–M6 (aeroporto, táxi/trem, hotel, restaurante, bar/lanche, farmácia/médico), cada uma com can-dos, 12–20 chunks, 2 diálogos, role-play prompts, salvavidas.
  3. Server com /judge (3-eixos), /transcribe (omni), /tts.
  4. App PWA: home por missões, player de diálogo com áudio, cabine de voz (gravar → judge → feedback "quase lá"), minijogo "descreva sem nomear", SRS de chunks, modo resgate offline.
  5. README com rodar-local, arquitetura e roadmap (trilhas restantes, shadowing mode, CILS prep, Android nativo).

8. Roadmap pós-MVP

  • Missões 7–15 da trilha Viaggio + trilha Vivere inteira (geração pelo mesmo pipeline).
  • Modo carro/shadowing com medição de lag, análise fonêmica de geminadas.
  • Export de erro como currículo (log de interlíngua + revisão adaptativa).
  • Trilha CILS/CELI B1 (cidadania) com simulado.
  • Wrapper Android (Capacitor) com áudio offline por pacote.
  • Calibração do judge com os votos "isto estava certo".