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.
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.
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.
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.
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.
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.
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 corre | En el dispositivo del usuario | API alojada |
| El audio sale del dispositivo | No | Sí (se sube a ElevenLabs) |
| Uso sin conexión | Sí | No (requiere internet) |
| Costo por llamada | Ninguno | Facturación por carácter |
| Licencia del modelo | Apache 2.0, pesos abiertos | Propietario, solo SaaS |
| Frecuencia de salida máx. | 48 kHz nativo | 48 kHz (nivel Pro y superior) |
| Idiomas | 30 | 29 (Multilingual v2) · 70+ (Eleven v3) |
| Clip de referencia requerido | 5–30 s | 1 min (Instant) · 30 min (Professional) |
| Diseño de voz desde texto | Sí | Sí |
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.
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.
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."
)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
)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
)La misma ranura de entrada, rellenada con piezas distintas. El modelo nunca ve una bandera: lee la secuencia.
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á.
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.
Lee la investigación original.
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.
| Paquete | Tamaño | Ideal para |
|---|---|---|
| bf16 | ~5.0 GB | Referencia / depuración. |
| int8 predet. | ~3.0 GB | Clonación cotidiana, audiolibros, podcasts. |
| int4 | ~1.9 GB | Despliegues con disco limitado. |
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.wavSigue leyendo.
Cada flag de la CLI, cada modo de generación, notas de uso responsable.
Comparación entre motores: VoxCPM2, CosyVoice3, Qwen3-TTS ICL.
Instala Soniqo en Apple Silicon y ejecuta tu primera síntesis.
Más artículos sobre voz en dispositivo a medida que salen.
