Transcrição de áudio e vídeo usando o Whisper da OpenAI, rodando localmente. Duas formas de usar:
- UI web (
app.py): arraste um áudio/vídeo, escolha modelo/idioma/formato e transcreva com o texto aparecendo em tempo real. Tem um passo opcional de "Formatar com IA" que organiza a transcrição em Markdown via API da OpenAI. - CLI (
transcrever.py):python transcrever.py audio.oggpra transcrever pelo terminal.
- Python 3.10+
- ffmpeg instalado no sistema
- macOS ou Linux (o instalador e os atalhos usam bash +
lsof)
git clone <url-do-repositorio>
cd whisperapp
./install.shO install.sh:
- confere Python 3.10+ e ffmpeg;
- cria um ambiente virtual (
.venv) e instala as dependências dorequirements.txt; - cria o
.enva partir do.env.example(não precisa preencher a mão — o app pede aOPENAI_API_KEYnum popup na primeira execução, só necessária se for usar o "Formatar com IA"); - registra os atalhos
whisperappewhisperapp-stopem~/.local/bin.
Se ~/.local/bin não estiver no seu PATH, o instalador mostra o comando pra adicionar.
A primeira instalação demora. As dependências incluem o PyTorch e ocupam ~1 GB — numa máquina sem cache do pip isso leva vários minutos. O instalador mostra uma barra de progresso com o pacote sendo instalado no momento, então dá pra acompanhar. Depois disso, rodar o
install.shde novo leva segundos.
whisperappAbre http://127.0.0.1:7860 no navegador. Pressione ESC no terminal (ou Ctrl+C) pra encerrar, ou rode em outro terminal:
whisperapp-stopSem instalar os atalhos, dá pra rodar direto pelos scripts do repositório:
./run.sh
./stop.sh
⚠️ Atenção à porta 7860. Orun.shlibera a porta antes de subir: se houver qualquer processo ocupando a 7860, ele é encerrado comkill -9— sem confirmação. Como 7860 é a porta padrão do Gradio, se você tiver outro app Gradio rodando, ele será derrubado. Se isso for um problema no seu caso, edite a variávelPORTAnorun.she nostop.shantes de usar.
Modelos disponíveis: tiny, base, small (padrão), medium, large, turbo. Modelos maiores = mais precisos e mais lentos; baixam automaticamente na primeira vez que forem usados.
python transcrever.py audio.ogg
python transcrever.py audio.ogg --modelo small --idioma pt
python transcrever.py audio.ogg --saida transcricao.txtUse --idioma auto pra detecção automática de idioma. O CLI só gera texto puro (sem legenda .srt; isso é só na UI).
Na UI, depois de transcrever, o botão "Formatar com IA" envia o texto pra um modelo da OpenAI que organiza em parágrafos/seções (tem um preset específico pra roteiros de vídeo de vendas). Requer:
pip install -U openai # já incluso no requirements.txte uma OPENAI_API_KEY configurada. Você não precisa editar o .env na mão: se não houver chave configurada, a primeira execução abre um popup pedindo pra colar a chave. Ela é validada ao vivo contra a API da OpenAI (GET /v1/models, chamada gratuita) e, se for válida, salva no .env do projeto (permissão 600) e passa a valer na hora, sem precisar reiniciar o app.
- "Agora não" fecha o popup sem validar nada — a transcrição continua funcionando normalmente e o app não volta a perguntar nas próximas execuções.
- Chave inválida mantém o popup aberto com o erro da API e o valor digitado preservado, pra você corrigir o typo sem colar tudo de novo.
- Pra trocar a chave depois, abra o accordion "✨ Formatar com IA" e clique em "🔑 Chave da OpenAI" — reabre o mesmo popup.
Sem chave configurada, a transcrição em si continua funcionando 100% normalmente — essa etapa é só um extra.
app.py UI Gradio
transcrever.py CLI
run.sh / stop.sh sobe/derruba a UI (usados pelos atalhos whisperapp/whisperapp-stop)
install.sh instalação de um comando só
requirements.txt dependências Python
MIT — veja LICENSE.