API de sincronización labial para videos doblados

Sincroniza los movimientos de la boca con el discurso doblado en más de 135 idiomas y opciones regionales. Dobla tu video a través de la API, ejecuta la sincronización labial en el resultado y descarga un video donde el orador en pantalla pronuncia las nuevas palabras. Primero se realiza una verificación de rostros. La sincronización labial se factura por separado del doblaje para cada generación de video completo, incluida la regeneración después de las ediciones.
Minuto de vista previa gratis
Varios rostros en pantalla
REST + SDK de Python
check, preview, sync
OAuth 2.0
# 1. on a dubbed project: confirm the video has a face (runs once, usually automatically)
curl https://api.rask.ai/v2/projects/$ID/lipsync \
  -H "Authorization: Bearer $TOKEN"
#  "check_face_task_status": "done", "video_has_face": true

# 2. preview one free minute of lip-sync
curl -X PUT https://api.rask.ai/v2/projects/$ID/lipsync \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"is_multiple_speakers": true, "is_free_lipsync": true}'

# 3. lip-sync the full video - billed separately from dubbing
curl -X PUT https://api.rask.ai/v2/projects/$ID/lipsync \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"is_multiple_speakers": true, "is_free_lipsync": false}'
GET /v2/projects/{project_id}/lipsync
polling, 15s
# Poll until lipsync_task_status is done, then download lipsync_result_path
while :; do
  curl -s https://api.rask.ai/v2/projects/$ID/lipsync -H "Authorization: Bearer $TOKEN" \
    | jq '{lipsync_task_status, lipsync_task_progress, tasks_in_lipsync_queue}'
  sleep 15
done
Utilizado por equipos globales
Funciones

Todo lo que hace la API de sincronización labial

Agrega sincronización labial a tus videos doblados. Verifica si hay un rostro visible, usa el minuto de vista previa gratis de tu cuenta si está disponible y sigue el progreso a través de la API. La sincronización labial de video completo se factura por separado del doblaje cada vez que la generas.

Sincronización labial en video traducido

Sincroniza los movimientos de la boca con el discurso doblado en un video que tu proyecto haya traducido, en el catálogo compatible de más de 135 idiomas y opciones regionales.

Verificación automática de rostros

Antes de la sincronización labial, una tarea de verificación de rostros confirma que el video tiene al menos un rostro. Se ejecuta una vez por proyecto, generalmente por sí sola, para que conozcas el resultado antes de gastar minutos.

Varios rostros en pantalla

Configura is_multiple_speakers en true para entrevistas, paneles y diálogos con múltiples hablantes. Cuando solo hay un rostro en pantalla a la vez, configúralo en false para acelerar el procesamiento.

Un minuto de vista previa gratis

Cada cuenta recibe un minuto de sincronización labial gratis. Ejecútalo con is_free_lipsync en tu propio material y revisa el resultado antes de sincronizar el video completo.

Facturación separada para cada generación

Cada generación de sincronización labial de video completo se cobra por separado del doblaje. Después de editar el guion o las voces, vuelve a doblar el proyecto y genera una nueva versión sincronizada con un nuevo cargo de sincronización labial.

Posición en la cola y progreso

El endpoint de información de sincronización labial devuelve el número de tareas anteriores a la tuya y el progreso del 0 al 100, para que tus usuarios vean el avance real.

Voces que coinciden con el rostro

La sincronización labial funciona sobre la voz que el proyecto use para un hablante: su voz clonada o un ajuste preestablecido de voz AI.

Edita, vuelve a doblar, vuelve a sincronizar

Cambia el texto, la sincronización o las voces, vuelve a doblar el proyecto y luego ejecuta la sincronización labial nuevamente en la nueva versión. La verificación de rostros no necesita ejecutarse otra vez.

Escala sin límites

Sin límites de frecuencia, sin cuota de concurrencia y sin restricciones por clave. Envía tareas de sincronización labial para todo tu catálogo, y la posición en la cola te indica en qué estado se encuentra cada una.
Míralo en acción

Del discurso doblado a la sincronización de los movimientos de los labios

El mismo clip doblado al francés, alemán, portugués y español. En un proyecto de doblaje como este, la sincronización labial ajusta la posición de los labios al nuevo discurso.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Flujo de trabajo

