API de texto para fala para dobragem de vídeo

Envie o seu texto com marcação temporal juntamente com uma gravação de vídeo ou áudio, e crie áudio alinhado com a respetiva linha temporal. Escolha vozes IA da biblioteca de vozes ou um clone de voz, em mais de 135 idiomas e opções regionais, e transfira a dobragem, o vídeo e as legendas a partir do mesmo projeto.
De texto a dobragem
Vozes IA e clones de voz
REST + SDK 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}'
Utilizado por equipas globais
Funcionalidades

Tudo o que a API de texto para fala faz para vídeo

Transforme um texto escrito numa dobragem que se adapta à imagem: a voz certa para cada locutor, temporização dos seus segmentos, áudio de fundo, legendas e tradução num único projeto. Adicione sincronização labial opcional, cobrada separadamente.

O seu texto, falado

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

Biblioteca de vozes

Cada local de destino tem predefinições de voz IA com um género definido. Liste-os para um projeto com o endpoint de vozes e atribua um a cada locutor através do ID de voz.

Vozes personalizadas e clones de voz

Utilize um clone de voz personalizado guardado como uma voz de marca consistente, ou mantenha a voz do próprio locutor no ecrã com o Instant Voice Clone, nos idiomas de clonagem de voz suportados.

Sincronizado com a imagem

Cada segmento tem um tempo de início e de fim, para que cada linha de discurso encaixe no sítio certo no vídeo.

Vozes de personagens e diálogo

Atribua um locutor a cada linha e uma voz a cada locutor, para que um diálogo ou um conjunto de vozes de personagens se mantenha claro e consistente.

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

Escreva o texto num idioma e dê-lhe voz noutro: o Rask traduz e as vozes IA estão disponíveis para cada local de destino.

Faixa de áudio apenas com voz

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

Editar uma linha, regenerar uma linha

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

Cresça sem limites

Sem limites de velocidade, sem quota de concorrência, sem limitações por chave. Dobre conteúdos longos e catálogos de vídeos completos em paralelo.
Veja como funciona

Ouça uma imagem com voz em cinco idiomas

O mesmo vídeo com dobragem em inglês, francês, alemão, português e espanhol, sincronizado com a imagem original e mantendo o som de fundo intacto.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Fluxo de trabalho

Três passos do guião até à locução

Criar o projeto inicia a geração de voz para o seu guião. Utilize o endpoint /generate após alterar o texto ou as vozes.
1

Carregar vídeo ou áudio

Carregue o vídeo ou a gravação de áudio a que se destina a locução, utilizando um ficheiro ou um URL de suporte multimédia. A linha do tempo fornece a temporização para o seu guião.

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

Enviar o seu guião

Crie uma transcrição a partir de segmentos de texto com caraterísticas de tempo e oradores, ou a partir de um ficheiro SRT, e depois crie o projeto com o respetivo transcript_id e um idioma de destino.

POST /v2/transcriptions
3

Escolher vozes e descarregar

Consulte as vozes, atribua uma predefinição ou um clone a cada orador, volte a gerar se necessário e, em seguida, descarregue a locução, o vídeo e os ficheiros de legendas.

GET /v2/projects/{id}/voices
O tempo de processamento varia consoante o projeto. A voz é gerada para todo o projeto e disponibilizada em ficheiros, pelo que esta API se adequa mais a vídeos publicados do que a conversas em direto.
Criado a pensar em si

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

Uma voz de marca, um idioma fora do catálogo, maior capacidade de processamento ou o seu próprio método de entrega: quando uma integração de locução 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 texto para voz para 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, alojamento de vídeo e SaaS de fluxo de trabalho, plataformas de adoção digital, compras em direto. Permita que os utilizadores escrevam ou carreguem um guião e obtenham a locução para os seus vídeos em vários idiomas, sem sair do seu produto.

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

Guiões aprovados com vozes para vídeos de clientes em vozes de IA ou na voz personalizada de um cliente, e entregue o WAV apenas com a voz para a sua própria mistura. Atualize uma linha após a revisão e volte a gerar apenas esse segmento.

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

Retalho internacional e comércio eletrónico, franquias globais, editores de media, universidades corporativas. Produza locuções para vídeos de formação, de produtos e de marketing a partir de um guião escrito e atualize o texto quando o produto mudar.
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 texto para voz

Um exemplo completo em cada idioma: envie um guião como segmentos temporizados, crie o projeto, escolha uma voz da biblioteca, volte a gerar e descarregue 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
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 um projeto de locução reporta o progresso

