API de sincronização labial para vídeos dublados

Ajuste os movimentos da boca à fala dobrada em mais de 135 opções de idiomas e regiões. Faça a dobragem do seu vídeo através da API, execute a sincronização labial no resultado e descarregue um vídeo onde o orador no ecrã diz as novas palavras. É realizada primeiro uma verificação facial. A sincronização labial é faturada separadamente da dobragem para cada geração de vídeo completo, incluindo a nova geração após edições.
Minuto de pré-visualização gratuito
Vários rostos no ecrã
REST + SDK 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 equipas globais
Funcionalidades

Tudo o que a API de sincronização labial faz

Adicione sincronização labial aos seus vídeos dobrados. Verifique se existe um rosto visível, utilize o minuto de pré-visualização gratuito da sua conta, se disponível, e acompanhe o progresso através da API. A sincronização labial de vídeos completos é faturada separadamente da dobragem sempre que a gerar.

Sincronização labial em vídeo traduzido

Faça corresponder os movimentos da boca à fala dobrada num vídeo traduzido pelo seu projeto, através do catálogo suportado de mais de 135 opções de idiomas e regiões.

Verificação facial automática

Antes da sincronização labial, uma tarefa de verificação facial confirma se o vídeo tem pelo menos um rosto. É executada uma vez por projeto, normalmente de forma independente, para que saiba o resultado antes de gastar minutos.

Vários rostos no ecrã

Defina is_multiple_speakers como verdadeiro para entrevistas, painéis e diálogos com múltiplos oradores. Quando estiver apenas um rosto no ecrã de cada vez, defina-o como falso para acelerar o processamento.

Um minuto de pré-visualização gratuito

Todas as contas recebem um minuto gratuito de sincronização labial. Execute-o com is_free_lipsync nas suas próprias gravações e reveja o resultado antes de sincronizar o vídeo completo.

Faturação separada para cada geração

Cada geração de sincronização labial de vídeo completo é cobrada separadamente da dobragem. Após editar o guião ou as vozes, volte a dobrar o projeto e gere uma nova versão sincronizada com um novo custo de sincronização labial.

Posição na fila e progresso

O endpoint de informações de sincronização labial devolve o número de tarefas à frente da sua e o progresso de 0 a 100, para que os seus utilizadores vejam o progresso real.

Vozes que combinam com o rosto

A sincronização labial funciona sobre a voz que o projeto utiliza para um orador: a sua voz clonada ou uma predefinição de voz de IA.

Editar, voltar a dobrar, voltar a sincronizar

Altere o texto, o timing ou as vozes, volte a dobrar o projeto e execute novamente a sincronização labial na nova versão. A verificação facial não precisa de ser executada outra vez.

Cresça sem limites

Sem limites de taxa, sem quota de concorrência, sem limitação por chave. Envie tarefas de sincronização labial para todo o seu catálogo e a posição na fila indica-lhe em que estado se encontra cada uma.
Veja como funciona

Da fala dobrada aos movimentos labiais correspondentes

O mesmo clip dobrado em francês, alemão, português e espanhol. Num projeto de dobragem como este, a sincronização labial ajusta a posição dos lábios ao novo discurso.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Fluxo de trabalho

Três passos de vídeo dobrado para vídeo com sincronização labial

A sincronização labial é executada num projeto que já está dobrado. Utilize o ponto final /generate para voltar a dobrar após as edições e, em seguida, sincronize os lábios novamente.
1

Dobre o vídeo

Carregue o vídeo de entrada ou envie um URL público, crie um projeto com um idioma de destino e aguarde por merging_done. A sincronização labial precisa do translated_video deste projeto.

POST /v2/projects
2

Verifique o rosto

A tarefa de verificação do rosto confirma pelo menos um rosto no vídeo. Habitualmente, inicia-se de forma automática. Se não se tiver iniciado, execute-a manualmente uma vez para o projeto.

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

Execute a sincronização labial e descarregue

Execute a tarefa de sincronização labial, acompanhe lipsync_task_progress de 0 a 100 e, em seguida, descarregue o vídeo a partir de lipsync_result_path.

PUT /v2/projects/{id}/lipsync
O tempo de processamento varia consoante a duração do vídeo e a fila de espera da sincronização labial. O ponto final de informações de sincronização labial mostra quantas tarefas estão à frente da sua.
Criado a pensar em si

Precisa de sincronização labial para um caso específico? Fale com a nossa equipa

Maior capacidade de processamento, prioridade de processamento, o seu próprio método de entrega: quando uma integração de sincronização labial precisa de algo fora do catálogo público, a nossa equipa analisa os seus requisitos e as opções disponíveis.

Idiomas e vozes

Precisa de um idioma ou voz fora do catálogo público? Fale com a nossa equipa sobre os seus requisitos e as opções disponíveis.

Entrega e integração

