API de texto para fala para locução de vídeos

Envie seu roteiro cronometrado com um vídeo ou gravação de áudio e gere uma fala alinhada à linha do tempo. Escolha vozes de IA da biblioteca de vozes ou um clone de voz, em mais de 135 idiomas e opções regionais, e baixe a locução, o vídeo e as legendas do mesmo projeto.
Do roteiro à locução
Vozes de IA e clones de voz
REST + SDK para Python
script in, voiceover out
OAuth 2.0
# 1. send your script as timed segments - one speaker per line
curl -X POST https://api.rask.ai/v2/transcriptions \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"segments": [
    {"speaker": "SPEAKER_00", "start": "00:00:00,500", "end": "00:00:04,800",
     "src": {"text": "Welcome to the new dashboard.", "lang": "en"},
     "dst": {"text": "Bienvenido al nuevo panel.", "lang": "es-mx"}}
  ]}'

# 2. voice the script over your video
curl -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\", \"transcript_id\": \"$TRANSCRIPT_ID\"}"
GET /v2/projects/{project_id}
voiceover links
# When status is merging_done, read the voiceover links
curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" \
  | jq '{status, voiceover, translated_audio, translated_video}'
Usado por equipes globais
Recursos

Tudo o que a API de text to speech faz por vídeos

Transforme um roteiro escrito em uma locução que se encaixa no vídeo: a voz certa para cada falante, tempo dos seus segmentos, áudio de fundo, legendas e tradução em um único projeto. Adicione sincronização labial opcional, cobrada separadamente.

Seu roteiro, dublado

Crie uma transcrição a partir dos seus próprios segmentos de texto ou de um arquivo SRT, e a API gerará a fala exatamente para esse roteiro no idioma de destino.

Biblioteca de vozes

Cada local de destino possui predefinições de voz de IA com um gênero específico. Liste-as para um projeto usando o endpoint de vozes e atribua uma a cada falante por ID de voz.

Vozes personalizadas e clones de voz

Use um clone de voz personalizado salvo como uma voz de marca consistente ou mantenha a voz original de quem aparece na tela com o Instant Voice Clone, nos idiomas compatíveis com clonagem de voz.

Sincronizado com o vídeo

Cada segmento tem um horário de início e término, para que cada linha de fala se encaixe perfeitamente no vídeo.

Vozes de personagens e diálogos

Atribua um falante a cada linha e uma voz a cada falante, para que um diálogo ou um elenco de vozes de personagens permaneça claro e consistente.

Mais de 135 opções de idiomas e regiões

Escreva o roteiro em um idioma e dê voz a ele em outro: a Rask o traduz, e as vozes de IA estão disponíveis para todos os locais de destino.

Faixa de áudio somente de voz

Nos planos elegíveis, baixe o áudio falado como uma faixa WAV sem fundo, pronta para sua própria edição, ou a mixagem completa e o vídeo finalizado.

Edite uma linha, regenere uma linha

Altere o texto de um segmento ou a voz de um falante e regenere. Ninguém precisa gravar nada de novo, e apenas os segmentos alterados são cobrados.

Cresça sem limites

Sem limites de taxa, sem cota de concorrência e sem limitação por chave. Duble conteúdos longos e catálogos de vídeos inteiros em paralelo.
Veja na prática

Ouça o mesmo vídeo dublado em cinco idiomas

O mesmo clipe dublado em inglês, francês, alemão, português e espanhol, sincronizado com a mesma imagem e com o áudio de fundo original intacto.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Fluxo de trabalho

Três passos do roteiro até a locução

A criação do projeto inicia a geração de fala para o seu roteiro. Use o endpoint /generate após alterar textos ou vozes.
1

Envie o vídeo ou áudio

Envie a gravação de vídeo ou áudio à qual a sua locução pertence, usando um arquivo ou uma URL de mídia compatível. A linha do tempo fornece o tempo exato para o seu roteiro.

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

Envie seu roteiro

Crie uma transcrição a partir de segmentos de texto com carimbos de data/hora e palestrantes, ou a partir de um arquivo SRT. Em seguida, crie o projeto com o seu transcript_id e um idioma de destino.

POST /v2/transcriptions
3

Escolha as vozes e baixe

Liste as vozes, atribua uma predefinição ou uma voz clonada a cada palestrante, regenere se necessário e baixe a locução, o vídeo e os arquivos de legenda.

GET /v2/projects/{id}/voices
O tempo de processamento varia de acordo com o projeto. A fala é gerada para todo o projeto e entregue como arquivos, por isso esta API é ideal para vídeos publicados e não para conversas ao vivo.
Criado para você

Precisa de uma voz que não está na biblioteca? Fale com nossa equipe

Uma voz de marca, um idioma fora do catálogo, maior capacidade ou seu próprio método de entrega: quando uma integração de locução 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 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 texto para fala para vídeos

Plataformas com vídeo integrado

