- Biblioteca leve de texto para fala (TTS) baseada em ONNX e
State-of-the-art, que realiza síntese de voz de alta qualidade usando apenas CPU
- O tamanho dos modelos varia de 15M a 80M parâmetros (25 a 80 MB), permitindo execução eficiente mesmo sem GPU
- Oferece 8 vozes integradas, controle de velocidade, pipeline de pré-processamento de texto e saída de áudio em 24 kHz
- Pode ser usada diretamente no Hugging Face e integrada de forma simples com a API em Python
- Solução TTS open source voltada para implantação em dispositivos de borda e integração comercial
Visão geral do Kitten TTS
- Kitten TTS é uma biblioteca open source de TTS baseada em ONNX que realiza síntese de voz de alta qualidade em CPU, sem GPU
- Os modelos têm de 15M a 80M parâmetros e ocupam de 25 a 80 MB em disco
- Na versão 0.8, são oferecidos os modelos 15M, 40M e 80M
- Atualmente está em fase de preview para desenvolvedores, e a API pode mudar no futuro
- Há suporte comercial disponível (suporte à integração, vozes customizadas, licença enterprise)
Principais recursos
- Estrutura ultraleve: começa em 25 MB na versão int8, adequada para implantação em ambientes edge
- Otimizado para CPU: inferência ONNX eficiente mesmo sem GPU
- 8 vozes integradas: Bella, Jasper, Luna, Bruno, Rosie, Hugo, Kiki, Leo
- Controle de velocidade: ajuste da velocidade de fala com o parâmetro
speed
- Pipeline de pré-processamento de texto: trata automaticamente números, moedas, unidades etc.
- Saída em 24 kHz: gera áudio de alta qualidade em taxa de amostragem padrão
Modelos disponíveis
- Quatro modelos são oferecidos
- kitten-tts-mini (80M, 80MB)
- kitten-tts-micro (40M, 41MB)
- kitten-tts-nano (15M, 56MB)
- kitten-tts-nano (int8, 15M, 25MB)
- Alguns usuários relataram problemas com o modelo
kitten-tts-nano-0.8-int8, e recomenda-se abrir uma issue
Demonstração e uso
- Pode ser testado diretamente no navegador via Hugging Face Spaces
- A instalação requer apenas Python 3.8 ou superior e pip
- Exemplo básico de uso:
from kittentts import KittenTTS
model = KittenTTS("KittenML/kitten-tts-mini-0.8")
audio = model.generate("texto", voice="Jasper")
- Recursos avançados: controle de velocidade (
speed), salvamento em arquivo (generate_to_file), consulta da lista de vozes disponíveis
Estrutura da API
KittenTTS(model_name, cache_dir=None)
- Carrega o modelo a partir do Hugging Face Hub
model.generate(text, voice, speed, clean_text)
- Converte texto em áudio de 24 kHz
model.generate_to_file(text, output_path, voice, speed, sample_rate, clean_text)
- Salva diretamente em arquivo a voz sintetizada
model.available_voices
- Retorna a lista de vozes disponíveis
Requisitos do sistema
- Sistema operacional: Linux, macOS, Windows
- Python: 3.8 ou superior
- Hardware: apenas CPU, GPU desnecessária
- Espaço em disco: 25 a 80 MB, dependendo do modelo
- Recomenda-se usar ambiente virtual (venv, conda etc.)
Roadmap
- Estão planejados otimização do motor de inferência, SDK móvel, modelos de alta qualidade, TTS multilíngue e o lançamento do KittenASR
- Apache License 2.0
1 comentários
Comentários do Hacker News
Criei o purr, um wrapper de CLI para o Kitten TTS
o pacote
kittentem uma cadeia de dependências kittentts → misaki[en] → spacy-curated-transformersentão, se você instalar direto com
uv, ele puxa torch e pacotes NVIDIA CUDA (vários GB), embora isso não seja necessário para executar de fatoNa primeira execução apareceu o erro “OSError: PortAudio library not found”, mas resolvi com
apt install libportaudio2Só fiquei curioso se há alguma perda de funcionalidade ao remover as dependências desnecessárias
Projeto realmente incrível
Vou testar eu mesmo em breve
Mas fiquei com uma dúvida — por que não distribuir isso na forma de um executável de linha de comando?
A API também está quase no estilo de manpage, então parece que daria para fazer rapidinho. É só curiosidade
Primeiro quero receber feedback sobre a versão onnx e depois simplificar o processo de execução, incluindo um executável de linha de comando
O que me agradou no OpenClaw foi que, no Discord, bastava mandar uma URL do GitHub e ele já gerava uma mensagem de voz na hora
Em poucos minutos eu já tinha benchmark e áudio de exemplo
A qualidade é impressionante para o tamanho. A voz não é perfeita, mas não é ruim
Num CPU Intel 9700, o modelo 80M rodou em cerca de 1,5x tempo real, e numa GPU 3080 não foi mais rápido
Por enquanto coloquei uma voz mais puxada para animação para mostrar a expressividade
Se puder compartilhar por GitHub issue ou Discord por que está lento na GPU, seria ótimo. Também vou adicionar código de exemplo
Sofri para evitar conflitos de versão do Python e tentei até com Docker, mas no fim tive que configurar tudo manualmente
No fim consegui fazer funcionar, mas odeio Python mesmo
Pelo visto, por enquanto só há suporte para vozes americanas
Pessoalmente, só tenho interesse em sotaques irlandês, britânico e galês. Não curto o americano
Um TTS rodando no próprio dispositivo é realmente excelente como ferramenta de acessibilidade
A maioria dos dispositivos depende de serviços online, e esse tipo de abordagem local é muito melhor
Dá para sentir uma melhoria muito clara em relação ao modelo anterior
Realmente impressionante. Obrigado por compartilhar
Atualmente o modelo 15M já é melhor do que o antigo modelo 80M, e pretendo manter esse ritmo de melhoria
Eu gostaria de ver também um modelo dedicado ao japonês no futuro
O Qwen3-tts suporta japonês, mas às vezes mistura chinês, então acaba não servindo
Só que aí pode haver perda de informação de entonação (por exemplo: 飴 vs 雨)
Se você contar seu caso de uso, eu gostaria de refletir isso na melhoria da qualidade
O desempenho foi impressionante para o tamanho do modelo
Mas houve problema com a pronúncia de números
Tentei “Startup finished in 135 ms.” e o número soou como ruído
Quando troquei para “one hundred and thirty five seconds”, ficou bem melhor
Enquanto isso, dá para resolver adicionando pré-processamento de texto
A maioria dos modelos de TTS lida com isso convertendo números e unidades em texto
Na próxima release isso também deve ser corrigido no nível do modelo
Seria bom mostrar junto áudios de exemplo comparando os quatro modelos
Se houvesse exemplos da mesma frase lida por cada modelo, ficaria fácil de entender
Enquanto isso, você pode testar os modelos diretamente na demo no Hugging Face
Fiquei em dúvida se isso é open source ou se é apenas um modelo com pesos abertos
Até este fim de semana também devo adicionar um phonemizer sob licença MIT, então deve poder ser usado livremente