API de clonación de voz para videos traducidos

Conserva la voz de cada orador cuando tus videos hablen otros idiomas. La API clona cada voz del video original de manera automática o usa un clon de voz personalizado que hayas creado previamente, y devuelve el video doblado con las voces clonadas, las pistas de audio y los subtítulos.
Clon de voz instantáneo
Clones de voz personalizados
REST + SDK de Python
clone, assign, re-dub
OAuth 2.0
# 1. create the dub - each speaker gets an Instant Voice Clone by default
curl -X POST https://api.rask.ai/v2/projects \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"video_id": "b8f7835d-e8c9-4ff4-8e34-5c336d818319", "dst_lang": "es-mx"}'

# 2. list the voices available in this project
curl https://api.rask.ai/v2/projects/$ID/voices \
  -H "Authorization: Bearer $TOKEN"
#  "label": "Voice Clone", "gender": "auto"         instant clone
#  "label": "Maria Lopez", "sample_src": "https://..."  your custom clone

# 3. assign your custom clone - include every speaker in the map
curl -X PATCH https://api.rask.ai/v2/projects/$ID \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"voice": {"SPEAKER_00": "<custom_voice_id>", "SPEAKER_01": "<voice_id>"}}'
GET /v2/projects/{project_id}
polling, 10s
# 4. re-dub with the new voices, then poll until merging_done
curl -X POST https://api.rask.ai/v2/projects/$ID/generate \
  -H "Authorization: Bearer $TOKEN"
while :; do
  curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" | jq .status
  sleep 10
done
Utilizado por equipos globales
Funciones

Todo lo que hace la API de clonación de voz

Clona a cada orador del video original o usa un clon de voz personalizado que hayas creado una vez, en cada versión traducida y en varios idiomas. Elige voces predefinidas de IA para los idiomas que no tengan clonación de voz. Añade la sincronización labial opcional, que se factura por separado.

Clon de voz instantáneo

Cada orador recibe un clon de su propia voz del video original, sin necesidad de grabar muestras de audio. Se asigna de forma predeterminada en los idiomas de destino compatibles.

Clones de voz personalizados

Crea una voz reutilizable en la app de Rask a partir de muestras de audio limpias, o guarda la voz de un orador de un proyecto existente en tu biblioteca de clones de voz. Con el consentimiento del orador, reutiliza esa voz en los proyectos de la API en los idiomas de destino compatibles.

Una voz por orador

Los oradores se separan automáticamente y cada uno conserva su propia voz clonada, por lo que las entrevistas, los paneles y los podcasts son fáciles de seguir.

Sincronización labial

Sincroniza el movimiento de la boca con la voz clonada como tarea opcional en cualquier proyecto terminado, facturado por separado. La detección de rostros se realiza primero, por lo que solo la aplicas donde vaya a funcionar.

Audio de fondo preservado

La música, el ambiente de la habitación y los efectos se separan de la voz y se vuelven a mezclar debajo de la voz clonada, de modo que el resultado conserva el sonido de la producción original.

Voces predefinidas de IA

Para los idiomas sin clonación de voz, o cuando una voz de catálogo encaje mejor, elige una voz predefinida de IA con un género determinado para cualquier orador.

Identidad de voz en todos los idiomas

El clon habla español, francés o japonés con la voz del orador original, por lo que el presentador sigue sonando como el presentador ante las audiencias globales.

Cambia una voz, vuelve a doblar a un orador

Asigna una voz diferente a un orador y vuelve a generar. Solo se cobran los segmentos que cambiaron, por lo que nadie tiene que grabar nada de nuevo.

Escala sin límites

Sin límites de velocidad, sin cuota de concurrencia y sin restricciones por clave. Dobla todo tu catálogo con voces clonadas en paralelo y al volumen que necesites.
Míralo en acción

Escucha a un orador en cinco idiomas

Las voces originales en inglés, seguidas de las voces clonadas en francés, alemán, portugués y español. Cada orador conserva su propia voz y el audio de fondo permanece intacto.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Flujo de trabajo

Tres pasos del video original a las voces clonadas

Crear el proyecto inicia el doblaje con clonación de voz instantánea. Usa el endpoint /generate después de cambiar las voces o editar el guion.
1

Sube tu vídeo

Envía un archivo como datos de formulario multipart o publica un enlace de YouTube, Google Drive, S3, Vimeo o cualquier URL directa. El discurso en este vídeo es la muestra de voz para cada clonación de voz instantánea.

POST /api/library/v1/media/link
2

Crea el proyecto