Webhooks, envio direto para a sua própria fila, entrega direta no seu S3, pontos de extremidade personalizados. Diga-nos como é que o seu sistema prefere receber os dados.

Volume e capacidade

Os tamanhos dos lotes, os idiomas de destino por ação e a prioridade de processamento são termos contratuais e não limites fixos do produto.

Segurança e alojamento

A residência de dados, o SSO e SAML, as regras de retenção e o suporte a auditorias de segurança são tratados como parte da integração empresarial.
Casos de utilização

Quem utiliza uma API de sincronização labial

Plataformas com vídeo integrado

Plataformas de LMS e de formação de clientes, plataformas de criadores e de vídeo, ferramentas de webinars e de eventos virtuais, alojamento de vídeo e SaaS de fluxo de trabalho, plataformas de adoção digital, live shopping. Adicione dobragem com sincronização labial aos vídeos que os seus utilizadores e criadores já alojam, para que os apresentadores traduzidos pareçam naturais no ecrã e a sincronização labial se torne uma funcionalidade premium do seu produto.

Agências de localização e produção

Ofereça a sincronização labial como um resultado separado além da dobragem. Utilize o minuto de pré-visualização gratuita da sua conta, se disponível, para avaliar o resultado. Inclua a geração de sincronização labial de vídeo completo e quaisquer gerações posteriores após a revisão no orçamento do seu cliente.

Produção de vídeo interna e contínua

Retalho internacional e e-commerce, franquias globais, editores de média, universidades corporativas. Para vídeos de marketing, formação e executivos em que um rosto preenche o ecrã, a sincronização labial faz com que o discurso traduzido corresponda ao orador em câmara em todos os mercados.
Histórias de clientes

Equipas reais, resultados mensuráveis

Como as empresas localizam vídeos com a Rask, através dos seus próprios números.
seta
seta
Código

Exemplos de código da API de sincronização labial

Um exemplo completo em cada idioma, num projeto que já está dobrado: verifique o rosto, execute a sincronização labial, acompanhe o progresso e descarregue o 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
O Python é o SDK oficial. Os separadores Node, PHP e cURL são exemplos simples de HTTP para os mesmos pontos de finalização.
Progresso

Como uma tarefa de sincronização labial reporta o progresso

O ponto final de informações de sincronização labial reporta a verificação do rosto, o estado da tarefa, a posição na fila de espera e o progresso de 0 a 100. Só precisa de agir sobre três grupos.

Concluído com sucesso, parar por aqui

lipsync_task_status: done
lipsync_task_progress: 100
A sincronização labial está concluída. A hiperligação de descarga está em lipsync_result_path.

Em progresso, continuar a verificar

check_face_task_status: started
lipsync_task_status: started
lipsync_task_progress: 0-99
tasks_in_lipsync_queue
Enquanto o progresso for nulo, a tarefa está em fila de espera: tasks_in_lipsync_queue mostra quantas tarefas estão à frente.

Falha, parar e reportar

lipsync_task_status: failed
check_face_task_status: failed
video_has_face: false
Um vídeo sem um rosto visível não pode ser sincronizado labialmente. Para uma tarefa falhada, contacte o suporte com o seu 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://...

Ou ignore a consulta de estado por completo

Aponte-nos para um ponto final de webhook e cada transição de estado chega como um POST, para que a sua fila reaja a cada alteração no momento em que acontece. A entrega por webhook faz parte da integração empresarial.
Ler a documentação
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Saída

Vídeo com sincronização labial, dobragem e legendas

Transfira o vídeo gerado a partir de lipsync_result_path. O projeto mantém o vídeo dobrado sem sincronização labial e as legendas traduzidas em SRT e VTT e, nos planos elegíveis, a voz traduzida em faixas de áudio separadas.
Campo
Formato
O que é
lipsync_result_path
MP4
O vídeo com sincronização labial, pronto a publicar
voiceover
WAV
Apenas o discurso traduzido, para a sua própria mistura
translated_audio
WAV
Fala traduzida misturada com o áudio de fundo original
translation_srt_path
.srt
Legendas no idioma de destino
translation_vtt_path
.vtt
As mesmas legendas em formato WebVTT, para leitores web
translated_video
MP4
O vídeo dobrado sem sincronização labial, para comparação
Controlo

Edite a dobragem e, em seguida, gere uma versão atualizada com sincronização labial

Depois de alterar o texto, o timing ou as vozes, volte a dobrar os segmentos alterados e gere a sincronização labial para o vídeo atualizado. A nova dobragem e cada nova geração de sincronização labial de vídeo completo são cobradas separadamente.

Edição ao nível de segmento

Edição ao nível de segmento
Edite segmentos individuais da transcrição e volte a dobrar as linhas alteradas. Para atualizar os movimentos labiais, gere uma nova sincronização labial para todo o vídeo; isto é cobrado separadamente.
Obter a transcrição e os respetivos segmentos
Alterar o texto de origem para traduzirmos novamente
Alterar o texto traduzido diretamente para manter as suas próprias palavras
Ajustar os carateres temporais, adicionar segmentos, eliminar segmentos
Reatribuir a voz associada a qualquer orador

