Cómo cloné mi voz con ElevenLabs y la conecté a Claude (en 4 idiomas)
La guía que prometí en el video: el clon con un minuto de audio, la API de ElevenLabs, el script que genera la voz, el prompt para Claude y lo que costó.
Por Annder Rey · 10 min de lectura
Si llegaste comentando "VOZ", esta es la guía completa. Si ya tienes tu clon hecho y solo quieres conectarlo a Claude, salta al Paso 4.
Empiezo por lo que dije en el video, porque es literal: yo no grabé ese reel. Ni el español, ni el inglés, ni el francés, ni el japonés. Tampoco grabé los siete reels anteriores. Todos los narra un clon de mi voz que hice con un minuto de audio.
No lo hice para dejar de hablar. Lo hice porque grabar era el cuello de botella: cada video eran cuatro o cinco tomas, una frase que salía mal, volver a grabar porque pasó un camión. Ahora escribo el guion, lo reviso y la voz sale en segundos. Si cambio una frase, solo se regenera esa frase.
Aquí va todo el proceso, de cero, en el orden en que lo hice.
Lo que hay detrás del video, en datos
| Qué | Lo que usé |
|---|---|
| Herramienta de voz | ElevenLabs, plan Starter |
| Tipo de clon | Instant Voice Clone (clon instantáneo) |
| Audio para clonar | 1 minuto, grabado con el micrófono de siempre |
| Modelo | Eleven v4 (eleven_v4) |
| Idiomas del video | Español, inglés, francés y japonés |
| Quién arma el video | Claude Code, con Remotion |
| Costo de la voz del video | Menos de diez centavos de dólar |
Eleven v4 habla más de 90 idiomas, y tu clon los habla todos con tu timbre. Yo no hablo japonés: lo que escuchas es mi voz leyendo un texto que tradujo Claude.
Lo que necesitas
- Una cuenta de ElevenLabs con plan Starter o superior. El plan gratuito no permite clonar voces. Cuando escribo esto, Starter cuesta $6 al mes (el primer mes, $1) e incluye 30.000 créditos y el clon instantáneo. Revisa los precios actuales en su página de planes.
- Un minuto de audio limpio de tu voz. Abajo te explico cómo grabarlo.
- Node.js y Claude Code instalados. Si nunca los instalaste, sigue los pasos 1 y 2 de mi guía para crear videos con Claude y Remotion y vuelve aquí.
- Para el video (opcional): un proyecto de Remotion. Esa misma guía te lo deja armado en el paso 3.
Paso 1: graba el minuto de audio
El clon copia todo lo que escucha: tu timbre, pero también el eco del cuarto, el ruido del aire acondicionado y los chasquidos de la boca. La calidad del clon depende mucho más de cómo grabas que del micrófono que tengas.
Lo que recomienda ElevenLabs para el clon instantáneo, y lo que a mí me funcionó:
- Entre 1 y 2 minutos en total. Más de 3 minutos no mejora el resultado y a veces lo empeora. Cada archivo tiene que durar al menos 5 segundos.
- Un cuarto sin eco. Un clóset con ropa o un cuarto con cortinas y cama funcionan mejor que una sala vacía.
- Una sola voz, sin música ni nadie más de fondo.
- El mismo tono de principio a fin. Habla como hablas en tus videos, no como si leyeras un documento. Si en un tramo gritas y en otro susurras, el clon sale impredecible.
- MP3 de 192 kbps o más. WAV no mejora el clon y a veces da problemas al subirlo.
- Volumen parejo, sin picos que saturen. Si no tienes cómo medirlo: que la onda del audio nunca toque el borde.
No necesitas un texto especial. Yo leí en voz alta el guion de uno de mis videos anteriores, con la energía con la que lo diría en un reel. Si no tienes un guion a mano, lee cualquier texto tuyo: un post, un correo largo, la descripción de tu negocio.
Graba con el celular a 20 o 30 cm de la boca, o con el micrófono que uses para tus videos. Si queda algo de ruido de fondo, pásalo por un quitador de ruido (ElevenLabs tiene uno, Voice Isolator) antes de subirlo.
Paso 2: crea el clon en ElevenLabs
- Entra a elevenlabs.io y, en el menú de la izquierda, abre Voices.
- Haz clic en el botón + y elige Instant Voice Clone.
- Sube tu archivo de audio (o grábalo ahí mismo).
- Ponle un nombre que reconozcas. El mío se llama "Voz Annder".
- Confirma que tienes el derecho y el consentimiento para clonar esa voz, y haz clic en Save voice.
El clon tarda unos segundos. Lo vas a encontrar en Voices → My Voices.
Sobre lo de confirmar el consentimiento: solo clona tu propia voz, o la de alguien que te dio permiso explícito. Clonar a otra persona sin su permiso va contra las condiciones de ElevenLabs y, según el país, contra la ley.
Paso 3: pruébalo antes de conectar nada
Antes de tocar la API, comprueba que el clon suena a ti. En My Voices, haz clic en Use voice, elige el modelo Eleven v4 y pega la misma frase en varios idiomas. Estas son las del video:
[confident] This is my voice… but I never recorded it.
[confident] C'est ma voix… mais je ne l'ai jamais enregistrée.
[confident] これは私の声です。でも、録音したことはありません。Lo que está entre corchetes es una etiqueta de emoción: le dice al modelo cómo interpretar la frase. Va en inglés aunque el texto esté en otro idioma. Si quieres dominarlas, tengo una entrada con las emociones que uso y cómo combinarlas.
Escúchalas con atención. Si el clon suena metálico, con eco o con una voz que no es la tuya, el problema casi siempre es el audio de origen: vuelve al Paso 1, graba otra muestra y crea un clon nuevo. No intentes arreglarlo después con ajustes.
Un aviso honesto sobre los idiomas: el inglés y el francés me salieron muy naturales. El japonés suena bien para alguien que no habla japonés, pero si tu audiencia es japonesa, pídele a un nativo que lo escuche antes de publicar.
Paso 4: saca tu API key y el ID de tu voz
Hasta aquí todo se hace a mano en la web. La API es lo que permite que Claude genere la voz por ti: le pasas el guion y vuelven los audios, sin abrir ElevenLabs.
Necesitas dos datos:
La API key. En ElevenLabs, abre la sección de desarrolladores (Developers → API Keys) y crea una key nueva. Te recomiendo restringirla:
- Activa Text to Speech.
- Deja Voices en modo solo lectura y el resto sin acceso.
- Ponle un límite de créditos, para que un error no te gaste el plan entero.
La key se muestra una sola vez: cópiala en ese momento.
El ID de tu voz. En Voices → My Voices, abre el menú de tu clon y copia su Voice ID. Es una cadena de unos 20 caracteres, distinta de la API key.
Ahora, en la carpeta de tu proyecto, crea un archivo llamado .env con los dos datos:
ELEVENLABS_API_KEY=pega_aqui_tu_api_key
ELEVENLABS_VOICE_ID=pega_aqui_el_id_de_tu_vozEste archivo nunca se comparte ni se sube a GitHub. Comprueba que .env aparece en tu archivo .gitignore; si no está, agrégalo en una línea. Con tu API key, cualquiera puede gastar tus créditos.
Paso 5: escribe el guion como datos
Para que un programa genere la voz, el guion tiene que estar en un formato que pueda leer. Yo uso un archivo voz.json con una entrada por escena. Este es el del video, tal cual:
{
"ajustes": { "stability": 0.4, "similarity_boost": 1.0 },
"escenas": [
{ "id": "01-gancho", "texto": "[confident, energetic] Esta es mi voz… [excited] pero yo NO grabé este video." },
{ "id": "02-escucha", "texto": "[excited] Escucha la misma frase en tres idiomas." },
{ "id": "03-ingles", "idioma": "en", "texto": "[confident] This is my voice… but I never recorded it." },
{ "id": "04-frances", "idioma": "fr", "texto": "[confident] C'est ma voix… mais je ne l'ai jamais enregistrée." },
{ "id": "05-japones", "idioma": "ja", "texto": "[confident] これは私の声です。でも、録音したことはありません。" },
{ "id": "06-clonar", "texto": "[curious] ¿Cómo lo hice? Entré a ElevenLabs y subí un audio de UN minuto para clonar mi voz." },
{ "id": "07-claude", "texto": "[excited] Después le pasé la API a Claude… y Claude creó este video completo." },
{ "id": "08-costo", "texto": "[amazed] ¿Y la voz de todo el video? Me costó menos de DIEZ centavos." },
{ "id": "09-cta", "texto": "[excited] Si quieres la guía completa paso a paso, comenta VOZ y te la mando." }
]
}Tres trucos que van en el texto, no en ajustes:
- Puntos suspensivos (…) para una pausa corta.
- MAYÚSCULAS en la palabra que quieres enfatizar, una por frase como máximo.
- Una etiqueta de emoción por frase. El gancho siempre con energía alta (
[excited]o[confident, energetic]): un arranque en voz baja hace que la gente pase de largo.
Los dos ajustes: stability en 0,4 deja que la voz tenga más expresión (más alto suena más plano y estable), y similarity_boost en 1,0 hace que se parezca lo más posible a tu muestra. El campo idioma es opcional: fija el idioma de esa escena para que el modelo no lo adivine.
Paso 6: el script que llama a la API
Este es el puente entre tu guion y ElevenLabs: lee voz.json, manda cada escena a la API y guarda un MP3 por escena. Además guarda los tiempos de cada letra, que son los que después permiten sincronizar los subtítulos palabra por palabra.
Puedes pedirle a Claude Code que lo escriba por ti:
Crea un script de Node llamado voz.mjs, sin dependencias, que lea
voz.json y, por cada escena, llame a la API de ElevenLabs
(POST /v1/text-to-speech/{voice_id}/with-timestamps) con el modelo
eleven_v4, el texto, los ajustes de voz y el idioma si la escena lo
tiene. La API key y el ID de la voz salen de .env
(ELEVENLABS_API_KEY y ELEVENLABS_VOICE_ID). Guarda en la carpeta
audio/ un MP3 por escena con su id y un JSON con los tiempos por
carácter. Que imprima cuántos caracteres gastó cada escena.O copiar directamente esta versión, que es la misma llamada que uso en mis videos, simplificada:
import fs from "node:fs";
const { ELEVENLABS_API_KEY: clave, ELEVENLABS_VOICE_ID: voz } = process.env;
const guion = JSON.parse(fs.readFileSync("voz.json", "utf8"));
fs.mkdirSync("audio", { recursive: true });
let total = 0;
for (const { id, texto, idioma } of guion.escenas) {
const res = await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${voz}/with-timestamps`, {
method: "POST",
headers: { "xi-api-key": clave, "Content-Type": "application/json" },
body: JSON.stringify({
text: texto,
model_id: "eleven_v4",
language_code: idioma,
voice_settings: guion.ajustes,
}),
});
if (!res.ok) throw new Error(`${id}: ${res.status} ${await res.text()}`);
const { audio_base64, alignment } = await res.json();
fs.writeFileSync(`audio/${id}.mp3`, Buffer.from(audio_base64, "base64"));
fs.writeFileSync(`audio/${id}.json`, JSON.stringify(alignment, null, 2));
total += texto.length;
console.log(`✓ ${id} · ${texto.length} caracteres`);
}
console.log(`Total: ${total} caracteres`);Córrelo desde la terminal, en la carpeta del proyecto:
node --env-file=.env voz.mjsDeberías ver una línea con ✓ por escena y, en la carpeta audio/, un MP3 y un JSON por cada una. Escucha todos los audios antes de seguir.
Si algo falla, el mensaje te dice qué pasó:
- 401: la API key está mal copiada o no tiene permiso de Text to Speech.
- 404 o "voice not found": el ID de la voz está mal copiado.
- Una frase que suena rara: cambia el texto (otra puntuación, otra etiqueta) y vuelve a generar solo esa escena. Cada generación cuesta caracteres, así que no regeneres todo por una frase.
Paso 7: pídele a Claude que arme el video
Con los audios y sus tiempos listos, Claude Code ya tiene todo para programar el video en Remotion. En mi caso la terminal muestra literalmente eso: la key tapada, el comando de la voz y Claude armando las nueve escenas.
Este es el prompt base, para pegarlo con el proyecto de Remotion abierto:
En audio/ están el MP3 de cada escena del guion de voz.json y un
JSON con los tiempos por carácter que devolvió ElevenLabs.
1. Convierte esos tiempos en tiempos por palabra.
2. Arma una composición de Remotion de 1080×1920 a 30 fps con una
escena por entrada de voz.json, en ese orden, y que cada escena
dure lo que dura su audio.
3. Subtítulos palabra por palabra sincronizados con la voz, con la
palabra activa en mi color de acento.
4. En las escenas de otros idiomas, muestra en grande el código del
idioma (EN, FR, JA) y debajo la traducción al español.
5. Sigue la identidad visual de CLAUDE.md.
Empieza por la escena 1 y muéstramela antes de seguir.Para el japonés, avísale que necesita una fuente con caracteres japoneses (yo usé Noto Sans JP), porque la mayoría de las fuentes latinas no los tienen y el texto sale en cuadritos.
Y si todavía no tienes tu CLAUDE.md con la paleta, la tipografía y las reglas de tu marca, arma eso primero: sin él, Claude elige por ti y el video se ve como el de cualquiera. Está explicado en el paso 4 de la guía base.
Paso 8: cuánto cuesta de verdad
Cuando escribo esto, Eleven v4 cuesta $0,08 por cada 1.000 caracteres por API. Las etiquetas de emoción también cuentan como caracteres.
Las cuentas del video:
| Qué | Caracteres | Costo |
|---|---|---|
| La versión principal completa | 594 | ~$0,05 |
| Las cuatro versiones del reel (cuerpo + cuatro ganchos) | 879 | ~$0,07 |
Por eso digo "menos de diez centavos": incluso generando las cuatro versiones que publico como prueba, la voz no llega a diez centavos. Lo que sí pagas aparte es el plan de ElevenLabs y tu suscripción de Claude.
Para ver tu gasto real, revisa el contador de créditos de tu cuenta antes y después de generar. También puedes pedírselo a la API:
curl -s https://api.elevenlabs.io/v1/user/subscription \
-H "xi-api-key: $ELEVENLABS_API_KEY"El campo character_count es lo que llevas gastado en el ciclo, y character_limit, lo que te da tu plan.
Cómo llevarlo a tu caso
Tus videos en otros idiomas. Este es el uso que más me interesa. Escribes el guion una vez en español y le pides a Claude la versión en inglés:
Traduce el guion de voz.json al [inglés] para un reel. No traduzcas
palabra por palabra: adapta las frases para que suenen naturales
dichas en voz alta, con la misma duración aproximada. Mantén las
etiquetas de emoción entre corchetes y las MAYÚSCULAS de énfasis.
Agrega "idioma": "[en]" a cada escena y guárdalo como voz-en.json.Después cambias voz.json por voz-en.json en el script y generas. La animación es la misma; solo cambian el audio y los subtítulos.
Correcciones sin regrabar. Si un dato cambió o te equivocaste en una frase, editas el texto y regeneras solo esa escena.
Versiones para probar ganchos. Con la voz en la API, hacer tres o cuatro arranques distintos del mismo video cuesta centavos. Así pruebo cuál retiene más en los reels de prueba de Instagram.
Lo que no hace (y errores comunes)
- No reemplaza tu criterio en otros idiomas. El clon pronuncia lo que le das. Si la traducción es mala, la va a decir con tu voz y con total seguridad. En idiomas que no dominas, que lo revise alguien que sí los hable.
- El clon instantáneo no es perfecto. Para un parecido mayor existe el clon profesional (Professional Voice Clone), que pide bastante más audio y un plan Creator o superior. Para reels, el instantáneo me alcanza.
- No dice el nombre de las cosas como tú. Marcas, siglas y nombres propios a veces salen mal. Escríbelos como se pronuncian ("ei ai" en vez de "AI", por ejemplo) y escucha cómo quedan.
- Si una etiqueta se lee en voz alta, cámbiala por una emoción parecida o descríbela con otras palabras.
- Tu voz es un dato sensible. No subas la muestra a herramientas que no conoces, no compartas tu API key, y desconfía si alguien te llama "con tu voz" pidiendo dinero. Lo mismo que hace fácil clonarte para tus videos lo hace fácil para otros.
Por qué funciona
La voz es lo que más se nota cuando un video está hecho con IA. Y aun así, lo que hace que mis reels suenen a mí no es el clon: es el guion. Qué digo, en qué orden, dónde va la pausa, qué palabra se enfatiza. El clon pone la voz y los idiomas; yo pongo lo que vale la pena decir. Eso es P = E × IA.
Fuentes: planes de ElevenLabs, guía del clon instantáneo, modelos e idiomas, texto a voz con tiempos y autenticación de la API. Datos revisados el 31 de octubre de 2026.
Un minuto de audio te da la voz. Lo que dices con ella sigue siendo cosa tuya.