API de clonagem de voz para vídeo traduzido

Mantenha a voz de cada falante quando seus vídeos falarem outros idiomas. A API clona automaticamente cada voz do vídeo original ou usa um clone de voz personalizado que você criou antes, e retorna o vídeo dublado com as vozes clonadas, faixas de áudio e legendas.
Clone de voz instantâneo
Clones de voz personalizados
REST + SDK em 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 do mundo todo
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 anteriormente, em todas as versões traduzidas 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 de sua própria voz do vídeo original, sem precisar gravar amostras de áudio. Ele é atribuído por padrão nos idiomas de destino compatíveis.

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 em sua biblioteca de clones de voz. Com o consentimento do falante, reutilize essa voz em projetos de API nos idiomas de destino compatíveis.

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

Ajuste o movimento da boca à voz clonada como uma tarefa opcional em qualquer projeto finalizado, 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 encaixar 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 ele mesmo para públicos globais.

Troque uma voz, reduble um falante

Atribua uma voz diferente a um falante e gere novamente. Apenas os trechos que mudaram são cobrados, então ninguém precisa gravar nada de novo.

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 e em qualquer volume.
Veja como funciona

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 passos do vídeo original até as vozes clonadas

A criação do projeto inicia a dublagem com os Clones de Voz Instantâneos. 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 Clone de Voz Instantâneo.

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 um Clone de Voz Instantâneo nos idiomas suportados, e a dublagem começa imediatamente.

POST /v2/projects
3

Atribuir vozes e redublar

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

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 trechos desse locutor são redublados e cobrados.
Desenvolvido 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 vozes personalizadas 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 suas necessidades 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 nossa equipe sobre suas necessidades e as opções disponíveis.

Entrega e integração

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

Volume e capacidade

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

Segurança e hospedagem

Residência de dados, SSO e SAML, regras de retenção e suporte a análises de segurança são gerenciados como parte da integração empresarial.
Casos de uso

Quem usa uma API de clonagem de voz

Plataformas que incluem vídeos

Plataformas de LMS e educação de clientes, criadores e plataformas de vídeo e seus aplicativos móveis, ferramentas de webinars e eventos virtuais, hospedagem de vídeo e SaaS de fluxo de trabalho, plataformas de adoção digital, compras ao vivo. Permita que criadores e instrutores mantenham suas próprias vozes nos idiomas de clonagem de voz suportados. Use predefinições de voz de IA para outros idiomas de destino e faça da dublagem multilíngue um recurso da sua plataforma.

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

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

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

Varejo internacional e comércio eletrônico, franquias globais, editoras de mídia, universidades corporativas. Instrutores, 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 de IA 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 a Rask, em números.
seta
seta
Código

Exemplos de código da API de clonagem de voz

Um exemplo completo em cada idioma: autenticar, carregar, dublar com Clones de Voz Instantâneos, atribuir um clone personalizado a um locutor, redublar 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 redublagem, 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 aqui

merging_done
A dublagem está concluída. Busque o projeto mais uma vez para recuperar os links de download disponíveis para o seu projeto.

Em andamento, continue verificando

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Além dos _done estados correspondentes. Eles se encaixam perfeitamente em uma interface de progresso em etapas.

Erro, pare e informe

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 você mostrar diretamente aos seus usuários.
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 por completo

Aponte para o nosso endereço de webhook e cada mudança de status chega como um POST, para que sua fila reaja a cada alteração no momento em que ela acontece. O envio via webhook faz parte da integração corporativa.
Ler a documentação
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Resultado

Voz clonada, vídeo dublado e legendas

Baixe o vídeo dublado com as vozes clonadas e legendas traduzidas em SRT e VTT. Nos planos elegíveis, você também pode baixar a faixa de voz clonada separadamente em WAV ou misturada com o áudio de fundo original.
Campo
Formato
O que é
translated_video
MP4
O vídeo dublado, pronto para publicar
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
Mesmas legendas que o WebVTT, para reprodutores web
original_video
MP4
Seu arquivo original salvo, para referência
Controle

