API de tradução de vídeos para mais de 135 idiomas

Faça o upload de um vídeo e receba-o em todos os idiomas de que precisa. A API REST de tradução de vídeos transcreve a fala, traduz e faz a dobragem, devolvendo depois o vídeo traduzido, os ficheiros de legendas e o texto traduzido para revisão.
Mais de 135 línguas de destino
Legendas em .srt e .vtt
REST + SDK Python
one upload, every language
OAuth 2.0
# 1. exchange client credentials for a token (valid 1 hour)
curl -X POST https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -d "grant_type=client_credentials"

# 2. upload the video once - YouTube, Drive, S3, Vimeo or direct URL
curl -X POST https://api.rask.ai/api/library/v1/media/link \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"link": "https://youtu.be/...", "name": "Q3 launch"}'

# 3. one project per target language - they run in parallel
for lang in es-mx de-de ja-jp pt-br; do
  curl -X POST https://api.rask.ai/v2/projects \
    -H "Authorization: Bearer $TOKEN" \
    -d "{\"video_id\": \"$VIDEO_ID\", \"dst_lang\": \"$lang\"}"
done
GET /v2/projects/{project_id}
polling, 10s
# Poll each project until merging_done, then collect the files.
while :; do
  curl -s https://api.rask.ai/v2/projects/$ID \
    -H "Authorization: Bearer $TOKEN" \
    | jq '{status, translated_video, translation_srt_path}'
  sleep 10
done
Utilizado por equipas globais
Funcionalidades

O que a API de tradução de vídeos faz num único projeto

Transcreva, traduza e faça a dobragem dos seus vídeos automaticamente através de uma única API. Reveja o texto traduzido, mantenha a terminologia consistente com glossários e transfira o formato de saída que cada plataforma necessita. Adicione sincronização labial opcional, cobrada separadamente.

Tradução para mais de 135 idiomas

Envie um vídeo e um idioma de destino para traduzir vídeos para es-mx, pt-br, fr-ca ou qualquer outra localização suportada. O idioma de origem é detetado automaticamente.

Deteção de oradores e vozes por orador

Os locutores são separados automaticamente e cada um recebe uma voz no idioma de destino, para que entrevistas e debates continuem fáceis de acompanhar. Substitua qualquer atribuição ou indique a contagem, se a souber.

Vozes originais ou vozes de IA

Utilize a voz original de cada locutor com a Clonagem de Voz Instantânea ou reutilize uma Clonagem de Voz Personalizada guardada para obter uma voz de apresentador consistente em todos os vídeos. Ambas as opções estão disponíveis nos idiomas de destino suportados; as predefinições de voz de IA cobrem o resto.

Sincronização labial

Ative a sincronização labial para adaptar o movimento da boca à fala traduzida, como uma tarefa opcional em qualquer projeto concluído, cobrada separadamente. A deteção de rostos é executada primeiro, para que apenas a aplique onde for eficaz.

Áudio de fundo preservado

A música, o som ambiente e os efeitos são separados da fala e misturados novamente por baixo da nova voz-off, para que os espectadores ouçam a produção original num idioma diferente.

Legendas em .srt e .vtt

Cada vídeo traduzido inclui um ficheiro de legendas em ambos os formatos, no idioma de destino e sincronizado com a fala traduzida.

Controlo de terminologia com glossários

Os nomes de marcas, nomes de produtos e termos técnicos são traduzidos da mesma forma em todos os vídeos e idiomas, ou mantêm-se no idioma original de propósito.

Texto traduzido que pode editar

Consulte a transcrição com o texto de origem e o traduzido lado a lado, corrija uma linha ou um carimbo de data/hora e volte a gerar. Os revisores corrigem o texto e ninguém volta a gravar áudio.

Cresça sem limites

Sem limites de taxa, sem quota de concorrência e sem restrições por chave. Envie o seu catálogo completo e traduza grandes volumes para vários idiomas em paralelo.
Veja como funciona

O que a API de tradução de vídeos devolve

O mesmo clip, traduzido através do fluxo de trabalho nesta página. Locutores originais na fonte, fala traduzida em francês, alemão, português e espanhol, com o áudio de fundo intacto.
Bandeira EN
En
Bandeira da França
Sex
Bandeira da Alemanha
De
Bandeira de Portugal
Pt
Bandeira da ES
Es
Fluxo de trabalho

Três passos do upload até ao vídeo traduzido

A criação de um projeto inicia a tradução. Utilize o endpoint /generate mais tarde para voltar a fazer a dobragem de um projeto após editá-lo.
1

Carregar o seu vídeo

Envie um ficheiro como dados de formulário multipart ou publique uma ligação do YouTube, Google Drive, S3, Vimeo ou qualquer URL de transferência direta. Obtém um ID de multimédia e os metadados técnicos antes de gastar qualquer valor.

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

Criar um projeto por idioma

Passe o ID de multimédia como video_id e um idioma de destino. Crie um projeto para cada idioma de que precisa a partir do mesmo upload, com a sua própria transcrição ou um glossário, se tiver um.