A geração de voz funciona como um projeto com estados documentados, para que possa mostrar o progresso real mesmo em conteúdos longos. Só precisa de agir sobre três grupos.

Concluído com sucesso, parar por aqui

merging_done
A locução está concluída. Aceda novamente ao projeto para obter as ligações de descarga 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. Estes correspondem perfeitamente a uma interface de progresso por etapas.

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 e forbidden_link são suficientemente específicos para serem mostrados diretamente ao seu próprio utilizador.
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 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

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

Descarregue o vídeo com a nova locução e legendas em SRT e VTT. Nos planos elegíveis, também pode descarregar o áudio falado isoladamente 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 a publicar
voiceover
WAV
Apenas voz gerada, sem fundo, para a 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 leitores web
original_video
MP4
O seu ficheiro de origem tal como foi guardado, para referência
Controlo

Altere uma linha ou uma voz, regenere apenas essa parte

O seu guião é guardado em segmentos. Edite o texto de uma linha ou altere a voz de um locutor, regenere e apenas os segmentos alterados são cobrados, com um mínimo de um minuto por execução.

Edição ao nível de segmento

Edição ao nível de segmento
Cada projeto expõe o seu guião como segmentos com carateres temporais, locutores e texto, pelo que uma correção é apenas um pedido de atualização.
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
Quando o Rask traduz o seu guião para outros idiomas, um glossário mantém os nomes de marcas e os termos técnicos iguais em todas as versões, ou no idioma original de propósito.

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 o vídeo a que a sua locução pertence em qualquer formato suportado ou envie um URL. Os guiões entram como segmentos de texto através da API ou como ficheiros SRT.

Vídeo

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

Áudio

4 formatos
.mp3
.wav
.flac
.m4a

Metadados antes de gastar

O ponto de acesso de multimédia devolve a duração, o tamanho do ficheiro, o codec de vídeo, a frequência 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, porque a locução é cobrada por minuto de vídeo e não por carácter.
Segurança e conformidade

Segurança de nível empresarial para guiões e vozes

A Brask Inc possui a certificação SOC 2 Type II, opera ao abrigo do RGPD e publica o estado de controlo em direto no seu Trust Center. As clonagens de voz personalizadas são criadas com o consentimento do locutor.

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 do Rask versus um canal de locução criado por si

Uma API de conversão de texto em voz em fluxo contínuo converte texto em bytes de áudio para utilização em direto. A locução para vídeo publicado também necessita de sincronização temporal, uma voz por locutor, mistura, legendas e, frequentemente, tradução. Eis a mesma locução, montada de duas formas.
O que precisa
Rask API
Montado a partir de peças
Um guião sincronizado com o vídeo
Segmentos com tempos de início e fim
A sua própria lógica de alinhamento
Uma voz para cada locutor ou personagem
Mapa de vozes por projeto
IDs de voz geridos por pedido
Uma voz de marca consistente
Clones de voz personalizados
Um fornecedor de clonagem separado
O mesmo guião noutros idiomas
Tradução no mesmo projeto
Uma API de tradução mais nova sincronização temporal
Música de fundo e efeitos
Misturado sob a locução
O seu próprio passo de mistura
Legendas em .srt e .vtt
Incluído
Gerado a partir dos seus próprios dados de temporização
Uma faixa de áudio apenas com voz
WAV nos planos elegíveis
Segmentos de áudio que junta por si próprio
Alterar uma linha
Regenerar os segmentos alterados
Rees sintetizar e voltar a misturar o ficheiro
Limites de taxa
Nenhum
O que o seu fornecedor determinar
Agentes de voz em direto com streaming
Utilizar uma API de TTS em streaming
Feito para isso
Perguntas frequentes

API de texto para fala: perguntas frequentes

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

A Rask tem uma API de texto para fala?

Posso utilizá-la para agentes de voz ou centros de contacto?

A API suporta a saída de áudio em streaming?

Como envio o meu guião?

Que vozes estão disponíveis?

Posso utilizar uma voz personalizada?

Que idiomas são suportados?

Suportam etiquetas SSML ou pronúncias personalizadas?

Posso controlar a emoção e a expressividade?

Preciso de um vídeo para gerar fala?

O preço é por caráter?

Existe um plano gratuito ou créditos gratuitos?

Como obtenho acesso à API e uma chave de API?

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.