Tres pasos para pasar de un video doblado a uno con sincronización labial

La sincronización labial se ejecuta en un proyecto que ya está doblado. Usa el endpoint /generate para volver a doblar después de hacer cambios y luego sincroniza los labios de nuevo.
1

Dobla el video

Sube el video original o envía una URL pública, crea un proyecto con un idioma de destino y espera a que aparezca merging_done. La sincronización labial necesita el translated_video de este proyecto.

POST /v2/projects
2

Verifica el rostro

La tarea de verificación de rostros confirma que hay al menos un rostro en el video. Por lo general, comienza de manera automática. Si no ha empezado, ejecútala tú mismo una vez para el proyecto.

PUT /v2/projects/{id}/check_face
3

Ejecuta la sincronización labial y descarga

Ejecuta la tarea de sincronización labial, sigue el progreso con lipsync_task_progress de 0 a 100 y luego descarga el video desde lipsync_result_path.

PUT /v2/projects/{id}/lipsync
El tiempo de procesamiento varía según la duración del video y la fila de espera de la sincronización labial. El endpoint de información de sincronización labial muestra cuántas tareas hay antes de la tuya.
Diseñado a tu medida

¿Necesitas sincronización labial para un caso especial? Habla con nuestro equipo

Mayor rendimiento, prioridad de procesamiento y tu propio método de entrega: cuando una integración de sincronización labial 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 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én usa una API de sincronización labial

Plataformas con video integrado

Plataformas de gestión de aprendizaje (LMS) y de educación para clientes, plataformas de creadores y de video, herramientas de seminarios web y eventos virtuales, SaaS de alojamiento de video y flujos de trabajo, plataformas de adopción digital y compras en vivo. Agrega doblaje con sincronización labial a los videos que tus usuarios y creadores ya alojan, para que los presentadores traducidos se vean naturales en pantalla y la sincronización labial se convierta en una función prémium de tu producto.

Agencias de localización y producción

Ofrece la sincronización labial como un servicio independiente además del doblaje. Usa el minuto de vista previa gratis de tu cuenta, si está disponible, para evaluar el resultado. Incluye la generación de sincronización labial de todo el video y cualquier generación posterior después de la revisión en tu cotización para el cliente.

Producción de video interna y continua

Comercio minorista y electrónico internacional, franquicias globales, medios de comunicación y universidades corporativas. Para videos de marketing, capacitación y ejecutivos donde un rostro ocupa toda la pantalla, la sincronización labial hace que el discurso traducido coincida con el hablante en cámara en todos los mercados.
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 sincronización labial

Un ejemplo completo en cada idioma, en un proyecto que ya esté doblado: verifica el rostro, ejecuta la sincronización labial, sigue el progreso y descarga el resultado.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

PROJECT_ID = "..."   # a project with status merging_done

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

    info = await client.get_lipsync_info(project_id=PROJECT_ID)
    if info.check_face_task_status is not enums.LipsyncStatus.DONE:
        await client.run_check_face_task(project_id=PROJECT_ID)
        while (info := await client.get_lipsync_info(project_id=PROJECT_ID)).check_face_task_status is not enums.LipsyncStatus.DONE:
            await asyncio.sleep(10)
    if not info.video_has_face:
        raise SystemExit("No face found - lip-sync is not available for this video")

    await client.run_lipsync_task(project_id=PROJECT_ID,
        data=schemas.LipsyncTaskData(is_multiple_speakers=True, is_free_lipsync=False))

    while (info := await client.get_lipsync_info(project_id=PROJECT_ID)).lipsync_task_status is not enums.LipsyncStatus.DONE:
        print(info.lipsync_task_progress, info.tasks_in_lipsync_queue)
        await asyncio.sleep(15)

    print(info.lipsync_result_path)

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"
URL  = f"https://api.rask.ai/v2/projects/{PROJECT_ID}"   # a dubbed project

token = requests.post(AUTH, auth=(CLIENT_ID, CLIENT_SECRET),
                      data={"grant_type": "client_credentials"}).json()["access_token"]
h = {"Authorization": f"Bearer {token}"}

info = requests.get(f"{URL}/lipsync", headers=h).json()
if info["check_face_task_status"] != "done":
    requests.put(f"{URL}/check_face", headers=h)
    while (info := requests.get(f"{URL}/lipsync", headers=h).json())["check_face_task_status"] != "done":
        time.sleep(10)
