Transcrição de vídeos local e privada, powered by OpenAI Whisper + FFmpeg.
Faça upload de um vídeo → receba texto, SRT e JSON. Tudo roda na sua máquina, nada vai para a nuvem.
Pré-requisito: Docker Desktop instalado.
git clone https://github.com/rikemorais/readerike.git
cd readerike
mkdir -p data
docker compose up --buildAguarde o build (~2 min na primeira vez). Quando estiver pronto:
| Serviço | URL |
|---|---|
| Interface web | http://localhost:3000 |
| API / Swagger | http://localhost:8000/docs |
Para parar: Ctrl+C → docker compose down
- Abra http://localhost:3000
- Arraste um vídeo (MP4, MOV, MKV, AVI ou WebM) ou clique em Browse
- Escolha o idioma e o modelo Whisper
- Clique em Transcribe e acompanhe o progresso em tempo real
- Quando concluir, leia o transcript sincronizado com o vídeo e exporte em JSON, TXT ou SRT
| Modelo | RAM | Velocidade | Qualidade |
|---|---|---|---|
tiny |
~1 GB | ⚡⚡⚡ | ★★☆ |
base |
~1 GB | ⚡⚡⚡ | ★★★ |
small |
~2 GB | ⚡⚡ | ★★★★ |
medium |
~5 GB | ⚡ | ★★★★★ |
large |
~10 GB | 🐢 | ★★★★★ |
O padrão é base. Para mudar:
WHISPER_MODEL=small docker compose up
Crie um arquivo .env na raiz do projeto para sobrescrever os padrões:
WHISPER_MODEL=base LOG_LEVEL=INFO CORS_ORIGINS=["http://localhost:3000"]
| Variável | Padrão | Descrição |
|---|---|---|
WHISPER_MODEL |
base |
Modelo Whisper |
LOG_LEVEL |
INFO |
Nível de log (DEBUG, INFO, WARNING) |
CORS_ORIGINS |
["http://localhost:3000"] |
Origens permitidas no CORS (JSON array) |
O projeto segue Clean Architecture (Ports & Adapters):
┌──────────────────────────────────────────────┐
│ API (FastAPI) + CLI (click) │
└──────────────────────┬───────────────────────┘
│
┌──────────────────────▼───────────────────────┐
│ Use Case: TranscribeVideoUseCase │
└───────┬──────────────┬───────────────┬───────┘
│ │ │
IAudioExtractor ITranscriber ITranscriptionRepository
│ │ │
FFmpegExtractor WhisperTranscriber FileRepository / SQLiteJobRepository
| Camada | Localização | Responsabilidade |
|---|---|---|
| Core | src/readerike/core/ |
Entidades, ports, use cases. Zero deps externas. |
| Adapters | src/readerike/adapters/ |
FFmpeg, Whisper, SQLite, JSON. |
| Infrastructure | src/readerike/infrastructure/ |
Config via env vars, logging. |
| API | src/readerike/api/ |
FastAPI, WebSocket, schemas. |
| CLI | src/readerike/cli/ |
Interface de linha de comando. |
| Frontend | frontend/ |
Next.js 14, Tailwind CSS, TypeScript. |
# Instalar dependências Python (requer Python 3.10+, FFmpeg e Whisper) pip install -e ".[dev]" # Rodar testes make test # todos make test-unit # só unitários (sem FFmpeg/Whisper) # Lint, tipos e segurança make lint make typecheck make security # API local (porta 8000) make api-dev # Frontend local (porta 3000) make frontend-dev
MIT