← Todos os projetos
Open Source 2026

LocalEar

Transcrição de microfone em tempo real com diarização de locutores, rodando inteiramente no navegador e em CPU.

Python FastAPI ONNX Runtime WebSocket
Repositório
Contexto

Transcrição de reunião ao vivo normalmente significa mandar áudio pra uma API na nuvem ou exigir GPU pra ASR local. O objetivo era uma opção self-hosted que rodasse só com CPU, mantivesse o processamento de áudio no navegador o quanto possível e ainda separasse quem falou o quê.

Resultado

Abrir o navegador e falar já produz uma transcrição corrente, com locutor identificado, sem GPU e sem passo de terminal — os limites de segmento são decididos no cliente, a transcrição e a diarização acontecem no servidor, e tudo, do modelo de ASR ao login, é opcional e trocável via variáveis de ambiente.

Arquitetura

O navegador bufferiza o áudio do microfone num AudioWorklet, roda o Silero VAD e um detector de troca de locutor NeXt-TDNN no próprio cliente (ambos modelos ONNX vendorizados via onnxruntime-web) para decidir os limites de segmento, e transmite os blocos crus por WebSocket. Um servidor FastAPI transcreve cada segmento com um modelo GGUF de ASR residente em memória (qualquer modelo, via transcribe-cpp/ggml, CPU ou Vulkan/CUDA), aplica correção fuzzy de vocabulário customizado e diariza os locutores no servidor com o mesmo modelo de embedding via clustering por centroide de cosseno. Histórico de sessões (PostgreSQL), armazenamento de áudio (qualquer storage compatível com S3), resumos (qualquer endpoint compatível com OpenAI) e login (OIDC) são todos opcionais — o app roda sem estado se nenhum deles for configurado.

Diagrama de arquitetura do LocalEar

Quer algo parecido?

Falar sobre o projeto