StealthScribe é uma aplicação web que permite a transcrição automática de arquivos de áudio, com foco em eficiência de recursos (rodando 100% em CPU) e escalabilidade infinita. Ideal para empresas, jornalistas e criadores de conteúdo.
O diferencial do StealthScribe é sua arquitetura de "Fogo e Esqueça" (Fire-and-Forget) com Notificação em Tempo Real: você envia um áudio gigante, a API responde instantaneamente e, quando a transcrição pesada terminar em background, o resultado "pula" na sua tela via WebSocket. 🔧🚀
- ⚡ Desacoplamento Total: API (FastAPI) separada do processamento pesado (FastStream + Whisper).
- 🔄 Notificações em Tempo Real: WebSockets para avisar o front-end assim que o processamento acaba.
- ☁️ Cloud-Ready Storage: Uso de MinIO/S3 (
aioboto3) para manipulação de arquivos grandes sem travar a memória. - 📦 Mensageria Robusta: RabbitMQ para gerenciar a fila de áudios.
- 🗃️ Persistência Assíncrona: SQLAlchemy 2.0 + SQLite/PostgreSQL para histórico de transcrições.
- O usuário faz upload do áudio via FastAPI.
- A API salva o arquivo no MinIO (S3) e cria um registro de 'processing' no Banco de Dados.
- A API envia apenas a URL do arquivo para uma fila do RabbitMQ.
- O Worker (FastStream) pega a URL, baixa o arquivo, roda o Whisper e atualiza o Banco de Dados para 'completed'.
- O Worker avisa a API que terminou, e a API envia o texto final via WebSocket direto para a tela do usuário.
A estrutura foi desenhada para promover modularidade e manutenibilidade (padrão MVC):
StealthScribe/
├── app/ # 📁 Código principal
│ ├── api/ # 🌐 Endpoints da API
│ │ ├── analyze/ # 🔍 Módulo de recepção e filas
│ │ └── notify/ # 🔔 Módulo de WebSockets em tempo real
│ ├── core/ # ⚙️ Configurações centrais e Banco de Dados
│ ├── models/ # 🗃️ Modelos ORM (SQLAlchemy)
│ ├── services/ # 🔧 Regras de negócio
│ └── workers/ # 👷 Trabalhadores (FastStream)
├── migrations/ # 🗂️ Migrações de Banco de Dados (Alembic)
├── utils/ # 🛠️ Utilitários (Config, Logger, Modelos AI)
├── compose.yml # 🐳 Orquestração do RabbitMQ e MinIO
├── pyproject.toml # 📦 Dependências (UV)
└── README.md # 📖 Este arquivo
- Python 3.12+ 🐍
- FastAPI ⚡: Framework web moderno para as rotas e WebSockets.
- FastStream 🌊: Framework para workers e mensageria.
- RabbitMQ 🐇: Broker de mensagens.
- MinIO / AWS S3 🪣: Object Storage assíncrono com
aioboto3. - Faster-Whisper 🎙️: IA de transcrição otimizada para CPU (INT8).
- SQLAlchemy 2.0 (Async) + Alembic 🗄️: ORM e Migrações.
- Pydantic 📋: Validação de dados.
- Python 3.12+
- UV (gerenciador de pacotes)
- Docker e Docker Compose (para subir os serviços auxiliares)
- Clone o repositório 📥
- Navegue até a pasta do projeto:
cd StealthScribe
- Instale as dependências com o UV:
uv sync
1. Suba a Infraestrutura (RabbitMQ e MinIO):
docker compose up -d
(O painel do MinIO estará em http://localhost:9001 - user: minioadmin / pass: minioadmin)
2. Crie as tabelas do Banco de Dados:
uv run alembic upgrade head
3. Inicie o Worker de IA (Em um terminal):
uv run faststream run app.workers.worker1:app
4. Inicie a API (Em outro terminal):
uv run uvicorn app.startup:app --reload --host 0.0.0.0 --port 8000
Acesse a documentação interativa do FastAPI para testar o envio de áudios: 👉 http://localhost:8081/docs
O FastStream gera a documentação das filas do RabbitMQ automaticamente. Para visualizar o contrato das mensagens:
uv run faststream docs serve app.workers.worker1:app
E acesse: 👉 http://localhost:8000
Para gerar um arquivo asyncapi.yaml
uv run faststream docs serve app.workers.worker1:app --export yamlEste projeto está em constante evolução! Contribuições são super bem-vindas. Sinta-se à vontade para abrir issues, sugerir melhorias ou enviar pull requests. Vamos juntos tornar o StealthScribe o padrão ouro em transcrição local! 💪