API de text to speech para locução de vídeo

Envie seu roteiro cronometrado com uma gravação de vídeo ou áudio e gere fala alinhada à linha do tempo. Escolha vozes de IA da biblioteca de vozes ou um clone de voz em mais de 135 idiomas e variações regionais, e baixe a locução, o vídeo e as legendas no mesmo projeto.
Do roteiro à locução
Vozes de IA e clones de voz
REST + SDK em 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 do mundo todo
Recursos

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

Transforme um roteiro escrito em uma locução que se encaixa na imagem: a voz certa para cada locutor, tempo dos seus segmentos, áudio de fundo, legendas e tradução em um só projeto. Adicione sincronização labial opcional, cobrada separadamente.

Seu roteiro, falado

Crie uma transcrição a partir de seus próprios segmentos de texto ou de um arquivo SRT, e a API gera 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 definido. Liste-as para um projeto com o endpoint de vozes e atribua uma a cada locutor 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 do próprio locutor em cena com o Instant Voice Clone, nos idiomas compatíveis com clonagem de voz.

Sincronizado com a imagem

Cada segmento tem um horário de início e término, para que cada linha de fala apareça exatamente onde deve no vídeo.

Vozes de personagens e diálogos

Atribua um locutor a cada linha e uma voz a cada locutor, 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: o Rask traduz o texto, e há vozes de IA disponíveis para cada local de destino.

Faixa de áudio apenas com voz

Nos planos elegibles, 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 locutor e regenere. Ninguém precisa gravar tudo 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. Dê voz a conteúdos longos e catálogos de vídeos inteiros em paralelo.
Veja como funciona

Ouça uma mesma imagem dublada em cinco idiomas

O mesmo clipe com vozes 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 à locução

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

Envie um vídeo ou áudio

Envie o arquivo de vídeo ou áudio da sua locução, ou use uma URL de mídia compatível. A linha do tempo dele fornece o ritmo para o seu roteiro.

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

Envie seu roteiro

Crie uma transcrição a partir de trechos de texto com marcações de tempo e locutores, ou de um arquivo SRT. Em seguida, crie o projeto usando o transcript_id e o idioma de destino.

POST /v2/transcriptions
3

Escolha as vozes e faça o download

Liste as vozes, atribua uma predefinição ou uma clonagem a cada locutor, gere novamente se necessário e baixe os arquivos de locução, vídeo e legendas.

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 prontos, e não para conversas ao vivo.
Desenvolvido 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 de processamento ou seu próprio método de entrega: quando a 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 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 texto para fala em vídeos

Plataformas que incluem vídeos

Plataformas de LMS e treinamento de clientes, plataformas de criadores e vídeos, ferramentas de webinars e eventos virtuais, SaaS de hospedagem de vídeo e fluxo de trabalho, plataformas de adoção digital e compras ao vivo. 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

Aprove roteiros com vozes de IA ou com a voz personalizada de um cliente para vídeos de clientes, e entregue o arquivo WAV apenas com a voz para a sua própria mixagem. Atualize uma linha após a revisão e gere novamente apenas esse trecho.

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

Varejo e e-commerce internacional, franquias globais, editoras de mídia e 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 a Rask, em 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 com marcação de tempo, crie o projeto, escolha uma voz da biblioteca, gere novamente 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 funciona como um projeto com status documentados, para que você possa mostrar o progresso real mesmo em conteúdos longos. Você só precisa agir em três grupos.

Sucesso, pare aqui

merging_done
A locução está concluída. Acesse o projeto mais uma vez para obter 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
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.
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 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

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

Baixe o vídeo com a nova locução e legendas em SRT e VTT. Nos planos qualificados, você também pode baixar o áudio falado separadamente em formato 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
Mesmas legendas que o WebVTT, para reprodutores web
original_video
MP4
Seu arquivo original salvo, para referência
Controle

Altere uma linha ou uma voz e gere novamente apenas essa parte

Seu roteiro é salvo em partes. Edite o texto de uma linha ou mude a voz de um locutor, gere novamente e apenas as partes alteradas serão cobradas, com um mínimo de um minuto por execução.

Edição por trecho

Edição por trecho
Cada projeto mostra seu roteiro em partes com marcações de tempo, locutores e texto, para que uma correção seja feita com 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
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 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 o vídeo da sua locução em qualquer formato compatível ou mande um link. Os roteiros entram como trechos de texto pela 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 a disposição dos canais. Valide um arquivo e calcule 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 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 do Rask comparada a um fluxo de locução criado por você

Uma API de texto para fala por streaming converte texto em áudio para uso ao vivo. A locução para vídeos publicados também precisa de tempo de sincronia, uma voz por locutor, mixagem, legendas e, muitas vezes, tradução. Veja a mesma locução montada de duas formas.
O que você precisa
Rask API
Montado por partes
Um roteiro sincronizado com o vídeo
Partes com horários 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 um novo tempo de sincronia
Música de fundo e efeitos
Mixado 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 trilha de áudio apenas com voz
WAV nos planos elegíveis
Trechos de áudio que você une por conta própria
Alterando uma linha
Regerar os trechos alterados
Refaça a síntese e a mixagem do arquivo
Limites de taxa
Nenhum
O que o seu provedor determinar
Agentes de voz ao vivo com streaming
Use uma API de texto para fala (TTS) com streaming
Feito para isso
Perguntas frequentes

API de texto para fala: perguntas frequentes

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

O Rask AI tem uma API de texto para fala?

Posso usar para agentes de voz ou centrais de atendimento?

A API oferece suporte para saída de áudio em 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 aceitam tags SSML ou pronúncias personalizadas?

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

Preciso de um vídeo para gerar fala?

O preço é cobrado por caractere?

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