Sem API, sem mensalidade, sem mandar o áudio de ninguém para servidor de terceiro. E a armadilha que faz metade dos tutoriais na internet quebrar na primeira linha.
A empresa Coqui encerrou as atividades. O repositório original foi arquivado e não recebe mais correção nenhuma. Se você seguir um tutorial de 2024, vai instalar um pacote que trava versões antigas de biblioteca e quebra em ambiente novo.
O projeto continua vivo em um fork mantido pelo Idiap Research Institute, um instituto de pesquisa suíço. É esse que você quer.
A regra prática: se o comando que você achou na internet diz pip install TTS, o material está desatualizado. Fecha a aba.
É o modelo que faz o trabalho pesado. Você entrega um trecho de áudio de referência, ele aprende o timbre e passa a falar qualquer texto naquela voz — inclusive em outro idioma.
| Recurso | O que significa na prática |
|---|---|
| 17 idiomas | Inclui português. A mesma voz clonada fala em todos eles. |
| < 200 ms | Latência de streaming. Dá para usar em aplicação que responde ao vivo. |
| ~1100 idiomas | Via modelos Fairseq, para síntese sem clonagem. |
| Cache de voz | Da versão 0.27.0 em diante: clona uma vez, reusa por um ID. |
| Conversão de voz | FreeVC, kNN-VC e OpenVoice — troca a voz de um áudio existente. |
Esta é recente e derruba quem copiou instrução de três meses atrás: a partir da versão 0.27.4, o PyTorch não vem mais junto. Você instala ele antes, separado. Se pular esse passo, o erro que aparece não diz o que está faltando.
# 1. PyTorch primeiro — o uv escolhe CPU ou GPU sozinho $ uv pip install torch torchaudio torchcodec --torch-backend=auto # 2. Agora sim o Coqui $ uv pip install coqui-tts
Sem o uv instalado, troque por pip nos dois comandos — só perde a seleção automática de CPU/GPU.
$ docker run --rm -it -p 5002:5002 \
--entrypoint /bin/bash ghcr.io/idiap/coqui-tts-cpu
Grave um trecho limpo da voz que você quer clonar — sem música ao fundo, sem duas pessoas falando. Salve como .wav e aponte o caminho.
import torch from TTS.api import TTS device = "cuda" if torch.cuda.is_available() else "cpu" tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device) tts.tts_to_file( text="Esta voz não existia até agora.", speaker_wav="referencia.wav", # a voz de origem language="pt", file_path="saida.wav" )
Na primeira execução ele baixa o modelo — são alguns gigabytes, e demora. Da segunda em diante já está em cache.
tts = TTS("voice_conversion_models/multilingual/vctk/freevc24").to(device) tts.voice_conversion_to_file( source_wav="gravacao_original.wav", target_wav="voz_alvo.wav", file_path="convertido.wav" )
Clonar a voz de alguém sem autorização não é travessura técnica. No Brasil, a voz é atributo da personalidade protegido pelo Código Civil, e o timbre é dado biométrico sob a LGPD.
Use na sua própria voz, ou com autorização por escrito de quem vai ser clonado. E quando publicar algo com voz sintética, diga que é sintética. A vantagem de chegar antes não vale processo nem reputação.
| O quê | Onde |
|---|---|
| Repositório | github.com/idiap/coqui-ai-TTS |
| Documentação | coqui-tts.readthedocs.io |
| Pacote | pypi.org/project/coqui-tts |
| Clonagem | Página de cloning, com o cache de vozes |
| Conversão | Página de voice conversion |