API de clonación de voz para videos traducidos

Conserva la voz de cada hablante cuando tus videos hablen otros idiomas. La API clona cada voz del video original automáticamente, o utiliza un clon de voz personalizado que hayas creado previamente, y devuelve el video con doblaje, las voces clonadas, las pistas de audio y los subtítulos.
Clon de voz instantáneo
Clonación de voz personalizada
REST + Python SDK
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 hablante 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 AI predefinidas para los idiomas que no admitan clonación de voz. Agrega sincronización labial opcional, con costo por separado.

Clon de voz instantáneo

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

Clonación de voz personalizada

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

Una voz por hablante

Los hablantes se separan automáticamente y cada uno conserva su propia voz clonada, para que las entrevistas, los paneles y los podcasts sean fáciles de seguir.

Sincronización labial

Sincroniza el movimiento de la boca con la voz clonada como una tarea opcional en cualquier proyecto terminado, facturada por separado. La detección de rostros se ejecuta primero para que la apliques solo donde funcione.

Audio de fondo preservado

La música, el sonido ambiental y los efectos se separan de la voz y se vuelven a mezclar debajo de la voz clonada, por lo que el resultado mantiene el sonido de la producción original.

Voces AI predefinidas

Para los idiomas sin clonación de voz, o cuando una voz genérica se adapte mejor, elige una voz AI predefinida con un género específico para cualquier hablante.

Identidad de voz en todos los idiomas

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

Cambia una voz, vuelve a doblar a un hablante

Asigna una voz diferente a un hablante y vuelve a generar el contenido. Solo se cobran los segmentos que cambiaron, así que nadie tiene que regrabar nada.

Escala sin límites

Sin límites de frecuencia, 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 hablante en cinco idiomas

Las voces originales en inglés y, después, las voces clonadas en francés, alemán, portugués y español. Cada hablante 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 clones de voz instantáneos. Usa el endpoint /generate después de cambiar voces o editar el guion.
1

Sube tu video

Envía un archivo como datos de formulario multipart, o publica un enlace de YouTube, Google Drive, S3, Vimeo o cualquier URL directa. La voz en este video sirve como muestra para cada clonación de voz instantánea.

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

Crear el proyecto

Envía el ID multimedia 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

Haz una lista de las voces del proyecto, asigna una clonación personalizada o una preestablecida a cualquier hablante, luego usa /generate y descarga los archivos cuando el doblaje esté listo.

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 esa persona.
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 requisitos y las opciones disponibles.

Idiomas y voces

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

Entrega e integración

Webhooks, envío a tu propia cola, entrega directa a tu S3, endpoints personalizados. Cuéntanos cómo quieres alimentar tu flujo.

Volumen y capacidad

El tamaño de los lotes, los idiomas de destino por acción y la prioridad de procesamiento son términos contractuales, 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 para empresas.
Casos de uso

Quién usa una API de clonación de voz

Plataformas con video integrado

Plataformas LMS y de capacitación para clientes, plataformas de creadores y de video con sus aplicaciones móviles, herramientas para seminarios web y eventos virtuales, SaaS de alojamiento y flujo de trabajo de video, plataformas de adopción digital y compras en vivo. Permite que los creadores e instructores conserven su propia voz en los idiomas compatibles con la clonación de voz. Usa voces AI preestablecidas para otros idiomas de destino y convierte el doblaje multilingüe en una función de tu plataforma.

Agencias de localización y producción

Ofrece locuciones personalizadas con la voz del presentador original para el video de cada cliente. Guarda una clonación de voz personalizada para cada presentador recurrente, con su consentimiento por escrito, y reutilízala en cada proyecto a través de la API sin pedirle a nadie que vuelva a grabar.

Producción interna de video continua

Comercio minorista y comercio electrónico internacional, franquicias globales, medios de comunicación y universidades corporativas. Capacitadores, ejecutivos y expertos en productos graban una vez y luego usan su voz clonada para los idiomas de destino compatibles, además de voces AI preestablecidas para otras versiones de mercado de videos de capacitación, actualizaciones de productos y mensajes internos.
Casos de éxito

Equipos reales, resultados medibles

Cómo las empresas localizan videos con Rask, en 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: autenticación, carga, doblaje con clonación de voz instantánea, asignación de una clonación personalizada a un hablante, nuevo doblaje y descarga.
# 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 de HTTP plano para los mismos endpoints.
Progreso

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