assert info["video_has_face"], "No face found"

requests.put(f"{URL}/lipsync", headers=h,
             json={"is_multiple_speakers": True, "is_free_lipsync": False})

while (info := requests.get(f"{URL}/lipsync", headers=h).json())["lipsync_task_status"] not in ("done", "failed"):
    time.sleep(15)

print(info["lipsync_task_status"], info["lipsync_result_path"])
requests + polling
no SDK required
// no dependencies, Node 18+ global fetch - PROJECT_ID is a dubbed project
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 url = `https://api.rask.ai/v2/projects/${PROJECT_ID}`;
const info = () => fetch(`${url}/lipsync`, { headers: h }).then((r) => r.json());

let i = await info();
if (i.check_face_task_status !== 'done') {
  await fetch(`${url}/check_face`, { method: 'PUT', headers: h });
  while ((i = await info()).check_face_task_status !== 'done') await sleep(10000);
}
if (!i.video_has_face) throw new Error('No face found');

await fetch(`${url}/lipsync`, {
  method: 'PUT', headers: h,
  body: JSON.stringify({ is_multiple_speakers: true, is_free_lipsync: false }),
});

while (!['done', 'failed'].includes((i = await info()).lipsync_task_status)) {
  console.log(i.lipsync_task_progress, i.tasks_in_lipsync_queue);
  await sleep(15000);
}
console.log(i.lipsync_result_path);
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. face check on the dubbed project - start it only if it has not run yet
curl -s https://api.rask.ai/v2/projects/$ID/lipsync -H "Authorization: Bearer $TOKEN" \
  | jq '{check_face_task_status, video_has_face}'
curl -s -X PUT https://api.rask.ai/v2/projects/$ID/check_face -H "Authorization: Bearer $TOKEN"

# 3. run lip-sync (set is_free_lipsync to true for the free preview minute)
curl -s -X PUT https://api.rask.ai/v2/projects/$ID/lipsync \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"is_multiple_speakers": true, "is_free_lipsync": false}'

# 4. follow progress, then download the result
curl -s https://api.rask.ai/v2/projects/$ID/lipsync -H "Authorization: Bearer $TOKEN" \
  | jq '{lipsync_task_status, lipsync_task_progress, lipsync_result_path}'
PUT /v2/projects/{id}/lipsync
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']];
$info = fn() => $json($http->get("/v2/projects/$projectId/lipsync", ['headers' => $h]));

$i = $info();
if ($i['check_face_task_status'] !== 'done') {
    $http->put("/v2/projects/$projectId/check_face", ['headers' => $h]);
    while (($i = $info())['check_face_task_status'] !== 'done') sleep(10);
}
if (!$i['video_has_face']) exit('No face found');

$http->put("/v2/projects/$projectId/lipsync", ['headers' => $h,
    'json' => ['is_multiple_speakers' => true, 'is_free_lipsync' => false]]);

while (!in_array(($i = $info())['lipsync_task_status'], ['done', 'failed'])) sleep(15);
echo $i['lipsync_result_path'];
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 una tarea de sincronización labial reporta el progreso

El endpoint de información de sincronización labial reporta la verificación del rostro, el estado de la tarea, la posición en la fila y el progreso de 0 a 100. Solo necesitas actuar en tres grupos.

Éxito, detente aquí

lipsync_task_status: done
lipsync_task_progress: 100
La sincronización labial está completa. El enlace de descarga se encuentra en lipsync_result_path.

En progreso, continúa consultando

check_face_task_status: started
lipsync_task_status: started
lipsync_task_progress: 0-99
tasks_in_lipsync_queue
Mientras el progreso sea null, la tarea estará en la fila de espera: tasks_in_lipsync_queue muestra cuántas tareas hay por delante.

Error, detener y reportar

lipsync_task_status: failed
check_face_task_status: failed
video_has_face: false
Un video sin un rostro visible no se puede sincronizar labialmente. Si una tarea falla, comunícate con soporte y proporciona tu project_id.
Lip-sync task, as GET /lipsync reports it
GET /v2/projects/{project_id}/lipsync
check face     check_face_task_status  done     video_has_face  true
queued         lipsync_task_status     started  tasks_in_lipsync_queue  2
processing     lipsync_task_progress   0 → 50 → 100
complete       lipsync_task_status     done
               lipsync_result_path     https://...

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