Altere uma voz e reduble apenas esse locutor

Os 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 trechos alterados são cobrados.

Edição por trecho

Edição por trecho
Cada projeto expõe sua transcrição como segmentos com identificações de locutor, portanto, mover uma linha para outro locutor ou alterar uma voz requer apenas uma solicitação.
Acesse a transcrição e seus trechos
Atualize o texto original e nós fazemos a tradução novamente
Edite o texto traduzido diretamente para usar as suas próprias palavras
Ajuste o tempo, adicione ou remova trechos
Altere a voz de qualquer locutor

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 dele. Assim, um único glossário em espanhol atende pt-br e pt-pt igualmente. Os registros do projeto versao_glossario, garantindo que alterações futuras não modifiquem o trabalho 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 limpo 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 ponto de acesso de mídia mostra a duração, o tamanho do arquivo, o formato do vídeo, a taxa de quadros, a resolução, o formato do áudio, a taxa de amostragem e os canais. Valide o arquivo e saiba o custo antes de começar, já que a dublagem com vozes clonadas é cobrada por minuto.
Segurança e conformidade

Dados de voz aprovados pela sua equipe jurídica

A Brask Inc possui certificação SOC 2 Tipo II, segue as regras da GDPR e mostra o status do sistema em tempo real na Central de Confiança. As clonagens de voz personalizadas são feitas com a permissão de quem fala e, para proteger seus dados, seu áudio nunca é usado para treinar modelos gerais.

Certificações

SOC 2 Type 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

O seu conteúdo

Ambiente de IA fechado
Nunca usado para treinar modelos gerais
Exportação completa, sem fidelidade forçada

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 com consentimento
Controles de segurança de IA, humano no circuito
Comparação

API da Rask comparada a um sistema de voz criado por você

Uma API de clonagem que transforma texto em voz lê o que você envia. As vozes clonadas em vídeos traduzidos também precisam de transcrição, tradução, separação de pessoas, ajuste de tempo e mistura de sons. Veja o mesmo resultado feito de duas formas diferentes.
O que você precisa
Rask API
Montado por partes
Clone cada pessoa que aparece no vídeo original
Clone de voz instantâneo, de forma automática
Reúna e envie exemplos de voz para cada pessoa
Vozes personalizadas que podem ser usadas novamente
Clones de voz personalizados por voice_id
Uma biblioteca de vozes criada e organizada por você
Transcrição, tradução, criação de voz e mistura de áudio
Uma única API
Três ou quatro fornecedores e a programação para ligar todos eles
Identificação de quem fala e uma voz para cada pessoa
Incluído
Um fornecedor para separar as vozes e a sua própria programação para definir quem fala o quê
Música de fundo e efeitos mantidos
Incluído
Uma etapa de separação de sons criada e ajustada por você
Idiomas sem clonagem de voz
Predefinições de voz de IA
Outro fornecedor de conversão de texto em voz
Sincronização labial
Opcional, cobrado à parte
Um fornecedor diferente
Mudar a voz de uma pessoa
Dublar essa pessoa de novo, cobrando apenas pelos trechos alterados
Rodar todo o processo novamente para o arquivo inteiro
Limites de taxa
Nenhum
O que o seu fornecedor mais rigoroso exigir
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 funciona a clonagem de voz com a API?

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

Posso criar uma clonagem de voz personalizada por meio da API?

Qual áudio preciso para criar uma clonagem de voz personalizada?

Quais idiomas aceitam a clonagem de voz?

Posso usar a API de clonagem de voz para conversão de texto em fala?

Como faço para alterar a voz de um locutor após a dublagem?

Quantas vozes personalizadas posso salvar?

É necessário consentimento para clonar uma voz?

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

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 mesmo e fale conosco quando precisar de condições para alto volume ou de um idioma que ninguém mais oferece.