API de clonagem de voz para vídeos traduzidos

Mantenha a voz de cada falante quando seus vídeos falarem outros idiomas. A API clona cada voz do vídeo original automaticamente ou usa um clone de voz personalizado que você criou uma vez, e retorna o vídeo dublado com as vozes clonadas, faixas de voz e legendas.
Clone de voz instantâneo
Clones de voz personalizados
REST + SDK para 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
Usado por equipes globais
Recursos

Tudo o que a API de clonagem de voz faz

Clone cada falante do vídeo original ou use um clone de voz personalizado criado por você, em cada versão traduzida e em vários idiomas. Escolha predefinições de voz de IA para idiomas sem clonagem de voz. Adicione sincronização labial opcional, cobrada separadamente.

Clone de voz instantâneo

Cada falante recebe um clone da sua própria voz a partir do vídeo original, sem precisar gravar amostras de áudio. Ele é atribuído por padrão nos idiomas de destino suportados.

Clones de voz personalizados

Crie uma voz reutilizável no aplicativo Rask a partir de amostras de áudio limpas ou salve a voz de um falante de um projeto existente na sua Biblioteca de clones de voz. Com o consentimento do falante, reutilize essa voz em projetos de API nos idiomas de destino suportados.

Uma voz por falante

Os falantes são separados automaticamente e cada um mantém sua própria voz clonada, para que entrevistas, painéis e podcasts continuem fáceis de acompanhar.

Sincronização labial

Combine o movimento da boca com a voz clonada como uma tarefa opcional em qualquer projeto concluído, cobrada separadamente. A detecção de rosto é executada primeiro, para que você a aplique apenas onde ela funcionar.

Áudio de fundo preservado

Música, som ambiente e efeitos são separados da fala e misturados novamente sob a voz clonada, para que o resultado mantenha o som da produção original.

Predefinições de voz de IA

Para idiomas sem clonagem de voz, ou quando uma voz padrão se encaixa melhor, escolha uma predefinição de voz de IA com um gênero definido para qualquer falante.

Identidade de voz entre idiomas

O clone fala espanhol, francês ou japonês com a voz do falante original, para que o apresentador continue soando como o apresentador para públicos globais.

Troque uma voz, reduble um falante

Atribua uma voz diferente a um falante e regenere. Apenas os segmentos que mudaram são cobrados, então ninguém precisa regravar nada.

Cresça sem limites

Sem limites de taxa, sem cota de concorrência e sem restrição por chave. Duble seu catálogo completo com vozes clonadas em paralelo, em qualquer volume.
Veja na prática

Ouça um falante em cinco idiomas

As vozes originais em inglês, depois as vozes clonadas em francês, alemão, português e espanhol. Cada falante mantém sua própria voz e o áudio de fundo permanece intacto.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Fluxo de trabalho

Três etapas do vídeo original às vozes clonadas

A criação do projeto inicia o dub com clonagens de voz instantâneas. Use o endpoint /generate após alterar as vozes ou editar o roteiro.
1

Carregue seu vídeo

Envie um arquivo como dados de formulário multipart ou publique um link do YouTube, Google Drive, S3, Vimeo ou qualquer URL direta. A fala neste vídeo é a amostra de voz para cada clonagem de voz instantânea.

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

Criar o projeto

Passe o ID de mídia como video_id e um idioma de destino. Cada locutor detectado recebe uma clonagem de voz instantânea nos idiomas suportados, e o dub começa imediatamente.

POST /v2/projects
3

Atribua vozes e faça um novo dublagem

Liste as vozes do projeto, atribua um clone personalizado ou uma predefinição a qualquer locutor, chame /generate e baixe os arquivos quando o dub for concluído.

PATCH /v2/projects/{project_id}
O tempo de processamento varia de acordo com o projeto. Quando você altera a voz de um locutor, apenas os segmentos desse locutor são redubados e cobrados.
Criado para você

Precisa de uma voz fora do catálogo? Fale com nossa equipe

Clonagem de voz para um idioma ainda não suportado, uma biblioteca de voz personalizada maior, seu próprio método de entrega: quando um projeto de voz precisa de algo fora do catálogo público, nossa equipe analisa seus requisitos e as opções disponíveis.

Idiomas e vozes

Precisa de um idioma ou voz que não está no catálogo público? Fale com a nossa equipe sobre o que você precisa e conheça as opções disponíveis.

Entrega e integração

Webhooks, envio para a sua própria fila, entrega direto no seu S3 e endpoints personalizados. Diga-nos como o seu sistema prefere receber os dados.