POST /v2/projects
3

Atribuir vozes e voltar a dobrar

Leia o estado até atingir merging_done e, em seguida, transfira o vídeo traduzido e os ficheiros de legendas para esse idioma.

GET /v2/projects/{project_id}
O tempo de processamento varia consoante o projeto. Para tradução em lote, crie um projeto por idioma de destino a partir do mesmo carregamento, acompanhe cada um através da API e transfira os ficheiros quando estiverem concluídos.
Criado a pensar em si

Precisa de mais do que o catálogo? Fale com a nossa equipa.

Novos idiomas, vozes personalizadas, o seu próprio método de entrega, maior capacidade: quando uma integração de tradução de vídeo 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 tradução de vídeo

Plataformas com vídeo integrado

Plataformas de LMS e formação de clientes, plataformas de criadores e de vídeo, ferramentas de webinars e eventos virtuais, SaaS de alojamento e fluxo de trabalho de vídeo, plataformas de adoção digital, live shopping e ferramentas de vídeo de IA que ajudam os utilizadores a criar vídeos ou a gerar vídeos a partir de texto. Os seus utilizadores já carregam conteúdos de vídeo para o seu produto. Com a API, traduzem vídeos no mesmo local, para vários idiomas, e a tradução de vídeo torna-se numa das suas funcionalidades pagas.

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

Ligue a tradução de vídeo ao fluxo de trabalho de entrega que já utiliza e mantenha a etapa de revisão humana. Os linguistas reveem o texto traduzido segmento a segmento, para que a sua equipa entregue mais idiomas aos clientes com as mesmas pessoas.

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

Retalho internacional e comércio eletrónico, franquias globais, editores de meios, universidades corporativas. Integre a tradução no seu fluxo de trabalho de publicação, para que os vídeos de formação e os conteúdos de produtos cheguem a todos os mercados em diferentes idiomas, e regenere uma versão linguística sempre que o vídeo de origem for alterado.
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 tradução de vídeo

Um exemplo completo em cada idioma: autenticar, carregar uma vez, criar um projeto por idioma de destino, aguardar, recolher o vídeo traduzido e os ficheiros de legendas.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

TARGETS = ["es-mx", "de-de", "ja-jp", "pt-br"]

async def translate(client, video_id, lang):
    job = await client.create_project(
        data=schemas.ProjectCreate(video_id=video_id, dst_lang=lang))
    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)

    jobs = await asyncio.gather(*(translate(client, video.id, l) for l in TARGETS))
    for j in jobs:
        print(j.dst_lang, j.translated_video, j.translation_srt_path)

asyncio.run(main())
github.com/braskai/rask-sdk
Python 3.8+, async
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}"}

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()

ids = [requests.post(f"{API}/v2/projects", headers=h,
                     json={"video_id": video["id"], "dst_lang": lang}).json()["id"]
       for lang in ["es-mx", "de-de", "ja-jp", "pt-br"]]

for pid in ids:
    while (p := requests.get(f"{API}/v2/projects/{pid}", headers=h).json())["status"] != "merging_done":
        time.sleep(10)
    print(p["dst_lang"], p["translated_video"], p["translation_vtt_path"])
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 get = (path) => fetch(API + path, { headers: h }).then((r) => r.json());
const post = (path, body) => fetch(API + path, { method: 'POST', headers: h, body: JSON.stringify(body) }).then((r) => r.json());

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

const results = await Promise.all(['es-mx', 'de-de', 'ja-jp', 'pt-br'].map(async (dst_lang) => {
  let p = await post('/v2/projects', { video_id: video.id, dst_lang });
  while (p.status !== 'merging_done') { await sleep(10000); p = await get(`/v2/projects/${p.id}`); }
  return p;
}));

results.forEach((p) => console.log(p.dst_lang, p.translated_video, p.translation_srt_path));
fetch, Node 18+
plain HTTP
<?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']];

$video = $json($http->post('/api/library/v1/media/link',
    ['headers' => $h, 'json' => ['link' => 'https://youtu.be/...']]));
while ($video['status'] !== 'ready') {
    sleep(5);
    $video = $json($http->get("/api/library/v1/media/{$video['id']}", ['headers' => $h]));
}

foreach (['es-mx', 'de-de', 'ja-jp', 'pt-br'] as $lang) {
    $p = $json($http->post('/v2/projects', ['headers' => $h,
        'json' => ['video_id' => $video['id'], 'dst_lang' => $lang]]));
    while ($p['status'] !== 'merging_done') {
        sleep(10);
        $p = $json($http->get("/v2/projects/{$p['id']}", ['headers' => $h]));
    }
    echo $lang, ' ', $p['translation_srt_path'], PHP_EOL;
}
POST /v2/projects
OAuth 2.0 client credentials
<?php
use GuzzleHttp\Client;

$http = new Client(['base_uri' => 'https://api.rask.ai']);

$auth = json_decode((new Client)->post(
    'https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token',
    ['auth' => [$clientId, $clientSecret],
     'form_params' => ['grant_type' => 'client_credentials']]
)->getBody(), true);