Video con sincronización labial, doblaje y subtítulos

Descarga el video generado desde lipsync_result_path. El proyecto conserva el video doblado sin sincronización labial y los subtítulos traducidos en SRT y VTT, y en los planes elegibles, la voz traducida como pistas de audio separadas.
Campo
Formato
Qué es
lipsync_result_path
MP4
El video con sincronización labial, listo para publicar
voiceover
WAV
Solo la voz traducida, 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
translated_video
MP4
El video doblado sin sincronización labial, para comparar
Control

Edita el doblaje y luego genera una versión actualizada con sincronización labial

Después de cambiar el texto, el tiempo o las voces, vuelve a doblar los segmentos modificados y genera la sincronización labial para el video actualizado. El nuevo doblaje y cada generación completa de sincronización labial se cobran por separado.

Edición a nivel de segmento

Edición a nivel de segmento
Edita segmentos individuales de la transcripción y vuelve a doblar las líneas modificadas. Para actualizar los movimientos de labios, genera una nueva sincronización labial para todo el video; esto se cobra por separado.
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 marca y los términos técnicos se pronuncien igual en cada doblaje, y la sincronización labial siga ese mismo vocabulario.

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 video o envía una URL pública. Los archivos exclusivos de audio no muestran rostros en pantalla, por lo que la sincronización labial aplica solo para formatos de video.

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 video, la velocidad de cuadros, 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 y la sincronización labial se cobran por minuto de duración del video.
Seguridad y cumplimiento normativo

Rostros y voces manejados de forma segura

Brask Inc cuenta con la certificación SOC 2 Type II, opera bajo el RGPD y publica el estado de control en vivo en su Trust Center. Los videos con rostros y voces se procesan en un entorno de IA cerrado.

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

Rask API frente a una canalización de sincronización labial creada por ti

Una API independiente de sincronización labial necesita una pista de audio terminada en el idioma de destino. Rask produce la pista doblada y sincroniza los labios en un solo proyecto. Aquí tienes el mismo resultado, armado de dos maneras.
Lo que necesitas
Rask API
Armado por partes
Una pista de audio traducida para sincronizar
Creado por el mismo proyecto
Primero proveedores de transcripción, traducción y voz
Verificación de rostros antes de pagar
Automático, una vez por proyecto
Tu propio paso de detección de rostros
Varios rostros en pantalla
is_multiple_speakers: true
Rastreo por rostro que tú construyes y ajustas
Vista previa antes de la ejecución completa
Un minuto gratis por cuenta
Paga por cada prueba
Sincroniza de nuevo después de editar el guion
Una nueva generación de sincronización labial para todo el video, cobrada por separado
Paga de nuevo por todo el archivo
Música de fondo y efectos
Se conserva con la nueva voz
Un paso de separación de fuentes que debes crear
Subtítulos en formato .srt y .vtt
Incluido
Generado a partir de tus propios datos de tiempo
Visibilidad de la fila de espera
Posición en la fila de espera y progreso de 0 a 100
Lo que sea que tu proveedor ofrezca
Límites de velocidad
Ninguno
Lo que exija tu proveedor más estricto
Facturación
Por cada generación de sincronización labial de todo el video
Por ejecución, por proveedor
PREGUNTAS FRECUENTES

API de sincronización labial: preguntas frecuentes

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

¿Hay una API de sincronización labial?

¿Puedo sincronizar los labios de un video sin doblarlo antes?

¿Puedo sincronizar mi propia pista de audio?

¿La API genera avatares parlantes a partir de una imagen o un texto?

¿Qué necesita un video para la sincronización labial?

¿Cómo se cobra la sincronización labial?

¿Hay una vista previa gratuita de la sincronización labial?

¿La sincronización labial funciona con varios hablantes?

¿Cómo puedo rastrear el progreso de la sincronización labial?

¿Cuánto tiempo toma la sincronización labial?

¿Qué pasa después de editar el doblaje?

¿Qué pasa si falla la sincronización labial?

¿Cómo obtengo acceso a la API y una clave de API?

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.