Plataformas de LMS e educação de clientes, plataformas de criadores e vídeos, ferramentas de webinars e eventos virtuais, hospedagem de vídeos e SaaS de fluxo de trabalho, plataformas de adoção digital, live shopping. Permita que os usuários digitem ou enviem um roteiro e obtenham a locução para seus vídeos em vários idiomas, sem sair do seu produto.

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

Roteiros aprovados com vozes em formato de voz de IA ou voz personalizada do cliente para vídeos de clientes, e entrega do arquivo WAV apenas com a voz para sua própria mixagem. Atualize uma linha após a revisão e regenere apenas esse segmento.

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

Varejo e e-commerce internacional, franquias globais, editoras de mídia, universidades corporativas. Produza locuções para vídeos de treinamento, produtos e marketing a partir de um roteiro escrito, e atualize o texto quando o produto mudar.
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 texto para fala

Um exemplo completo em cada idioma: envie um roteiro como segmentos cronometrados, crie o projeto, escolha uma voz da biblioteca, regenere e baixe a locução.
# 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)

    script = await client.create_transcription(data=schemas.TranscriptionCreate(segments=[
        schemas.SegmentCreate(speaker="SPEAKER_00", start="00:00:00,500", end="00:00:04,800",
            src=schemas.SegmentTextCreatePatch(text="Welcome to the new dashboard.", lang="en"),
            dst=schemas.SegmentTextCreatePatch(text="Bienvenido al nuevo panel.", lang="es-mx")),
    ]))

    job = await wait(client, await client.create_project(data=schemas.ProjectCreate(
        video_id=VIDEO_ID, dst_lang="es-mx", transcript_id=script.id)))

    # pick a female AI voice preset from the library for SPEAKER_00
    voices = await client.get_project_voices(project_id=job.id)
    preset = next(v for v in voices if v.gender == "female")
    await client.patch_project(project_id=job.id, data=schemas.ProjectPatch(voice={**job.voice, "SPEAKER_00": preset.id}))

    job = await wait(client, await client.generate_project(project_id=job.id))
    print(job.voiceover, job.translated_video)

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

script = requests.post(f"{API}/v2/transcriptions", headers=h, json={"segments": [
        {"speaker": "SPEAKER_00", "start": "00:00:00,500", "end": "00:00:04,800",
         "src": {"text": "Welcome to the new dashboard.", "lang": "en"},
         "dst": {"text": "Bienvenido al nuevo panel.", "lang": "es-mx"}},
    ]}).json()

pid = requests.post(f"{API}/v2/projects", headers=h, json={
    "video_id": VIDEO_ID, "dst_lang": "es-mx", "transcript_id": script["id"]}).json()["id"]
project = wait(pid)

voices = requests.get(f"{API}/v2/projects/{pid}/voices", headers=h).json()
preset = next(v for v in voices if v["gender"] == "female")
requests.patch(f"{API}/v2/projects/{pid}", headers=h,
               json={"voice": {**project["voice"], "SPEAKER_00": preset["id"]}})
requests.post(f"{API}/v2/projects/{pid}/generate", headers=h)
print(wait(pid)["voiceover"])
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; };

const script = await call('POST', '/v2/transcriptions', { segments: [
  { speaker: 'SPEAKER_00', start: '00:00:00,500', end: '00:00:04,800',
    src: { text: 'Welcome to the new dashboard.', lang: 'en' },
    dst: { text: 'Bienvenido al nuevo panel.', lang: 'es-mx' } },
] });

const { id } = await call('POST', '/v2/projects', { video_id: VIDEO_ID, dst_lang: 'es-mx', transcript_id: script.id });
const project = await wait(id);

const voices = await call('GET', `/v2/projects/${id}/voices`);
const preset = voices.find((v) => v.gender === 'female');
await call('PATCH', `/v2/projects/${id}`, { voice: { ...project.voice, SPEAKER_00: preset.id } });
await call('POST', `/v2/projects/${id}/generate`);
console.log((await wait(id)).voiceover);
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. your script as an SRT file in the target language
TRANSCRIPT_ID=$(curl -s -X POST "https://api.rask.ai/v2/transcriptions/srt?dst_lang=es-mx" \
  -H "Authorization: Bearer $TOKEN" -F "dst=@script_es-mx.srt" | jq -r .id)

# 3. voice it over the video
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\", \"transcript_id\": \"$TRANSCRIPT_ID\"}" | jq -r .id)

# 4. when status is merging_done, read the voiceover links
curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" \
  | jq '{status, voiceover, translated_video}'
POST /v2/transcriptions/srt
script from an SRT file
<?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']];

$script = $json($http->post('/v2/transcriptions', ['headers' => $h, 'json' => ['segments' => [[
    'speaker' => 'SPEAKER_00', 'start' => '00:00:00,500', 'end' => '00:00:04,800',
    'src' => ['text' => 'Welcome to the new dashboard.', 'lang' => 'en'],
    'dst' => ['text' => 'Bienvenido al nuevo panel.', 'lang' => 'es-mx'],
]]]]));