Glossários para terminologia

Glossários para terminologia
Anexe um glossário para que os nomes de marcas e os termos técnicos sejam pronunciados da mesma forma em todas as dobragens e a sincronização labial siga essa mesma formulação.

Um glossário abrange um par de línguas e aplica-se a todas as variantes regionais dessa língua de destino, pelo que um único glossário de espanhol serve es-mx e es-es igualmente. O registo do projeto glossary_version, para que edições posteriores nunca alterem silenciosamente o trabalho concluído.
Entrada

Formatos de ficheiro suportados

Carregue qualquer um de sete formatos de vídeo ou envie um URL público. Os ficheiros apenas de áudio não têm nenhum rosto no ecrã, pelo que a sincronização labial se aplica apenas a formatos de vídeo.

Vídeo

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

Áudio

4 formatos
.mp3
.wav
.flac
.m4a

Metadados antes de gastar

O endpoint de multimédia devolve a duração, o tamanho do ficheiro, o codec de vídeo, a taxa de fotogramas, a resolução, o codec de áudio, a taxa de amostragem e a disposição dos canais. Valide um ficheiro e estime o custo com antecedência, uma vez que a dobragem e a sincronização labial são cobradas por minuto de duração do vídeo.
Segurança e conformidade

Rostos e vozes, geridos com segurança

A Brask Inc possui a certificação SOC 2 Tipo II, opera ao abrigo do RGPD e publica o estado de controlo em direto no seu Trust Center. Os vídeos com rostos e vozes são processados num ambiente de IA fechado.

Certificações

SOC 2 Type II
GDPR
Membro da CAI e C2PA

Encriptação

TLS 1.2 em trânsito
AES-256 em repouso
Chaves geridas SSE-S3
Rotação de chaves pelo menos a cada 12 meses

O seu conteúdo

Ambiente de IA fechado
Nunca utilizado para treinar modelos gerais
Exportação completa, sem dependência de fornecedor

Acesso

SSO e SAML
Controlo de acesso baseado em funções
Credenciais de cliente OAuth 2.0

Empresa

Opções de residência de dados
SLA personalizados
Gestor de conta dedicado

Direitos de voz

Vozes sintéticas com direitos de utilização
Clonagem de voz baseada no consentimento
Controlos de segurança de IA, humano no circuito
Comparação

API da Rask vs. um pipeline de sincronização labial criado por si

Uma API de sincronização labial autónoma precisa de uma faixa de áudio concluída no idioma de destino. A Rask produz a faixa dobrada e sincroniza os lábios num único projeto. Eis o mesmo resultado, montado de duas formas.
O que precisa
Rask API
Montado a partir de peças
Uma faixa de áudio traduzida para sincronizar
Criado pelo mesmo projeto
Fornecedores de transcrição, tradução e voz em primeiro lugar
Verificação de rosto antes de pagar
Automático, uma vez por projeto
O seu próprio passo de deteção de rostos
Vários rostos no ecrã
is_multiple_speakers: true
Rastreio por rosto criado e ajustado por si
Pré-visualização antes da execução completa
Um minuto gratuito por conta
Pagar por cada teste
Ressincronizar após editar um guião
Uma nova geração de sincronização labial para vídeo completo, faturada separadamente
Pagar novamente por todo o ficheiro
Música de fundo e efeitos
Preservado com a nova voz
Um passo de separação de fontes que cria
Legendas em .srt e .vtt
Incluído
Gerado a partir dos seus próprios dados de temporização
Visibilidade da fila de espera
Posição na fila de espera e progresso de 0-100
Tudo o que o seu fornecedor disponibilizar
Limites de taxa
Nenhum
O que o seu fornecedor mais restrito aplicar
Faturação
Por geração de sincronização labial de vídeo completo
Por execução, por fornecedor
Perguntas frequentes

API de sincronização labial: perguntas frequentes

Não consegue encontrar o que procura? Contacte o departamento de vendas.

Existe alguma API de sincronização labial?

Posso sincronizar os lábios de um vídeo sem o dobrar primeiro?

Posso sincronizar os lábios com a minha própria faixa de áudio?

A API gera avatares falantes a partir de uma imagem ou de um texto?

O que é necessário num vídeo para a sincronização labial?

Como é faturada a sincronização labial?

Existe uma pré-visualização gratuita da sincronização labial?

A sincronização labial funciona com vários oradores?

Como acompanho o progresso da sincronização labial?

Quanto tempo demora a sincronização labial?

O que acontece depois de editar a dobragem?

E se a sincronização labial falhar?

Como obtenho acesso à API e uma chave de API?

Comece a dobrar numa tarde

Faça o seu primeiro pedido hoje e fale connosco quando precisar de termos de volume ou de um idioma que mais ninguém tem.