$h = ['Authorization' => 'Bearer ' . $auth['access_token']];

$media = json_decode($http->post('/api/library/v1/media/link',
    ['headers' => $h, 'json' => ['link' => 'https://youtu.be/...']])->getBody(), true);

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

while ($project['status'] !== 'merging_done') {
    sleep(10);
    $project = json_decode($http->get("/v2/projects/{$project['id']}",
        ['headers' => $h])->getBody(), true);
}
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 o progresso da tradução é comunicado

Cada projeto passa por uma máquina de estados documentada, para que os seus utilizadores possam acompanhar o processo numa barra de progresso real e faseada para cada versão de idioma. Apenas precisa de agir em três grupos.

Concluído com sucesso, parar por aqui

merging_done
A tradução está concluída. Obtenha o projeto mais uma vez para recuperar os links de transferência disponíveis para o seu projeto.

Em progresso, continuar a verificar

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Para além da correspondência _done estados.

Falha, parar e reportar

failed
upload_failed
transcription_failed
translation_failed
voiceover_failed
merging_failed
no_audio
no_words
forbidden_link
no_audio, no_words and forbidden_link are specific enough to show directly to your own user. Every error also returns a machine-readable slug for error handling.
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

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, áudio e legendas traduzidos

Transfira o vídeo traduzido e as legendas em SRT e VTT para cada idioma de destino. Nos planos elegíveis, também pode transferir a voz traduzida isoladamente ou misturada com o áudio de fundo original.
Campo
Formato
O que é
translated_video
MP4
O vídeo dobrado, pronto a publicar
voiceover
WAV
Apenas discurso traduzido, sem fundo, 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
original_video
MP4
O seu ficheiro de origem tal como foi guardado, para referência
Controlo

Reveja o texto traduzido e, em seguida, volte a dobrar apenas o que foi alterado

Comece com a tradução automática ou traga a sua própria tradução aprovada como um ficheiro SRT ao criar o projeto. Reveja o guião antes de publicar e regenere apenas o que muda. A dobragem por API é faturada com base nos segmentos alterados.

Edição ao nível de segmento

Edição ao nível de segmento
Cada projeto disponibiliza a sua transcrição como segmentos, com o texto de origem e o texto traduzido lado a lado, para que uma correção exija apenas um pedido de patch.
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 a um projeto para que os nomes de marcas, nomes de produtos e termos técnicos sejam traduzidos da mesma forma em todas as versões de idioma, ou permaneçam intencionalmente por traduzir.

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 dos sete formatos de vídeo e quatro de áudio, ou envie um URL. Um ficheiro não suportado é rejeitado pelo tipo de conteúdo antes de lhe serem cobrados quaisquer minutos de tradução.

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, pois a tradução de vídeo é faturada por minuto.
Segurança e conformidade

Pronto para a sua revisão de segurança

A Brask Inc possui a certificação SOC 2 Type II, opera em conformidade com o RGPD e publica o estado de controlo em direto no seu Centro de Confiança. O seu conteúdo de vídeo é processado 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 em comparação com um fluxo criado por si

Uma API de tradução de texto traduz carateres. A tradução de vídeo também precisa de reconhecimento de fala, sincronização, vozes e mistura. Eis a mesma capacidade, montada de duas formas.
O que precisa
Rask API
Montado a partir de peças
Transcrição, tradução, síntese, mistura
Uma chamada
Três a quatro fornecedores e o código entre eles
Sincronizar a tradução com o vídeo
Incluído
A sua própria lógica de alinhamento
Deteção de oradores e vozes por orador
Incluído
Um fornecedor de diarização mais a sua própria lógica de atribuição de voz
Música de fundo e efeitos preservados
Incluído
Um passo de separação de fonte que constrói e ajusta
Legendas em .srt e .vtt
Incluído
Gerado a partir dos seus próprios dados de temporização
Sincronização labial
Opcional, faturado separadamente
Um fornecedor separado
Corrigir uma linha traduzida
Volte a dobrar esse segmento e pague apenas por ele
Volte a processar o ficheiro, pague pelo ficheiro
Consistência de terminologia
Glossários com versões
Pré e pós-processamento geridos por si
Limites de taxa
Nenhum
O que o seu fornecedor mais restrito aplicar
Um idioma fora do catálogo
Discutido com a nossa equipa
Depende de cada fornecedor
Perguntas frequentes

API de tradução de vídeo: perguntas frequentes

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

Existe alguma API que traduza vídeos automaticamente?

Como obtenho acesso à API e uma chave de API?

Como me autentico na API de tradução de vídeo?

A API é síncrona ou assíncrona?

Quais são os limites de taxa?

Para quantos idiomas posso traduzir vídeos?

Posso traduzir um vídeo para vários idiomas de uma só vez?

Quanto tempo demora a tradução de vídeo?

Que formatos de ficheiro são suportados?

Recebo legendas além do vídeo traduzido?

Posso editar o texto traduzido antes de publicar?

O ChatGPT consegue traduzir um vídeo?

Quanto custa a tradução de vídeo?

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.