Blog·
Clonación de voz
May 17, 2026

Clonar una voz a 48 kHz
con VoxCPM2.

Un nuevo modelo de TTS acaba de llegar a Soniqo. Corre en tu portátil, produce audio de calidad de estudio a 48 kHz y clona una voz a partir de un solo clip corto. Este artículo recorre lo que puedes construir con él, las tres maneras en que te deja clonar una voz y una mirada amena a cómo funciona el modelo por dentro.

Lo que puedes construir

Cuatro cosas que cambian cuando la clonación corre localmente.

Correr la clonación en el dispositivo desbloquea cuatro propiedades a la vez: privacidad, uso sin conexión, cero costo por llamada y propiedad total de la voz. Cada una abre una clase de producto incómoda de construir de cualquier otra forma.

Narradores personales de audiolibros

Graba 30 segundos de un padre o madre leyendo. La app de audiolibros narra luego cualquier capítulo con su voz: la misma calidez, el mismo acento, generado localmente en cada sesión.

Contenido multilingüe de creadores

YouTubers y podcasters mantienen una voz consistente en 30 idiomas. Graba una vez en inglés y publica el mismo episodio en japonés, español e hindi sin un elenco de voces.

Accesibilidad y banco de voz

Quienes enfrentan la pérdida de la voz pueden guardarla en un clip corto y seguir hablando mediante tecnología asistiva que suena como ellos, no como un motor de TTS genérico.

Voces de producto bajo demanda

Describe la voz que quieres —"mujer joven, suave y cálida"— y el modelo la diseña sin una grabación de referencia. Útil para NPCs de juegos, avisos de kioscos o pruebas A/B de voces de marca.

En dispositivo vs alojado

Cómo se compara VoxCPM2 con ElevenLabs.

ElevenLabs es la alternativa obvia de API en la nube. La disyuntiva es qué corre dónde, y quién es dueño de la voz después.

Para productos que necesitan garantías de privacidad, operación sin conexión o cero costo por llamada, la clonación en dispositivo es la única opción: cada llamada a ElevenLabs sube audio a sus servidores.

VoxCPM2 (Soniqo)ElevenLabs
Dónde correEn el dispositivo del usuarioAPI alojada
El audio sale del dispositivoNoSí (se sube a ElevenLabs)
Uso sin conexiónNo (requiere internet)
Costo por llamadaNingunoFacturación por carácter
Licencia del modeloApache 2.0, pesos abiertosPropietario, solo SaaS
Frecuencia de salida máx.48 kHz nativo48 kHz (nivel Pro y superior)
Idiomas3029 (Multilingual v2) · 70+ (Eleven v3)
Clip de referencia requerido5–30 s1 min (Instant) · 30 min (Professional)
Diseño de voz desde texto

Ambos motores alcanzan 48 kHz; ambos soportan un abanico de idiomas similar para clonación cotidiana; ambos ofrecen diseño de voz desde una descripción de texto. La diferencia genuina es si el audio llega a salir del dispositivo.

Tres modos de clonación

Un modelo, tres formas de entrar.

El modelo es el mismo en cada llamada. Lo que cambia es qué argumentos pasas: eso decide si estás diseñando una voz desde una descripción, copiando una grabada o preservando un acento.

Diseño de voz
Cuando no tienes una grabación de referencia.

Describe la voz en lenguaje natural. El modelo elige una voz que coincide y se mantiene consistente entre llamadas.

let audio = try await tts.generateVoxCPM2(
    text: "Welcome to the show.",
    instruct: "A young woman, gentle and warm voice."
)
Clonación por referencia
Cuando tienes un clip corto del hablante objetivo.

Pasa cualquier fragmento de 5–30 s de habla limpia. El modelo copia el timbre y el ritmo y sintetiza texto nuevo con esa 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
)
Clonación definitiva
Cuando el hablante tiene un acento distintivo y quieres preservarlo.

Pasa el clip Y su transcripción. El modelo puede ahora alinear rasgos acústicos con fonemas: el acento y las elecciones vocálicas se conservan.

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
)
Three cloning modes, same modelEach mode arranges different pieces in the input sequence before the model. Voice design adds a written description, reference cloning adds an audio prefix, and ultimate cloning adds a paired audio-and-transcript example.Voice design(description)text to sayReference cloningreference audiotext to sayUltimate cloningreference audiotranscripttext to sayprompt audioaudio framestext conditiontext to synthesise

La misma ranura de entrada, rellenada con piezas distintas. El modelo nunca ve una bandera: lee la secuencia.

Bajo el capó

Cómo produce audio VoxCPM2.

Cuatro módulos que cooperan. No necesitas saber nada de esto para usar el modelo, pero si tienes curiosidad de dónde salen los 48 kHz, aquí está.

VoxCPM2 architectureText and optional voice prompts feed an autoregressive language model and a residual refiner. A local diffusion transformer produces audio latents which the AudioVAE V2 decodes to a 48 kHz waveform.TextVoice prompt audioVoice instructionPrompt transcriptLocEncaudio + text fused into one streamTSLM · MiniCPM-4 backbone28-layer autoregressive LMdecides what audio patch comes nextRALMrefines each patch for prosodic detailLocDiT · diffusion estimatorpaints the audio latent in each slotAudioVAE V2 → 48 kHz waveform

El pipeline empieza con un codificador local (LocEnc) que fusiona tokens de texto y (opcionalmente) audio de referencia en un solo flujo de vectores. Ese flujo alimenta el TSLM: un modelo de lenguaje MiniCPM-4 de 28 capas que decide qué "parche" de audio viene a continuación, igual que un LM de texto elige el siguiente token. Una segunda pasada por el RALM refina cada parche.

Hasta aquí todo es un transformador. El giro interesante es el LocDiT: en lugar de elegir de un vocabulario fijo de tokens de audio discretos, ejecuta un pequeño proceso de difusión para pintar el latente de audio en cada ranura. Sin códec discreto no hay cuello de botella de cuantización, y eso es lo que permite que la etapa final, AudioVAE V2, decodifique directo a 48 kHz. Cualquier otro motor en dispositivo de esta pila se topa con un límite de 24 kHz.

La división vale la pena notarla: el LM autorregresivo es genial decidiendo qué debería venir a continuación (contenido, ritmo, duración); la cabeza de difusión es genial pintando el detalle acústico (fase, espectro). VoxCPM2 deja que cada uno haga lo que sabe hacer. Por eso el modelo se defiende con solo 2B de parámetros: la arquitectura gana la calidad perceptual, no el tamaño.

El artículo

Lee la investigación original.

VoxCPM: Tokenizer-Free TTS for Context-Aware Speech Generation and True-to-Life Voice Cloning
OpenBMB · arXiv:2509.24650 · Sept 2025
Ver en arXiv
Paquetes

Tres tamaños. Elige por tu presupuesto de disco.

Los tres paquetes corren la misma arquitectura; solo difieren en cuán agresivamente se cuantiza el modelo de lenguaje. El paquete int8 es el predeterminado recomendado: iguala al pipeline Python upstream en el benchmark de ida y vuelta de 8 frases, y a la vez es más rápido y 40% más pequeño que bf16.

PaqueteTamañoIdeal para
bf16~5.0 GBReferencia / depuración.
int8
predet.
~3.0 GBClonación cotidiana, audiolibros, podcasts.
int4~1.9 GBDespliegues con disco limitado.
Pruébalo

Desde la 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.wav
Qué sigue

Sigue leyendo.