Este repositório foi preparado para rodar localmente no Windows sem depender de Git.
Você pode:
- baixar ZIP do projeto,
- descompactar,
- executar
executar.bat.
Este pacote já inclui um áudio real de sessão para quem quiser validar o fluxo completo sem preparar arquivos próprios:
- Arquivo:
Guia HTML (áudio de exemplo)
Fallback local do pacote:docs/index.html#audio-exemplo - Contexto: one-shot no cenário de The Witcher
- Mesa: 3 jogadores
- Sistema: DND 5e 2024
Use este arquivo para:
- testar transcrição com marcação de tempo e falantes,
- validar glossário e qualidade dos modelos,
- gerar material para o passo de resumo no NotebookLM.
app.py: servidor Flask da aplicação.executar.bat: instalador/validador automático + inicialização.mfaren/: backend principal (download, conversão, transcrição, filas, jobs).static/etemplates/: frontend.instalacao_de_resumo_de_sessao.html: guia visual com fluxo de resumo no NotebookLM.MODELOS_DOWNLOAD.txt: links dos modelos + onde colocar cada arquivo.SMOKE_TEST_10_MIN.md: checklist rápido para validar instalação em ~10 minutos.requirements.manual.txt: referência de dependências para instalação manual.tests/: testes automatizados (opcional para quem só vai usar).
Estrutura de runtime incluída vazia:
data/uploads/data/transcribe_cache/downloads/logs/
Instale estes itens antes da primeira execução:
- Python 3.11+ (3.13 também funciona)
- FFmpeg (build "full shared")
- Microsoft Visual C++ Redistributable (x64)
Recomendado para melhor desempenho:
- Driver NVIDIA atualizado (se usar GPU)
- CUDA Toolkit (opcional para validação manual da toolchain)
Observações:
- Internet é necessária na primeira execução (download de pacotes Python/modelos).
- Reserve espaço livre em disco (ideal: 15 GB+ para operação confortável).
- Baixe o ZIP do projeto.
- Descompacte em uma pasta local (ex.:
C:\midia-faren). - Abra a pasta e execute
executar.bat. - Aguarde os passos de instalação/validação.
- O navegador abrirá em:
http://127.0.0.1:5000/.
Se o navegador não abrir automático, acesse manualmente a URL acima.
Repositório oficial:
git clone https://github.com/FarenRavirar/midia-faren.git
cd midia-farenSe você quiser trabalhar só no pacote de instalação:
cd instalacao\midia-farengit status
git add .
git commit -m "chore: atualizacao da documentacao e instalacao"
git push origin mainNo GitHub, clique em:
Code->Download ZIP
- Criar tag e enviar:
git tag -a v1.0.0 -m "release v1.0.0"
git push origin v1.0.0-
No GitHub:
Releases->Draft a new release- selecione a tag
v1.0.0 - escreva título e notas
- anexe o ZIP do pacote (
instalacao/midia-faren).
-
Para gerar ZIP localmente (PowerShell):
Compress-Archive -Path ".\instalacao\midia-faren\*" -DestinationPath ".\instalacao\midia-faren-v1.0.0.zip" -Force- Cria/reutiliza o venv local:
.venv_cuda - Instala/atualiza pacotes base:
flask,requests,yt-dlp
- Instala stack IA fixada (estável para este projeto):
torch==2.8.0+cu128torchaudio==2.8.0+cu128faster-whisper==1.2.1whisperx==3.8.0ctranslate2==4.7.1
- Remove
torchcodecpor instabilidade no Windows nesse stack. - Valida imports e sobe o Flask.
--check: só valida ambiente, sem reinstalar.--setup-env: força reinstalação das dependências.--recreate-venv: recria o venv do zero.--ffmpeg-path-on: injeta FFmpeg local no PATH da sessão.--ffmpeg-path-auto: injeta só se não houver FFmpeg no PATH.--ffmpeg-path-off: não injeta PATH (padrão).
Exemplo:
executar.bat --setup-env --recreate-venv --ffmpeg-path-autoA aplicação procura FFmpeg nesta ordem:
tools\ffmpeg\bin\ffmpeg.exeC:\tools\ffmpeg\ffmpeg-7.1.1-full_build-shared\bin\ffmpeg.exeffmpegno PATH
Para não ter erro:
- opção A: instalar FFmpeg e adicionar no PATH;
- opção B: colocar binário em
tools\ffmpeg\bindentro do projeto; - opção C: usar
executar.bat --ffmpeg-path-auto.
Teste rápido:
ffmpeg -version- O projeto roda com e sem CUDA.
- Com CUDA disponível: transcrição muito mais rápida.
- Sem CUDA: funciona em modo CPU (mais lento).
Verificação rápida:
.venv_cuda\Scripts\python -c "import torch; print(torch.cuda.is_available(), torch.version.cuda)"Disponíveis na UI:
whisper_cppfaster_whisper(recomendado padrão)whisperx
Recursos do pipeline:
- chunking com overlap
- checkpoint por chunk
- retomada/reprocessamento de chunk
- guardrails anti-loop
- glossário/contexto persistente
tiny: muito rápido, qualidade baixa.base: rápido, qualidade baixa/média.small: equilíbrio para teste.medium: qualidade boa com prazo.large-v3: melhor qualidade, mais lento.distil-large-v3: quase qualidade do large-v3 com mais velocidade.
Links oficiais dos modelos:
- https://huggingface.co/openai/whisper-tiny
- https://huggingface.co/openai/whisper-base
- https://huggingface.co/openai/whisper-small
- https://huggingface.co/openai/whisper-medium
- https://huggingface.co/openai/whisper-large-v3
- https://huggingface.co/distil-whisper/distil-large-v3
Arquivo dedicado de modelos (links + destino + checklist):
MODELOS_DOWNLOAD.txt
-
faster_whisper/whisperx:- não precisa copiar manualmente;
- baixa automaticamente na primeira execução;
- cache padrão em
%USERPROFILE%\.cache\huggingface\hub.
-
whisper_cpp:- baixar arquivos
ggml-*.binmanualmente; - copiar para
transcriber\models\; - nomes dos arquivos devem permanecer exatamente iguais.
- baixar arquivos
Para manter o repositório leve e compatível com limites do GitHub:
- binários grandes e modelos
.bindowhisper_cppnão estão incluídos neste pacote.
Impacto:
faster_whisperewhisperxcontinuam prontos para uso;whisper_cpppode exigir baixar binários/modelos separadamente se você quiser usar esse backend.
Se não quiser setup adicional, use:
- backend
faster_whisperouwhisperx.
Se quiser usar whisper_cpp, siga exatamente:
- Abra
MODELOS_DOWNLOAD.txt. - Baixe os modelos
ggml-*.bin. - Copie os arquivos para
transcriber\models\. - Na UI, selecione backend
whisper_cppe o modelo correspondente.
Para resumo de sessão no NotebookLM, a fonte principal deve ser a transcrição em texto (TXT/SRT) com:
- timestamps corretos;
- separação por falantes/personagens (quando aplicável);
- ordem cronológica preservada.
O arquivo de áudio mixado (M4A) pode ser usado como fonte complementar, mas não substitui a transcrição estruturada para esse objetivo.
- Gere a transcrição completa no módulo Transcrição.
- Confirme saída em
.txte.srt(com marcação temporal e falantes). - Revise trecho final para evitar cauda repetitiva/loop.
- (Opcional) Gere M4A no módulo Conversor > Mixagem.
- Acesse NotebookLM: https://notebooklm.google.com/
- Crie notebook e envie primeiro o TXT/SRT.
- Use o prompt de conto para gerar o resumo da sessão.
Guia visual e prompt:
instalacao_de_resumo_de_sessao.html
- Acesse https://notebooklm.google.com/
- Crie um novo notebook.
- Adicione a transcrição (
.txtou.srt) como fonte principal. - Aguarde indexação da fonte.
- (Opcional) adicione o M4A como fonte complementar.
- Cole o prompt (seção 10.2) no chat do NotebookLM.
- Idioma: Português (Brasil).
Gere um resumo da sessão de RPG baseada na transcrição "[nome da transcrição]" no cenário "[nome do cenário]".
Quero um texto em formato de conto narrado em primeira pessoa do plural ("nós"), como se um dos jogadores estivesse contando para amigos o que aconteceu.
Regras do resultado:
1) Não faça análise técnica da mesa.
2) Não foque em elogiar ou exaltar pessoas específicas.
3) Conte os acontecimentos da sessão com narrativa fluida e empolgante.
Estrutura esperada:
1) Abertura da sessão:
- como nós chegamos;
- contexto inicial do local;
- quem eram os personagens presentes.
2) Desenvolvimento:
- conflitos e tensões;
- estratégias que nós tentamos;
- decisões e indecisões;
- reviravoltas, surpresas e consequências;
- acontecimentos importantes em ordem clara.
3) Fechamento:
- estado final do grupo;
- perguntas em aberto;
- gancho para continuação.
Diretriz de fidelidade:
- Use os nomes e fatos das fontes enviadas (transcrição com timestamps/falantes + notas de contexto), sem inventar fatos fora do material.
- Se algo estiver ambíguo, indique como possibilidade em vez de afirmar com certeza.
Final obrigatório (adapte ao contexto):
"Vamos ver aonde essa trama vai nos levar na próxima sessão."
[NOTAS DE CONTEXTO DA SESSAO]
Nome do audio: [nome do audio]
Nome do cenario: [nome do cenario]
Sistema: [sistema de RPG]
Resumo do contexto inicial: [contexto inicial da sessao]
Personagens de jogadores:
- Jogador: [nome do jogador 1]
Personagem: [nome do personagem 1]
Conceito: [raca/classe/profissao]
Vinculo ou origem: [faccao/cidade/clan/grupo]
Motivacao atual: [objetivo na sessao]
- Jogador: [nome do jogador 2]
Personagem: [nome do personagem 2]
Conceito: [raca/classe/profissao]
Vinculo ou origem: [faccao/cidade/clan/grupo]
Motivacao atual: [objetivo na sessao]
NPCs importantes:
- NPC: [nome do NPC 1]
Papel na historia: [funcao]
Relacao com o grupo: [como influencia o grupo]
- NPC: [nome do NPC 2]
Papel na historia: [funcao]
Relacao com o grupo: [como influencia o grupo]
Termos e nomes que nao devem ser corrigidos:
- [termo 1]
- [termo 2]
- [local 1]
Observacoes de pronuncia ou escrita:
- [nome dificil 1] -> [forma correta]
- [nome dificil 2] -> [forma correta]
.venv_cuda\Scripts\python -c "import flask,requests,yt_dlp; print('core_ok')"
.venv_cuda\Scripts\python -c "import torch; print(torch.__version__, torch.cuda.is_available(), torch.version.cuda)"
.venv_cuda\Scripts\python -c "import importlib.metadata as md; print(md.version('whisperx'), md.version('faster-whisper'), md.version('ctranslate2'))"- Reinstale FFmpeg full shared.
- Valide
ffmpeg -version. - Use
executar.bat --ffmpeg-path-auto.
- Rode:
executar.bat --setup-env --recreate-venv- Use modelo menor (
small/medium). - Use backend
faster_whisper. - Verifique se CUDA está ativo.
- Ajuste chunk/overlap.
- Revise glossário e contexto.
- Use reprocessamento de chunk.
Esta pasta já está preparada para publicação:
.gitignoreconfigurado para ignorar dados locais/caches.- sem caminhos pessoais hardcoded.
- sem venv embutido.
- sem binários gigantes de
whisper_cpp.
Use o checklist completo em:
SMOKE_TEST_10_MIN.md
Resumo rápido (aprovação):
- App sobe e UI abre.
- Conversão curta termina com sucesso.
- Transcrição curta gera
.txt+.srt. - Cancelamento funciona.
- Sem erro crítico persistente no fim de
logs/app.log.
Desenvolvido por Paulo "Faren" Lima - Artifício RPG