Pasa el ID de medios como video_id y un idioma de destino. Cada hablante detectado recibe una clonación de voz instantánea en los idiomas compatibles y el doblaje comienza de inmediato.

POST /v2/projects
3

Asigna voces y vuelve a hacer el doblaje

Lista las voces del proyecto, asigna un clon personalizado o un ajuste preestablecido a cualquier hablante, luego llama a /generate y descarga los archivos cuando el doblaje esté completo.

PATCH /v2/projects/{project_id}
El tiempo de procesamiento varía según el proyecto. Cuando cambias la voz de un hablante, solo se vuelven a doblar y facturar los segmentos de ese hablante.
Diseñado a tu medida

¿Necesitas una voz fuera del catálogo? Habla con nuestro equipo

Clonación de voz para un idioma que aún no es compatible, una biblioteca de voces personalizadas más grande, tu propio método de entrega: cuando un proyecto de voz necesita algo fuera del catálogo público, nuestro equipo revisa tus requerimientos y las opciones disponibles.

Idiomas y voces

¿Necesitas un idioma o una voz que no esté en el catálogo público? Cuéntale al equipo tus necesidades y las opciones disponibles.

Entrega e integración

Webhooks, envío a tu propia cola, entrega directa a tu S3 y endpoints personalizados. Cuéntanos cómo quieres que funcione tu sistema.

Volumen y capacidad

Los tamaños de los lotes, los idiomas de destino por acción y la prioridad de procesamiento son términos del contrato, no límites fijos del producto.

Seguridad y alojamiento

La residencia de datos, SSO y SAML, las reglas de retención y el soporte para revisión de seguridad se gestionan como parte de la incorporación empresarial.
Casos de uso

Quiénes usan una API de clonación de voz

Plataformas con video integrado

Plataformas de LMS y educación para clientes, plataformas de creadores y vídeo y sus aplicaciones móviles, herramientas para seminarios web y eventos virtuales, SaaS de alojamiento de vídeo y flujos de trabajo, plataformas de adopción digital, compras en vivo. Permite que los creadores e instructores conserven su propia voz en los idiomas de clonación de voz compatibles. Usa ajustes preestablecidos de voz AI para otros idiomas de destino y haz que el doblaje multilingüe sea una función de tu plataforma.

Agencias de localización y producción

Ofrece locuciones personalizadas con la voz del presentador original para el vídeo de cada cliente. Mantén un clon de voz personalizado para cada presentador recurrente, con el consentimiento registrado, y reutilízalo en cada proyecto a través de la API sin pedirle a nadie que vuelva a grabar.

Producción de video interna y continua

Retail internacional y comercio electrónico, franquicias globales, medios de comunicación, universidades corporativas. Capacitadores, ejecutivos y expertos en productos graban una vez y luego usan su voz clonada para los idiomas de destino compatibles y ajustes preestablecidos de voz AI para otras versiones de mercado de vídeos de capacitación, actualizaciones de productos y mensajes internos.
Casos de éxito de clientes

Equipos reales, resultados cuantificables

Cómo las empresas localizan videos con Rask, según sus propios números.
flecha
flecha
Código

Ejemplos de código de la API de clonación de voz

Un ejemplo completo en cada idioma: autenticar, subir, doblar con clonación de voz instantánea, asignar un clon personalizado a un hablante, volver a doblar y descargar.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

async def wait(client, job):
    while job.status is not enums.ProjectStatus.MERGING_DONE:
        await asyncio.sleep(10)
        job = await client.get_project(project_id=job.id)
    return job

async def main():
    client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)

    video = await client.create_media_link(data=schemas.MediaCreateLink(link="https://youtu.be/..."))
    while video.status is not enums.MediaStatus.READY:
        await asyncio.sleep(5)
        video = await client.get_media(media_id=video.id)

    # first dub: every speaker gets an Instant Voice Clone
    job = await wait(client, await client.create_project(
        data=schemas.ProjectCreate(video_id=video.id, dst_lang="es-mx")))

    # assign a custom clone to SPEAKER_00, keep the other speakers as they are
    voices = await client.get_project_voices(project_id=job.id)
    custom = next(v for v in voices if v.label == "Maria Lopez")
    voice_map = {**job.voice, "SPEAKER_00": custom.id}
    await client.patch_project(project_id=job.id, data=schemas.ProjectPatch(voice=voice_map))

    job = await wait(client, await client.generate_project(project_id=job.id))
    print(job.translated_video, job.voiceover)

asyncio.run(main())
github.com/braskai/rask-sdk
async, typed models
import time, requests