Un proyecto avanza a través de un sistema de estados documentado en el primer doblaje y de nuevo después de cada nuevo doblaje, para que tus usuarios vean el progreso real cada vez que cambies una voz. Solo necesitas actuar en tres grupos.

Éxito, detente aquí

merging_done
El doblaje ha finalizado. Consulta el proyecto una vez más para obtener los enlaces de descarga disponibles para tu proyecto.

En progreso, continúa consultando

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Además del equivalente _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 mostrárselos directamente a tu propio usuario.
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

Apúntanos a un endpoint de webhook y cada cambio de estado llegará como una petición POST, para que tu cola de tareas reaccione a cada cambio en el momento en que ocurre. La entrega por webhook forma parte de la incorporación para empresas (enterprise).
Leer la documentación
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Resultado

Voz clonada, video doblado y subtítulos

Descarga el video doblado con las voces clonadas y los subtítulos traducidos en formato 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 con doblaje, listo para publicar
voiceover
WAV
Voz traducida 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
Mismos subtítulos en formato WebVTT para reproductores web
original_video
MP4
Tu archivo de origen guardado como referencia
Control

Cambia una voz y vuelve a doblar únicamente a ese hablante

Las clonaciones instantáneas funcionan para la mayoría de los hablantes. Cuando una voz necesite algo diferente, asígnale una clonación personalizada o una preestablecida y vuelve a generar. Solo se facturan los segmentos modificados.

Edición por segmentos

Edición por segmentos
Cada proyecto muestra su transcripción en segmentos con etiquetas de hablante, por lo que mover una línea a otro hablante o cambiar una voz toma solo una solicitud.
Obtén la transcripción y sus segmentos
Actualiza el texto original y nosotros volvemos a hacer la traducción
Modifica el texto traducido directamente para conservar tus propias palabras
Ajusta las marcas de tiempo, agrega segmentos o elimínalos
Cambia la voz asignada a cualquier hablante

Glosarios para tu terminología

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

Un glosario cubre un par de idiomas y se aplica a todas las variantes regionales de ese idioma de destino; por lo tanto, un solo glosario en español funciona para es-mx y es-es por igual. El proyecto registra glossary_version, de modo que las ediciones posteriores nunca modifiquen el trabajo finalizado en segundo plano.
Entrada

Formatos de archivo compatibles

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

Video

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

Audio

4 formatos
.mp3
.wav
.flac
.m4a

Metadatos antes de gastar

El punto de conexión multimedia devuelve la duración, el tamaño del archivo, el códec de video, 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, ya que 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 GDPR y publica el estado de control en vivo en su Centro de confianza. Las clonaciones de voz personalizadas se crean con el consentimiento del hablante y, por seguridad de los 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 AI cerrado
Nunca se usa para entrenar modelos generales
Exportación completa, sin ataduras

Acceso

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

Empresa

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 AI, supervisión humana
Comparación

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

Una API de clonació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.
Lo que necesitas
Rask API
Armado por partes
Clona a cada hablante del video original
Clonación instantánea de voz, por defecto
Recopila y sube muestras para cada hablante
Voces personalizadas reutilizables
Clones de voz personalizados por voice_id
Una biblioteca de voces que creas y mantienes
Transcripción, traducción, síntesis, mezcla
Una API
De tres a cuatro proveedores y el código para conectarlos
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 voz
Música de fondo y efectos preservados
Incluido
Un paso de separación de fuentes que debes construir y ajustar
Idiomas sin clonación de voz
Voces AI predefinidas
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 doblar a 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.

¿Hay 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 instantánea de voz y el clon de voz personalizado?

¿Puedo crear un clon de voz personalizado a través de la API?

¿Qué audio necesito para un clon de voz personalizado?

¿Qué idiomas son compatibles con la clonación de voz?

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

¿Cómo cambio la voz de un hablante después del doblaje?

¿Cuántas voces personalizadas puedo guardar?

¿Se requiere consentimiento para clonar una voz?

¿La voz clonada mantiene la emoción y el acento del hablante?

¿Puedo usar voces clonadas con fines comerciales?

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

Empieza a hacer doblaje en una sola tarde

Haz tu primera solicitud hoy y habla con nosotros cuando necesites tarifas por volumen o un idioma que nadie más tenga.