Volume e capacidade

Tamanhos de lote, idiomas de destino por ação e prioridade de processamento são termos contratuais, e não limites fixos do produto.

Segurança e hospedagem

A residência de dados, SSO e SAML, regras de retenção e suporte a revisões de segurança são gerenciados como parte da integração empresarial.
Casos de uso

Quem usa uma API de clonagem de voz

Plataformas com vídeo integrado

Plataformas de LMS e educação de clientes, criadores e plataformas de vídeo com seus aplicativos móveis, ferramentas de webinar e eventos virtuais, hospedagem de vídeo e SaaS de fluxo de trabalho, plataformas de adoção digital, live shopping. Permita que criadores e instrutores mantenham sua própria voz em todos os idiomas de clonagem de voz suportados. Use predefinições de voz AI para outros idiomas de destino e torne a dublagem multilíngue um recurso da sua plataforma.

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

Entregue locuções personalizadas na voz do apresentador original para cada vídeo de cliente. Mantenha um clone de voz personalizado para cada apresentador recorrente, com consentimento registrado, e reuse-o em cada projeto por meio da API sem pedir a ninguém para regravar.

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

Varejo internacional e e-commerce, franquias globais, editoras de mídia, universidades corporativas. Treinadores, executivos e especialistas em produtos gravam uma vez e, em seguida, usam sua voz clonada para os idiomas de destino suportados e predefinições de voz AI para outras versões de mercado de vídeos de treinamento, atualizações de produtos e mensagens internas.
Histórias de clientes

Equipes reais, resultados mensuráveis

Como as empresas localizam vídeos com o Rask, em seus próprios números.
seta
seta
Código

Exemplos de código da API de clonagem de voz

Um exemplo completo em cada idioma: autenticar, enviar, dublar com clonagens de voz instantâneas, atribuir um clone personalizado a um locutor, redubar e baixar.
# 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 é o SDK oficial. As abas Node, PHP e cURL são exemplos simples de HTTP para os mesmos endpoints.
Progresso

Como um projeto de clonagem de voz relata o progresso

Um projeto passa por uma máquina de estados documentada na primeira dublagem e novamente após cada redubagem, para que seus usuários vejam o progresso real sempre que você alterar uma voz. Você só precisa agir em três grupos.

Sucesso, pare por aqui

merging_done
A dublagem foi concluída. Acesse o projeto mais uma vez para recuperar os links de download disponíveis para ele.

Em andamento, continue verificando

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Mais o correspondente _done estados. Eles se encaixam perfeitamente em uma interface de progresso por etapas.

Erro, parar e relatar

failed
upload_failed
transcription_failed
translation_failed
voiceover_failed
merging_failed
no_audio
no_words
forbidden_link
no_audio, no_words e forbidden_link são claros o suficiente para serem exibidos diretamente para o seu próprio usuário.
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 pule as consultas completamente

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

Voz clonada, vídeo dublado e legendas

Baixe o vídeo dublado com as vozes clonadas e legendas traduzidas em SRT e VTT. Em planos elegíveis, você também pode baixar a trilha de voz clonada separadamente como WAV ou misturada com o áudio de fundo original.
Campo
Formato
O que é
translated_video
MP4
O vídeo dublado, pronto para ser publicado
voiceover
WAV
Fala traduzida apenas na voz clonada, para sua própria mixagem
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 players web
original_video
MP4
Seu arquivo de origem armazenado, para referência
Controle

Altere uma voz e redube apenas aquele locutor

Clones instantâneos atendem à maioria dos locutores. Quando uma voz precisar de uma escolha diferente, atribua um clone personalizado ou uma predefinição a esse locutor e regenere. Apenas os segmentos alterados são cobrados.

Edição por segmentos

Edição por segmentos
Cada projeto expõe sua transcrição como segmentos com rótulos de locutor, portanto, mover uma linha para outro locutor ou alterar uma voz requer apenas uma solicitação.
Obtenha a transcrição e seus segmentos
Atualize o texto original e nós fazemos a tradução novamente
Edite o texto traduzido diretamente para manter as suas próprias palavras
Ajuste os tempos, adicione segmentos ou exclua segmentos
Altere a voz associada a qualquer falante

Glossários para termos específicos

Glossários para termos específicos
Anexe um glossário para que nomes de marcas, nomes de produtos e termos técnicos sejam traduzidos da mesma forma em todos os idiomas, independentemente da voz que os fale.