AUTH = "https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token"
API  = "https://api.rask.ai"
token = requests.post(AUTH, auth=(CLIENT_ID, CLIENT_SECRET),
                      data={"grant_type": "client_credentials"}).json()["access_token"]
h = {"Authorization": f"Bearer {token}"}

def wait(pid):
    while (p := requests.get(f"{API}/v2/projects/{pid}", headers=h).json())["status"] != "merging_done":
        time.sleep(10)
    return p

video = requests.post(f"{API}/api/library/v1/media/link", headers=h, json={"link": "https://youtu.be/..."}).json()
while video["status"] != "ready":
    time.sleep(5)
    video = requests.get(f"{API}/api/library/v1/media/{video['id']}", headers=h).json()

pid = requests.post(f"{API}/v2/projects", headers=h,
                    json={"video_id": video["id"], "dst_lang": "es-mx"}).json()["id"]
project = wait(pid)

voices = requests.get(f"{API}/v2/projects/{pid}/voices", headers=h).json()
custom = next(v for v in voices if v["label"] == "Maria Lopez")
voice_map = {**project["voice"], "SPEAKER_00": custom["id"]}   # every speaker stays in the map

requests.patch(f"{API}/v2/projects/{pid}", headers=h, json={"voice": voice_map})
requests.post(f"{API}/v2/projects/{pid}/generate", headers=h)
print(wait(pid)["translated_video"])
requests + polling
no SDK required
// no dependencies, Node 18+ global fetch
const API = 'https://api.rask.ai';
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
const auth = await fetch('https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token', {
  method: 'POST',
  headers: { Authorization: 'Basic ' + btoa(`${CLIENT_ID}:${CLIENT_SECRET}`) },
  body: new URLSearchParams({ grant_type: 'client_credentials' }),
}).then((r) => r.json());
const h = { Authorization: `Bearer ${auth.access_token}`, 'Content-Type': 'application/json' };
const call = (method, path, body) => fetch(API + path, { method, headers: h, body: body && JSON.stringify(body) }).then((r) => r.json());
const wait = async (id) => { let p; while ((p = await call('GET', `/v2/projects/${id}`)).status !== 'merging_done') await sleep(10000); return p; };

let video = await call('POST', '/api/library/v1/media/link', { link: 'https://youtu.be/...' });
while (video.status !== 'ready') { await sleep(5000); video = await call('GET', `/api/library/v1/media/${video.id}`); }

const { id } = await call('POST', '/v2/projects', { video_id: video.id, dst_lang: 'es-mx' });
const project = await wait(id);

const voices = await call('GET', `/v2/projects/${id}/voices`);
const custom = voices.find((v) => v.label === 'Maria Lopez');
await call('PATCH', `/v2/projects/${id}`, { voice: { ...project.voice, SPEAKER_00: custom.id } });
await call('POST', `/v2/projects/${id}/generate`);

console.log((await wait(id)).translated_video);
fetch, Node 18+
plain HTTP
# 1. token (valid 1 hour - cache and reuse it)
TOKEN=$(curl -s -X POST https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token \
  -u "$CLIENT_ID:$CLIENT_SECRET" -d "grant_type=client_credentials" | jq -r .access_token)