$p = $json($http->post('/v2/projects', ['headers' => $h, 'json' => [
    'video_id' => $videoId, 'dst_lang' => 'es-mx', 'transcript_id' => $script['id']]]));

while ($p['status'] !== 'merging_done') {
    sleep(10);
    $p = $json($http->get("/v2/projects/{$p['id']}", ['headers' => $h]));
}
echo $p['voiceover'];
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 locução relata o progresso

A geração de fala é executada como um projeto com status documentados, para que você possa mostrar o progresso real mesmo para conteúdos longos. Você só precisa agir em três grupos.

Sucesso, pare por aqui

merging_done
A locução 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
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.
Voice options in a project, es-mx
GET /v2/projects/{project_id}/voices
{"label": "Renata",      "gender": "female", "sample_src": "https://..."}   AI voice preset
{"label": "Gerardo",     "gender": "male",   "sample_src": "https://..."}   AI voice preset
{"label": "Maria Lopez", "gender": "auto",   "sample_src": "https://..."}   custom voice clone
{"label": "Voice Clone", "gender": "auto",   "sample_src": null}            instant voice clone

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

Áudio de locução, vídeo e legendas

Baixe o vídeo com a nova locução e as legendas em SRT e VTT. Nos planos elegíveis, você também pode baixar o áudio falado separadamente em WAV, ou misturado com o áudio de fundo original.
Campo
Formato
O que é
translated_video
MP4
O vídeo com a locução gerada, pronto para ser publicado
voiceover
WAV
Apenas a fala gerada, sem som de fundo, para sua própria edição
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 linha ou uma voz e regenere apenas essa parte

Seu roteiro é armazenado em segmentos. Edite o texto de uma linha ou mude a voz de um locutor, regenere e apenas os segmentos alterados serão cobrados, com um mínimo de um minuto por execução.

Edição por segmentos

Edição por segmentos
Cada projeto apresenta seu roteiro em segmentos com carimbos de data/hora, locutores e texto, para que uma correção seja apenas uma solicitação de atualizaçã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
Quando o Rask traduz seu roteiro para outros idiomas, um glossário mantém os nomes de marcas e termos técnicos iguais em todas as versões ou no idioma original de propósito.

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 o vídeo da sua locução em qualquer formato compatível ou envie uma URL. Os roteiros entram como segmentos de texto por meio da API ou como arquivos SRT.

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 a duração, o tamanho do arquivo, o codec de vídeo, a taxa de quadros, a resolução, o codec de áudio, a taxa de amostragem e o layout dos canais. Valide o arquivo e estime o custo com antecedência, pois a locução é cobrada por minuto de vídeo, e não por caractere.
Segurança e conformidade

Segurança de nível empresarial para roteiros e vozes

A Brask Inc possui a certificação SOC 2 Type II, opera em conformidade com a GDPR e publica o status de controle em tempo real em seu Trust Center. Clones de voz personalizados são criados com o consentimento do locutor.

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 do Rask versus um fluxo de trabalho de locução criado por você

Uma API de conversão de texto em fala por streaming converte texto em bytes de áudio para uso ao vivo. A locução para vídeos publicados também precisa de tempo de sincronização, uma voz por locutor, mixagem, legendas e, muitas vezes, tradução. Aqui está a mesma locução, montada de duas maneiras.
O que você precisa
Rask API
Montado a partir de partes
Um roteiro sincronizado com o vídeo
Segmentos com tempos de início e término
Sua própria lógica de sincronização
Uma voz para cada locutor ou personagem
Mapa de vozes por projeto
IDs de voz gerenciados por solicitação
Uma voz de marca consistente
Clones de voz personalizados
Um fornecedor de clonagem separado
O mesmo roteiro em outros idiomas
Tradução no mesmo projeto
Uma API de tradução mais uma nova sincronização de tempo
Música de fundo e efeitos
Misturado sob a locução
Sua própria etapa de mixagem
Legendas em .srt e .vtt
Incluído
Gerado a partir dos seus próprios dados de tempo
Uma faixa de áudio apenas com voz
WAV em planos qualificados
Trechos de áudio que você une por conta própria
Alterando uma linha
Regerar os trechos alterados
Ressintetizar e remixar o arquivo
Limites de taxa
Nenhum
O que o seu provedor determinar
Agentes de voz ao vivo com streaming
Use uma API de conversão de texto em fala com streaming
Feito para isso
Perguntas frequentes

API de conversão de texto em fala: dúvidas frequentes

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

A Rask possui uma API de conversão de texto em fala?

Posso usá-la para agentes de voz ou centrais de atendimento?

A API oferece suporte à saída de áudio por streaming?

Como faço para enviar meu roteiro?

Quais vozes estão disponíveis?

Posso usar uma voz personalizada?

Quais idiomas são suportados?

Vocês oferecem suporte a tags SSML ou pronúncias personalizadas?

Posso controlar a emoção e a expressividade da fala?

Preciso de um vídeo para gerar a fala?

A cobrança é feita por caractere?

Existe um plano gratuito ou créditos gratuitos?

Como obtenho acesso à API e uma chave de API?

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.