Um glossário funciona para um par de idiomas e vale para todas as variações regionais desse idioma de destino, ou seja, um único glossário em espanhol atende pt-br e pt-pt igualmente. O registro do projeto versão_do_glossário, garantindo que edições futuras nunca alterem o que já foi finalizado sem que você perceba.
Entrada

Formatos de arquivo compatíveis

Envie qualquer um dos sete formatos de vídeo e quatro de áudio, ou envie um URL. A fala no arquivo é a referência para o clone de voz instantâneo, portanto, um áudio claro oferece os melhores resultados.

Vídeo

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

Áudio

4 formatos
.mp3
.wav
.flac
.m4a

Informações antes de gastar

O endpoint de mídia retorna duração, tamanho do arquivo, codec de vídeo, taxa de quadros, resolução, codec de áudio, taxa de amostragem e layout de canal. Valide um arquivo e estime o custo com antecedência, porque a dublagem com vozes clonadas é cobrada por minuto.
Segurança e conformidade

Dados de voz que sua equipe jurídica pode aprovar

A Brask Inc possui certificação SOC 2 Tipo II, opera em conformidade com a LGPD e publica o status de controle em tempo real em seu Centro de Confiabilidade. Os clones de voz personalizados são criados com o consentimento do locutor e, para garantir a segurança dos dados, seu áudio nunca é usado para treinar modelos gerais.

Certificações

SOC 2 Tipo II
GDPR
Membro da CAI e C2PA

Criptografia

TLS 1.2 em trânsito
AES-256 em repouso
Chaves gerenciadas SSE-S3
Rotação de chaves a cada 12 meses no mínimo

Seu conteúdo

Ambiente de IA fechado
Nunca usado para treinar modelos gerais
Exportação completa, sem retenção de dados

Acesso

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

Corporativo

Opções de residência de dados
SLAs personalizados
Gerente de contas dedicado

Direitos de voz

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

API da Rask vs. um fluxo de voz criado por você

Uma API de clonagem de texto para fala dá voz ao texto que você envia. As vozes clonadas em vídeos traduzidos também precisam de transcrição, tradução, separação de locutores, ajustes de tempo e mixagem. Veja o mesmo resultado montado de duas maneiras.
O que você precisa
Rask API
Montado a partir de partes
Clonar cada locutor do vídeo original
Clonagem de voz instantânea, por padrão
Coletar e enviar amostras para cada locutor
Vozes personalizadas reutilizáveis
Clones de voz personalizados por voice_id
Uma biblioteca de vozes criada e gerenciada por você
Transcrição, tradução, síntese, mixagem
Uma API
De três a quatro fornecedores e todo o código para integrá-los
Detecção de locutores e uma voz por locutor
Incluído
Um fornecedor de diarização mais sua própria lógica de atribuição de voz
Música de fundo e efeitos preservados
Incluído
Uma etapa de separação de fontes que você cria e ajusta
Idiomas sem clonagem de voz
Predefinições de voz de IA
Outro fornecedor de texto para fala
Sincronização labial
Opcional, cobrado à parte
Um fornecedor diferente
Alterar a voz de um locutor
Dublar novamente esse locutor, cobrado apenas pelos trechos alterados
Executar todo o processo novamente para o arquivo inteiro
Limites de taxa
Nenhum
O que for exigido pelo seu fornecedor mais rigoroso
Uma voz ou idioma fora do catálogo
Discutido com nossa equipe
Depende de cada fornecedor
Perguntas frequentes

API de clonagem de voz: perguntas frequentes

Não conseguiu encontrar o que procura? Entre em contato com o departamento de vendas.

Existe uma API para clonagem de voz?

Como a clonagem de voz funciona com a API?

Qual é a diferença entre a clonagem de voz instantânea e a clonagem de voz personalizada?

Posso criar um clone de voz personalizado por meio da API?

De que áudio preciso para criar uma clonagem de voz personalizada?

Quais idiomas aceitam clonagem de voz?

Posso usar a API de clonagem de voz como texto para fala?

Como faço para alterar a voz de um falante após o doblaje?

Quantas vozes personalizadas posso salvar?

É necessário consentimento para clonar uma voz?

A voz clonada mantém a emoção e o sotaque do falante?

Posso usar vozes clonadas para fins comerciais?

Quanto custa a clonagem de voz?

Comece a dublar em uma tarde

Faça sua primeira solicitação hoje e fale conosco quando precisar de condições para grande volume ou de um idioma que mais ninguém tem.