# 2. create the dub - Instant Voice Clones are assigned by default
ID=$(curl -s -X POST https://api.rask.ai/v2/projects -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" -d "{\"video_id\": \"$VIDEO_ID\", \"dst_lang\": \"es-mx\"}" | jq -r .id)

# 3. after merging_done: read the current voice map and the voice options
curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" | jq .voice
curl -s https://api.rask.ai/v2/projects/$ID/voices -H "Authorization: Bearer $TOKEN" | jq '.[] | {id, label, gender}'

# 4. assign voices for every speaker, then re-dub
curl -s -X PATCH https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" -d '{"voice": {"SPEAKER_00": "<custom_voice_id>", "SPEAKER_01": "<voice_id>"}}'
curl -s -X POST https://api.rask.ai/v2/projects/$ID/generate -H "Authorization: Bearer $TOKEN"
PATCH /v2/projects/{id}
OAuth 2.0 client credentials
<?php
use GuzzleHttp\Client;

$http = new Client(['base_uri' => 'https://api.rask.ai']);
$json = fn($r) => json_decode($r->getBody(), true);
$auth = $json((new Client)->post('https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token',
    ['auth' => [$clientId, $clientSecret], 'form_params' => ['grant_type' => 'client_credentials']]));
$h = ['Authorization' => 'Bearer ' . $auth['access_token']];

$wait = function ($id) use ($http, $h, $json) {
    do { sleep(10); $p = $json($http->get("/v2/projects/$id", ['headers' => $h])); }
    while ($p['status'] !== 'merging_done');
    return $p;
};

$id = $json($http->post('/v2/projects', ['headers' => $h,
    'json' => ['video_id' => $videoId, 'dst_lang' => 'es-mx']]))['id'];
$project = $wait($id);

$voices = $json($http->get("/v2/projects/$id/voices", ['headers' => $h]));
$custom = current(array_filter($voices, fn($v) => $v['label'] === 'Maria Lopez'));
$map = array_merge($project['voice'], ['SPEAKER_00' => $custom['id']]);

$http->patch("/v2/projects/$id", ['headers' => $h, 'json' => ['voice' => $map]]);
$http->post("/v2/projects/$id/generate", ['headers' => $h]);
echo $wait($id)['translated_video'];
Guzzle 7
plain HTTP
Python es el SDK oficial. Las pestañas de Node, PHP y cURL son ejemplos simples de HTTP que usan los mismos puntos de conexión.
Progreso

Cómo reporta el progreso un proyecto de clonación de voz

Un proyecto avanza a través de una máquina de estados documentada en el primer doblaje y nuevamente después de cada nuevo doblaje, para que tus usuarios vean el progreso real cada vez que cambias una voz. Solo necesitas actuar en tres grupos.

Éxito, detente aquí

merging_done
El doblaje ha terminado. Vuelve a consultar el proyecto para obtener los enlaces de descarga disponibles.

En progreso, continúa consultando

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Más la coincidencia _done estados. Estos se adaptan perfectamente a una interfaz de progreso por etapas.

Error, detener y reportar

failed
upload_failed
transcription_failed
translation_failed
voiceover_failed
merging_failed
no_audio
no_words
forbidden_link
no_audio, no_words y forbidden_link son lo suficientemente específicos como para mostrarlos directamente a tus propios usuarios.
Observed run, 3:47 source video, en → es-mx
GET /v2/projects/{project_id}
   0s  created
  11s  transcription_started
  87s  translation_started
  99s  voiceover_started
 154s  merging_started
 165s  merging_done

O puedes omitir el sondeo por completo

Indícanos un punto de enlace de webhook y cada cambio de estado llegará como una petición POST, para que tu fila de tareas reaccione a cada cambio en el momento en que ocurre. La entrega por webhook forma parte de la incorporación empresarial.
Leer la documentación
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Salida

Voz clonada, vídeo doblado y subtítulos

Descarga el vídeo doblado con las voces clonadas y subtítulos traducidos en SRT y VTT. En los planes elegibles, también puedes descargar la pista de voz clonada por separado como WAV o mezclada con el audio de fondo original.
Campo
Formato
Qué es
translated_video
MP4
El video doblado, listo para publicar
voiceover
WAV
Discurso traducido solo con la voz clonada para tu propia mezcla
translated_audio
WAV
Voz traducida mezclada con el audio de fondo original
translation_srt_path
.srt
Subtítulos en el idioma de destino
translation_vtt_path
.vtt
Los mismos subtítulos en formato WebVTT para reproductores web
original_video
MP4
Tu archivo de origen tal como se guardó, para referencia
Control

Cambia una voz y luego vuelve a doblar solo a ese hablante

Los clones instantáneos se adaptan a la mayoría de los hablantes. Cuando una voz necesita una opción diferente, asigna un clon personalizado o un ajuste preestablecido a ese hablante y vuelve a generar. Solo se facturan los segmentos modificados.

Edición a nivel de segmento

Edición a nivel de segmento
Cada proyecto expone su transcripción como segmentos con etiquetas de hablante, por lo que mover una línea a otro hablante o cambiar una voz toma una sola solicitud.
Obtén la transcripción y sus segmentos
Actualiza el texto original y nosotros nos encargaremos de traducirlo de nuevo
Modifica el texto traducido directamente para conservar tus propias palabras
Ajusta las marcas de tiempo, agrega segmentos o elimina segmentos
Reasigna la voz asignada a cualquier hablante

Glosarios para terminología

Glosarios para terminología
Adjunta un glosario para que los nombres de marcas, de productos y los términos técnicos se traduzcan de la misma manera en todos los idiomas, sin importar qué voz los hable.

Un glosario cubre un par de idiomas y se aplica a todas las variantes regionales de ese idioma de destino, por lo que un solo glosario en español funciona es-mx y es-es por igual. El registro del proyecto glossary_version, para que las modificaciones posteriores nunca alteren en silencio el trabajo ya terminado.
Entrada

Formatos de archivo compatibles

Sube cualquiera de los siete formatos de vídeo y cuatro de audio, o envía una URL. El discurso en el archivo es la referencia para la clonación de voz instantánea, por lo que un audio claro ofrece los mejores resultados.

Vídeo

7 formatos
.mp4
.mov
.mkv
.avi
.webm
.m4v
.3gp

Audio

4 formatos
.mp3
.wav
.flac
.m4a

Metadatos antes de gastar

El endpoint de medios devuelve la duración, el tamaño del archivo, el códec de vídeo, la velocidad de fotogramas, la resolución, el códec de audio, la frecuencia de muestreo y la distribución de canales. Valida un archivo y calcula el costo por adelantado, porque el doblaje con voces clonadas se cobra por minuto.
Seguridad y cumplimiento normativo

Datos de voz que tu equipo legal puede aprobar

Brask Inc cuenta con la certificación SOC 2 Tipo II, opera bajo el reglamento GDPR y publica el estado de su control en tiempo real en su Centro de Confianza. Las clonaciones de voz personalizadas se crean con el consentimiento del hablante y, para mayor seguridad de tus datos, tu audio nunca se utiliza para entrenar modelos generales.

Certificaciones

SOC 2 Type II
GDPR
Miembro de CAI y C2PA

Cifrado

TLS 1.2 en tránsito
AES-256 en reposo
Llaves administradas SSE-S3
Rotación de llaves al menos cada 12 meses

Tu contenido

Entorno de IA cerrado
Nunca se usa para entrenar modelos generales
Exportación completa, sin ataduras

Acceda a

SSO y SAML
Control de acceso basado en roles
Credenciales de cliente OAuth 2.0

Empresas

Opciones de residencia de datos
SLA personalizados
Gerente de cuenta dedicado

Derechos de voz

Voces sintéticas con derechos de uso
Clonación de voz basada en consentimiento
Controles de seguridad de IA, humano en el circuito
Comparación

API de Rask frente a una infraestructura de voz creada por ti

Una API de conversión de texto a voz da voz al texto que envías. Las voces clonadas en un video traducido también necesitan transcripción, traducción, separación de hablantes, sincronización y mezcla. Aquí tienes el mismo resultado, armado de dos formas diferentes.
Lo que necesitas
Rask API
Armado por partes
Clona a cada hablante del video original
Clonación de voz instantánea por defecto
Recopila y sube muestras para cada hablante
Voces personalizadas reutilizables
Clonaciones de voz personalizadas por voice_id
Una biblioteca de voces que creas y mantienes
Transcripción, traducción, síntesis, mezcla
Una sola API
De tres a cuatro proveedores y el código entre ellos
Detección de hablantes y una voz por hablante
Incluido
Un proveedor de diarización más tu propia lógica de asignación de voces
Música de fondo y efectos preservados
Incluido
Un paso de separación de fuentes que tú construyes y ajustas
Idiomas sin clonación de voz
Voces predefinidas de IA
Otro proveedor de texto a voz
Sincronización labial
Opcional, se cobra por separado
Un proveedor independiente
Cambiar la voz de un hablante
Volver a hacer el doblaje de ese hablante, con cobro por los segmentos modificados
Volver a ejecutar el proceso para todo el archivo
Límites de velocidad
Ninguno
Lo que exija tu proveedor más estricto
Una voz o un idioma fuera del catálogo
A consultar con nuestro equipo
Depende de cada proveedor
PREGUNTAS FRECUENTES

API de clonación de voz: preguntas frecuentes

¿No encuentras lo que buscas? Ponte en contacto con el departamento de ventas.

¿Existe una API para la clonación de voz?

¿Cómo funciona la clonación de voz con la API?

¿Cuál es la diferencia entre la clonación de voz instantánea y la clonación de voz personalizada?

¿Puedo crear una clonación de voz personalizada a través de la API?

¿Qué tipo de audio necesito para crear una clonación de voz personalizada?

¿Qué idiomas admiten la clonación de voz?

¿Puedo usar la API de clonación de voz como texto a voz?

¿Cómo cambio la voz de una persona después del doblaje?

¿Cuántas voces personalizadas puedo guardar?

¿Se requiere consentimiento para clonar una voz?

¿La voz clonada conserva la emoción y el acento de la persona?

¿Puedo usar voces clonadas con fines comerciales?

¿Cuánto cuesta la clonación de voz?

Empieza a hacer doblaje en una tarde

Haz tu primera solicitud hoy y contáctanos cuando necesites términos para grandes volúmenes o un idioma que nadie más tenga.