NeuTTS Air: clonagem de voz pequena o bastante para caber em um Raspberry Pi
- O que é o NeuTTS Air?
- Vantagens funcionais do NeuTTS Air
- Como a arquitetura equilibra realismo e tamanho
- Primeiros passos com o NeuTTS Air
- Dicas para obter resultados melhores
- NeuTTS Air vs. outros modelos leves no dispositivo
- Perguntas frequentes
- Gere uma voz semelhante a partir de um áudio de referência com a Echora
Transforme textos e gravações em áudio pronto para ouvir
Dublagem, stems, covers e efeitos sonoros, tudo no navegador.
- Texto para fala, e também clonagem de voz
- Separe as faixas, ou gere um cover
- Cadastre-se para ouvir primeiro e decidir depois
A maioria dos modelos TTS realmente leves e adequados para CPU faz uma escolha específica: abre mão da clonagem de voz para reduzir o tamanho e trabalha com uma lista fixa de vozes predefinidas. O NeuTTS Air, da Neuphonic, rejeita essa troca. Ele tem menos de 1 bilhão de parâmetros, foi quantizado para rodar confortavelmente em um celular ou Raspberry Pi e ainda clona uma voz-alvo com apenas 3 segundos de áudio de referência. A Neuphonic descreve essa combinação como o primeiro modelo de linguagem de voz TTS realmente realista e totalmente executado no dispositivo a oferecer clonagem instantânea nesse tamanho.
O que é o NeuTTS Air?
O NeuTTS Air é um modelo open source de text-to-speech sob a licença Apache 2.0, lançado pela Neuphonic em outubro de 2025. Ele usa como arquitetura-base um modelo de linguagem baseado no Qwen2 — listado com 748 milhões de parâmetros no model card oficial e comumente descrito como da “classe 0,5B” — em conjunto com o NeuCodec, codec de áudio neural desenvolvido pela própria Neuphonic. O objetivo central do projeto é a implantação no dispositivo: tudo roda em hardware local, sem que áudio ou texto precisem sair do aparelho, a menos que você escolha enviá-los para outro lugar.
Vantagens funcionais do NeuTTS Air
- Clonagem instantânea de voz com apenas 3 segundos de áudio de referência, um recurso realmente incomum em modelos desse tamanho, pois a maioria usa uma lista fixa de vozes predefinidas.
- Quantização GGUF (Q4 e Q8) criada especificamente para implantação na borda, executada por meio de
llama.cpp/llama-cpp-pythonem celulares, notebooks e computadores de placa única como o Raspberry Pi. - NeuCodec, um codec de áudio altamente eficiente, operando a apenas 0,8kbps com um único livro de códigos e uma taxa de quadros de 50Hz. Essa escolha específica de projeto mantém a qualidade da saída alta apesar do tamanho geral reduzido do modelo.
- Geração em tempo real em hardware realmente modesto: benchmarks publicados mostram desempenho acima de 2 vezes o tempo real em uma CPU AMD Ryzen 9, enquanto um smartphone Samsung Galaxy A25 chega a uma velocidade próxima do tempo real.
- Marca d'água Perth integrada, incorporada automaticamente em cada arquivo de áudio gerado e aplicada por padrão, em vez de ser uma configuração opcional.
- Totalmente aberto sob a Apache 2.0, permitindo uso comercial sem um contrato de licença separado.
Como a arquitetura equilibra realismo e tamanho
A arquitetura-base derivada do Qwen2 do NeuTTS Air cuida da fonemização — por meio de um front-end espeak-ng —, da modelagem de prosódia e do condicionamento da saída tanto pelo texto de entrada quanto pelo estilo do locutor de referência. Em essência, todo o trabalho de raciocínio linguístico e expressivo fica concentrado em um modelo de linguagem com menos de 1 bilhão de parâmetros, em vez de um modelo muito maior. O NeuCodec assume então a parte acústica: como comprime o áudio usando apenas um livro de códigos, e não os vários livros de códigos empilhados dos quais muitos codecs neurais dependem, alcança uma compressão especialmente eficiente — cerca de 0,8kbps com saída a 24kHz — sem o custo de qualidade normalmente associado ao uso de menos livros de códigos. A janela de contexto de 2.048 tokens cobre aproximadamente 30 segundos de áudio, incluindo o prompt de referência. É suficiente para conversas curtas, mas representa uma limitação real se você pretende produzir narração longa, em vez de diálogo no estilo de um assistente.
Primeiros passos com o NeuTTS Air
- Instale os extras GGUF para inferência quantizada em CPU.
uv sync --extra ggufinstala ollama-cpp-python, necessário para executar os checkpoints GGUF Q4/Q8. Adicione tambémuv sync --extra onnxcaso queira usar o decodificador ONNX no lugar do GGUF ou em conjunto com ele. - Escolha o checkpoint da arquitetura-base no Hugging Face.
neuphonic/neutts-airé o modelo de precisão total;neuphonic/neutts-air-q4-ggufeneuphonic/neutts-air-q8-ggufsão as versões quantizadas criadas especificamente para implantação na borda e em CPU. - Prepare um trecho de referência e sua transcrição. O NeuTTS Air precisa tanto de um arquivo WAV de referência limpo e mono —o intervalo ideal documentado é de 3 a 15 segundos— quanto do texto correspondente à transcrição. Uma fala natural, contínua e com poucas pausas funciona melhor do que uma amostra cortada ou muito editada.
- Execute o script de exemplo básico para confirmar a configuração.
python -m examples.basic_example --input_text "your text here" --ref_audio samples/dave.wav --ref_text samples/dave.txté o primeiro teste documentado; ajuste a opção--backbonede acordo com o checkpoint escolhido. - Use diretamente a API Python para fazer a integração. Execute
from neuttsair.neutts import NeuTTSAir, crie uma instância com os valores escolhidos debackbone_repoecodec_repo—neuphonic/neucodecé a opção padrão de codec—, chametts.encode_reference()para o trecho de referência e passe o resultado atts.infer()junto com o texto de destino. - Consulte a coleção NeuTTS-Air no Hugging Face para conhecer outras opções de arquitetura-base antes de presumir que o checkpoint padrão é a única escolha. Há várias variantes documentadas ali para diferentes necessidades de implantação.
Dicas para obter resultados melhores
- Mantenha o trecho de referência limpo e natural, como uma conversa. Um monólogo natural ou uma amostra de conversa com poucas pausas ajuda o modelo a captar o tom com precisão. Música de fundo, falas sobrepostas ou áudio com muita produção prejudicam de forma perceptível a qualidade da clonagem.
- Respeite a janela de contexto de 2.048 tokens ao planejar o conteúdo. Como ela cobre aproximadamente 30 segundos, incluindo o prompt de referência, divida conteúdos mais longos em várias gerações, em vez de esperar que uma única execução processe um trecho extenso.
- Use GGUF Q4 nos dispositivos com mais restrições e Q8 quando houver um pouco mais de margem. O nível de quantização troca diretamente uma pequena parcela de qualidade por velocidade e menor uso de memória. Escolha conforme o hardware de destino específico, em vez de adotar um nível por padrão.
- Considere o NeuTTS Nano se até mesmo 748M parâmetros forem demais. O modelo irmão menor da Neuphonic tem 229M parâmetros no total —120M ativos— e é voltado a implantações na borda ainda mais restritas do que as atendidas pelo próprio NeuTTS Air.
NeuTTS Air vs. outros modelos leves no dispositivo
| NeuTTS Air | Piper | Kokoro-82M | |
|---|---|---|---|
| Parâmetros | ~748M (baseado no Qwen2) | ~15M | 82M |
| Clonagem de voz | Sim, com ~3 segundos | Não, lista fixa de vozes | Não, lista fixa de vozes |
| Formato de implantação | GGUF (Q4/Q8) via llama.cpp | ONNX | PyTorch / ONNX |
| Tempo real em hardware do nível de um smartphone | Sim (benchmark documentado no Galaxy A25) | Sim | Não é um objetivo principal do projeto |
| Marca d'água integrada | Sim (Perth) | Não | Não |
| Idiomas | Inglês (mais forte), espanhol, alemão, francês | 35+ | 8 |
| Licença | Apache 2.0 | MIT (original) / GPL-3.0 (fork atual) | Apache 2.0 |
O nicho específico do NeuTTS Air na categoria de modelos leves executados no dispositivo é ser uma das poucas opções que preserva a clonagem de voz zero-shot nesse tamanho. A maioria dos modelos tão pequenos elimina completamente a clonagem em troca de um tamanho reduzido, exatamente a concessão que o NeuTTS Air foi criado para evitar.
Perguntas frequentes
O NeuTTS Air precisa de uma GPU?
Não. Ele foi otimizado para inferência em CPU por meio da quantização GGUF e roda bem em notebooks modernos ou dispositivos como o Raspberry Pi 4. O suporte a GPU está disponível pelo llama-cpp-python com CUDA ou Metal, caso você queira usá-lo, mas não é obrigatório.
De quanto áudio de referência o NeuTTS Air precisa para clonar uma voz?
Apenas 3 segundos. O intervalo prático ideal documentado é de 3 a 15 segundos de áudio limpo e mono, acompanhado da transcrição correspondente do trecho de referência.
O NeuTTS Air é gratuito para uso comercial?
Sim. Ele é disponibilizado sob a licença Apache 2.0, que permite uso comercial sem um contrato de licença separado.
Por que o NeuTTS Air precisa do espeak?
Ele usa o espeak-ng para converter o texto de entrada em fonemas como uma etapa de pré-processamento, parte essencial de como a arquitetura-base do modelo de linguagem entende quais sons precisa gerar.
Gere uma voz semelhante a partir de um áudio de referência com a Echora
Para um fluxo no navegador com objetivo semelhante, use a Clonagem de voz da Echora. Envie uma gravação da sua própria voz ou de uma voz que você tenha permissão explícita para usar, insira até 5.000 caracteres de texto novo e gere uma nova fala parecida com a referência.