myspoti
Native Android client for Spotify, built with Jetpack Compose
Legendas automáticas em português que avisam onde a IA pode ter errado.
Translation pending
MediaPython · HTMLGitHub @joaopeorossiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Legendas automáticas em português para pessoas surdas, com aviso dos trechos em que a IA pode ter errado.
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Legendas automáticas em português para pessoas surdas, que avisam onde a IA pode ter errado e apontam os trechos rápidos demais para ler.
Ver a demonstração: um vídeo de exemplo já legendado pelo projeto, com a lista de blocos e os destaques.
A pessoa e a voz do vídeo de exemplo são um avatar gerado por IA (Clipchamp).
Legenda automática erra, e quem ouve percebe na hora. A pessoa surda não tem como perceber, porque não confere a legenda pelo áudio. Além disso, uma transcrição literal pode passar da velocidade de leitura recomendada.
E mede tudo isso com números.
Comparei dois tamanhos do Whisper nas 427 frases do conjunto de teste do Common Voice pt-BR (36 minutos de áudio), com 2 núcleos de CPU, imitando a máquina da demo.
| Modelo | Erro de palavra (WER) | Velocidade (RTF) |
|---|---|---|
| whisper-base | 38,6% | 0,32 |
| whisper-small | 22,9% | 0,86 |
Conclusão: a regra inicial pedia RTF até 0,5, um limite que eu defini antes de medir, e com ela a demo usaria o base. Quando vi os números, percebi que esse limite não tinha um motivo ligado a quem usa a legenda: para quem não ouve, acertar vale mais do que esperar alguns segundos a menos. Mudei a regra para "mais rápido que o tempo real" (RTF até 1,0), e a demo passou a usar o small, que erra 41% menos (22,9% contra 38,6%). Como a regra mudou depois de ver os números, os resultados dos dois modelos ficam aqui, lado a lado.
Apliquei às 427 frases a mesma regra que a demo usa para marcar dúvida, com os mesmos cortes nos dois modelos:
| whisper-small (demo) | whisper-base | |
|---|---|---|
| Frases marcadas como duvidosas | 33% (141) | 60% (258) |
| WER nas marcadas × nas demais | 42,2% × 13,0% | 51,4% × 16,8% |
| Parte dos erros que cai em frases marcadas | 62% | 84% |
| Erros sem aviso | 8,6% (230 palavras) | 6,2% (165 palavras) |
Nos dois modelos, as frases com mais erros são listas de termos técnicos e nomes próprios ("lotusscript, corelscript", "Gerdau, PagBrasil, Piccadilly"). No base, em duas frases o modelo entrou em repetição ("e o hábita e o hábita e o hábita"); as 10 piores do base estão em errors.md. No small, aparecem também números por extenso transcritos como algarismos ("um, dois, três…" virou "1, 2, 3…"), que a normalização atual conta como erro.
Medido em 24/10/2026 · seed 42 · normalização v1 · dados completos em results/2026-10-24_145853 (resumo, calibração).
flowchart LR
V[Vídeo enviado] --> M[Validação:<br>tamanho, tipo real,<br>duração, áudio]
M --> A[Áudio mono 16 kHz<br>ffmpeg]
A --> T[Transcrição<br>Whisper local]
T --> C[Blocos de legenda<br>limites do Guia]
C --> L[Legibilidade:<br>aponta blocos rápidos]
C --> D[Baixa confiança:<br>marca trechos duvidosos]
L --> R[WebVTT + relatório]
D --> R
R --> P[Página: player<br>e lista de blocos]
core/), então o número da tabela descreve o que a demo faz.Pré-requisitos: Python 3.12 e ffmpeg instalados.
git clone https://github.com/joaopeorossi/legendalab
cd legendalab
py -3.12 -m venv .venv
.venv\Scripts\python -m pip install -r requirements.txt
.venv\Scripts\python -m uvicorn api.main:app
Depois, abra http://127.0.0.1:8000 (a página) ou http://127.0.0.1:8000/docs (a documentação da API). Os testes rodam com .venv\Scripts\python -m pytest. No Linux ou no macOS, use python3.12 -m venv .venv e .venv/bin/python.
Para refazer o benchmark, baixe o Common Voice pt-BR na Mozilla Data Collective para data/pt-BR/ e rode:
.venv\Scripts\python -m bench.run_benchmark --models base small --n 427 --seed 42
.venv\Scripts\python -m bench.report results/<pasta-da-execução>
.venv\Scripts\python -m bench.calibrate results/<pasta-da-execução>
Usei o Claude Code como copiloto para escrever o código. As decisões são minhas: para quem é o projeto, que métrica usar, de onde vêm os limites, a regra de escolha do modelo e o corte da marcação de dúvida. A validação dos resultados também é minha. Cada etapa terminou com testes automáticos e um registro do que aprendi no LEARNING_LOG.md.
No produto, a IA aparece só na transcrição. Nenhuma IA reescreve, resume ou "corrige" a legenda.
MIT.