Aplicação web local que transforma texto (capítulos de livros, web novels, etc.) em narração com voz neural, rodando 100% na sua máquina. Cole o texto, aperte play e acompanhe a leitura com highlight palavra a palavra sincronizado com o áudio.
/api/download?format=wav).[PERSONAGENS]/[ROTEIRO] e cada personagem ganha uma voz própria, atribuída de forma determinística e persistida em characters.json (edite o arquivo para trocar a voz de alguém). Use o TEMPLATE_IA.md como prompt em qualquer LLM para converter um capítulo comum nesse formato.XTTS_INSTANCES) gera vários trechos ao mesmo tempo, enquanto o alinhamento roda em paralelo no faster-whisper (CTranslate2, ~4x mais rápido que o openai-whisper). Se a VRAM acabar, reduza XTTS_INSTANCES para 1.| Motor | Modelo | Multi-vozes | Observações |
|---|---|---|---|
| XTTS-v2 (padrão) | Coqui XTTS-v2 | ✅ (58 speakers embutidos) | Autoregressivo; alucinações mitigadas por chunks curtos, sampling conservador e verificação com Whisper |
| TADA | HumeAI/tada-3b-ml | ✅ (clonagem) | Alinhamento texto-áudio forçado: não pula nem inventa palavras |
| F5-TTS | firstpixel/F5-TTS-pt-br | ❌ (voz única de referência) | Finetune pt-BR com clonagem da voz em f5_reference.wav |
O modo multi-vozes do TADA clona os speakers embutidos do XTTS a partir de áudios de referência em voice_refs/, gerados uma única vez com:
python generate_voice_refs.py # todas as 58 vozes (~5 min)
python generate_voice_refs.py --registry # só as vozes já usadas no characters.json
python -m venv .venv
.venv\Scripts\activate
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu128
pip install fastapi uvicorn coqui-tts f5-tts hume-tada openai-whisper faster-whisper librosa soundfile
run.bat # ou: .\run.ps1
Abre http://127.0.0.1:8000 no navegador. Cole o texto (puro ou no formato de roteiro), escolha o motor e clique em Processar texto.
server.py # API FastAPI: sessão de narração, worker de geração, seek, heartbeat
tts_engine.py # chunking com spans + síntese com alinhamento (lock de GPU)
alignment.py # alinhamento palavra-tempo via Whisper + corte de alucinação final
characters.py # parser do formato de roteiro e registro personagem -> voz
engines/ # xtts_engine, f5tts_engine, tada_engine (interface comum)
static/ # frontend (HTML/CSS/JS puro)
generate_voice_refs.py # gera os áudios de referência para clonagem no TADA
TEMPLATE_IA.md # prompt pronto para converter capítulos em roteiro multi-vozes
Arquivos gerados em runtime (fora do git): characters.json (registro de vozes), voice_refs/ (áudios de referência e cache de prompts do TADA).
3 commits
Python
74.3%
JavaScript
17.7%
CSS
4.6%
HTML
2.9%
Aplicação web local que transforma texto (capítulos de livros, web novels, etc.) em narração com voz neural, rodando 100% na sua máquina. Cole o texto, aperte play e acompanhe a leitura com highlight palavra a palavra sincronizado com o áudio.
/api/download?format=wav).[PERSONAGENS]/[ROTEIRO] e cada personagem ganha uma voz própria, atribuída de forma determinística e persistida em characters.json (edite o arquivo para trocar a voz de alguém). Use o TEMPLATE_IA.md como prompt em qualquer LLM para converter um capítulo comum nesse formato.XTTS_INSTANCES) gera vários trechos ao mesmo tempo, enquanto o alinhamento roda em paralelo no faster-whisper (CTranslate2, ~4x mais rápido que o openai-whisper). Se a VRAM acabar, reduza XTTS_INSTANCES para 1.| Motor | Modelo | Multi-vozes | Observações |
|---|---|---|---|
| XTTS-v2 (padrão) | Coqui XTTS-v2 | ✅ (58 speakers embutidos) | Autoregressivo; alucinações mitigadas por chunks curtos, sampling conservador e verificação com Whisper |
| TADA | HumeAI/tada-3b-ml | ✅ (clonagem) | Alinhamento texto-áudio forçado: não pula nem inventa palavras |
| F5-TTS | firstpixel/F5-TTS-pt-br | ❌ (voz única de referência) | Finetune pt-BR com clonagem da voz em f5_reference.wav |
O modo multi-vozes do TADA clona os speakers embutidos do XTTS a partir de áudios de referência em voice_refs/, gerados uma única vez com:
python generate_voice_refs.py # todas as 58 vozes (~5 min)
python generate_voice_refs.py --registry # só as vozes já usadas no characters.json
python -m venv .venv
.venv\Scripts\activate
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu128
pip install fastapi uvicorn coqui-tts f5-tts hume-tada openai-whisper faster-whisper librosa soundfile
run.bat # ou: .\run.ps1
Abre http://127.0.0.1:8000 no navegador. Cole o texto (puro ou no formato de roteiro), escolha o motor e clique em Processar texto.
server.py # API FastAPI: sessão de narração, worker de geração, seek, heartbeat
tts_engine.py # chunking com spans + síntese com alinhamento (lock de GPU)
alignment.py # alinhamento palavra-tempo via Whisper + corte de alucinação final
characters.py # parser do formato de roteiro e registro personagem -> voz
engines/ # xtts_engine, f5tts_engine, tada_engine (interface comum)
static/ # frontend (HTML/CSS/JS puro)
generate_voice_refs.py # gera os áudios de referência para clonagem no TADA
TEMPLATE_IA.md # prompt pronto para converter capítulos em roteiro multi-vozes
Arquivos gerados em runtime (fora do git): characters.json (registro de vozes), voice_refs/ (áudios de referência e cache de prompts do TADA).
3 commits
Python
74.3%
JavaScript
17.7%
CSS
4.6%
HTML
2.9%