Skip to content

jvras58/StealthScribe

Repository files navigation

StealthScribe 🚀

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. 🔧🚀

Funcionalidades Principais:

  • 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 Fluxo de Trabalho (Under the Hood) 🧠

  1. O usuário faz upload do áudio via FastAPI.
  2. A API salva o arquivo no MinIO (S3) e cria um registro de 'processing' no Banco de Dados.
  3. A API envia apenas a URL do arquivo para uma fila do RabbitMQ.
  4. O Worker (FastStream) pega a URL, baixa o arquivo, roda o Whisper e atualiza o Banco de Dados para 'completed'.
  5. O Worker avisa a API que terminou, e a API envia o texto final via WebSocket direto para a tela do usuário.

Arquitetura do Projeto 🏗️

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


Tecnologias Utilizadas 🛠️

  • 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.

Como Começar 🚀

Pré-requisitos:

  • Python 3.12+
  • UV (gerenciador de pacotes)
  • Docker e Docker Compose (para subir os serviços auxiliares)

Instalação:

  1. Clone o repositório 📥
  2. Navegue até a pasta do projeto:
cd StealthScribe
  1. Instale as dependências com o UV:
uv sync

Executando a Aplicação:

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

Documentação 📚

1. Documentação da API (REST + WebSockets)

Acesse a documentação interativa do FastAPI para testar o envio de áudios: 👉 http://localhost:8081/docs

2. Documentação da Mensageria (AsyncAPI)

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 yaml

Contribuição 🤝

Este 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! 💪

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors