Clonar uma voz a 48 kHz
com VoxCPM2.
Um novo modelo de TTS acaba de chegar ao Soniqo. Roda no seu laptop, produz áudio de qualidade de estúdio a 48 kHz e clona uma voz a partir de um único clipe curto. Este post percorre o que você pode construir com ele, as três formas de clonar uma voz e um olhar amigável sobre como o modelo funciona por dentro.
Quatro coisas que mudam quando a clonagem roda localmente.
Rodar a clonagem no dispositivo desbloqueia quatro propriedades de uma vez: privacidade, uso offline, custo zero por chamada e posse total da voz. Cada uma abre uma classe de produto difícil de construir de outra forma.
Grave 30 segundos de um pai ou mãe lendo. O app de audiolivro então narra qualquer capítulo na voz dele — mesma calidez, mesmo sotaque, gerado localmente a cada sessão.
YouTubers e podcasters mantêm uma voz consistente em 30 idiomas. Grave uma vez em inglês e publique o mesmo episódio em japonês, espanhol e híndi sem um elenco de vozes.
Quem enfrenta a perda da voz pode guardá-la num clipe curto e continuar falando por tecnologia assistiva que soa como a pessoa — não como um motor de TTS genérico.
Descreva a voz que você quer — "mulher jovem, suave e calorosa" — e o modelo a projeta sem gravação de referência. Útil para NPCs de jogos, avisos de quiosque ou testes A/B de vozes de marca.
Como o VoxCPM2 se compara ao ElevenLabs.
O ElevenLabs é a alternativa óbvia de API na nuvem. O trade-off é o que roda onde — e de quem é a voz depois.
Para produtos que precisam de garantias de privacidade, operação offline ou custo zero por chamada, a clonagem no dispositivo é a única opção — cada chamada ao ElevenLabs envia áudio para os servidores deles.
| VoxCPM2 (Soniqo) | ElevenLabs | |
|---|---|---|
| Onde roda | No dispositivo do usuário | API hospedada |
| O áudio sai do dispositivo | Não | Sim (enviado ao ElevenLabs) |
| Uso offline | Sim | Não (requer internet) |
| Custo por chamada | Nenhum | Cobrança por caractere |
| Licença do modelo | Apache 2.0, pesos abertos | Proprietário, só SaaS |
| Taxa de saída máx. | 48 kHz nativo | 48 kHz (nível Pro e acima) |
| Idiomas | 30 | 29 (Multilingual v2) · 70+ (Eleven v3) |
| Clipe de referência exigido | 5–30 s | 1 min (Instant) · 30 min (Professional) |
| Design de voz por texto | Sim | Sim |
Ambos os motores chegam a 48 kHz; ambos suportam um leque de idiomas semelhante para clonagem cotidiana; ambos oferecem design de voz a partir de uma descrição em texto. A diferença genuína é se o áudio chega a sair do dispositivo.
Um modelo, três formas de entrar.
O modelo é o mesmo em cada chamada. O que muda são os argumentos que você passa: isso decide se você está projetando uma voz a partir de uma descrição, copiando uma gravada ou preservando um sotaque.
Descreva a voz em linguagem natural. O modelo escolhe uma voz correspondente e permanece consistente entre chamadas.
let audio = try await tts.generateVoxCPM2(
text: "Welcome to the show.",
instruct: "A young woman, gentle and warm voice."
)Passe qualquer trecho de 5–30 s de fala limpa. O modelo copia o timbre e o ritmo e sintetiza novo texto naquela voz.
let ref = try AudioFileLoader.load(
url: URL(fileURLWithPath: "speaker.wav"),
targetSampleRate: 16000
)
let audio = try await tts.generateVoxCPM2(
text: "This is a cloned voice.",
refAudio: ref
)Passe o clipe E sua transcrição. O modelo pode então alinhar traços acústicos com fonemas — sotaque e escolhas vocálicas se mantêm.
let audio = try await tts.generateVoxCPM2(
text: "Hello from the cloned voice.",
refAudio: ref,
promptText: "this is what the reference clip actually said",
promptAudio: ref
)O mesmo slot de entrada, preenchido com peças diferentes. O modelo nunca vê uma flag — ele lê a sequência.
Como o VoxCPM2 produz áudio.
Quatro módulos que cooperam. Você não precisa saber nada disso para usar o modelo, mas se está curioso de onde vêm os 48 kHz — aqui está.
O pipeline começa com um codificador local (LocEnc) que funde tokens de texto e (opcionalmente) áudio de referência num único fluxo de vetores. Esse fluxo alimenta o TSLM — um modelo de linguagem MiniCPM-4 de 28 camadas que decide qual "patch" de áudio vem a seguir, do mesmo jeito que um LM de texto escolhe o próximo token. Uma segunda passada pelo RALM refina cada patch.
Até aqui tudo é um transformer. A reviravolta interessante é o LocDiT: em vez de escolher de um vocabulário fixo de tokens de áudio discretos, ele roda um pequeno processo de difusão para pintar o latente de áudio em cada slot. Sem codec discreto não há gargalo de quantização — e é isso que permite ao estágio final, AudioVAE V2, decodificar direto para 48 kHz. Qualquer outro motor no dispositivo desta pilha esbarra em 24 kHz.
A divisão vale nota: o LM autorregressivo é ótimo em decidir o que deve vir a seguir (conteúdo, ritmo, duração); a cabeça de difusão é ótima em pintar o detalhe acústico (fase, espectro). O VoxCPM2 deixa cada um fazer o que sabe. É por isso que o modelo se sustenta com apenas 2B de parâmetros — a arquitetura conquista a qualidade percebida, não o tamanho.
Leia a pesquisa original.
Três tamanhos. Escolha pelo seu orçamento de disco.
Os três pacotes rodam a mesma arquitetura; diferem só em quão agressivamente o modelo de linguagem é quantizado. O pacote int8 é o padrão recomendado — iguala o pipeline Python upstream no benchmark de ida e volta de 8 frases, sendo mais rápido e 40% menor que o bf16.
| Pacote | Tamanho | Ideal para |
|---|---|---|
| bf16 | ~5.0 GB | Referência / depuração. |
| int8 padrão | ~3.0 GB | Clonagem cotidiana, audiolivros, podcasts. |
| int4 | ~1.9 GB | Implantações com disco limitado. |
Pela CLI.
# Voice design — no reference clip
speech speak "Welcome to the show." \
--engine voxcpm2 \
--voxcpm2-instruct "A young woman, gentle and warm voice." \
--output design.wav
# Reference cloning — 5–30 s clean clip
speech speak "This is a cloned voice." \
--engine voxcpm2 \
--voxcpm2-variant int8 \
--voice-sample speaker.wav \
--output clone.wavContinue lendo.
Cada flag da CLI, cada modo de geração, notas de uso responsável.
Comparação entre motores: VoxCPM2, CosyVoice3, Qwen3-TTS ICL.
Instale o Soniqo no Apple Silicon e rode sua primeira síntese.
Mais posts sobre voz no dispositivo conforme saem.
