API de transcrição para todos os vídeos da sua biblioteca

Envie arquivos de vídeo ou links do YouTube, Google Drive e Vimeo e obtenha transcrições pesquisables com identificação de falantes e marcação de tempo em 75 idiomas, com detecção automática de idioma. Transcreva um vídeo ou sua biblioteca inteira e, depois, traduza as transcrições e legendas para alcançar públicos globais.
Arquivos e links de vídeo
Transcrição em lote
REST + SDK para Python
link in, transcript out
OAuth 2.0
# 1. send the video as a link - YouTube, Google Drive, Vimeo, S3 or direct URL
curl -X POST https://api.rask.ai/api/library/v1/media/link \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"link": "https://youtu.be/...", "name": "camera review"}'

# 2. create the project - the language of the video is detected automatically
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\"}"
GET /v2/projects/{project_id}/transcription
plain text
# The transcript as plain text with timestamps and speakers
curl -s https://api.rask.ai/v2/projects/$ID/transcription -H "Authorization: Bearer $TOKEN" \
  | jq -r '.segments[] | "\(.start) \(.speaker): \(.src.text)"'
Usado por equipes globais
Recursos

O que a API de transcrição de vídeo faz

Envie arquivos ou links de vídeo e receba uma transcrição com os falantes e marcações de tempo para cada vídeo da sua biblioteca. O mesmo projeto transforma cada transcrição em traduções, legendas e uma versão dublada.

Transcreva vídeos a partir de um arquivo ou link

Envie arquivos de vídeo ou cole um link do YouTube, Google Drive, Vimeo, S3 ou um link direto. A API busca o vídeo automaticamente, sem precisar que você faça o download.

Múltiplos falantes identificados

Entrevistas, painéis e webinars com diferentes participantes retornam com a identificação de quem está falando em cada trecho, para você saber sempre quem disse o quê.

Detecção automática de idioma

Transcreva vídeos em 75 idiomas de origem, incluindo inglês. Deixe o campo de idioma de origem em branco para que o idioma de cada vídeo seja detectado automaticamente.

Transcrições pesquisáveis

Cada trecho possui horário de início e fim, permitindo que os usuários busquem o conteúdo em texto de um vídeo e vão direto para o momento em que a frase foi dita.

Transcrições em vários idiomas

Cada trecho também inclui sua tradução em mais de 135 opções de idiomas e regiões, para que uma única transcrição atenda públicos globais em outros idiomas.

Legendas em .srt e .vtt

Cada projeto também gera arquivos de legenda no idioma de destino, sincronizados com os trechos, para espectadores com deficiência auditiva ou que assistem sem som.

Texto simples ou dados estruturados

Leia a transcrição em trechos no formato JSON ou junte tudo em texto simples para índices de busca, artigos, descrições e anotações.

Corrija termos técnicos

Corrija nomes, termos de produtos e jargões técnicos em qualquer trecho através da API. Um glossário mantém os mesmos termos consistentes quando a transcrição é traduzida.

Cresça sem limites

Sem limites de requisições, sem cota de concorrência e sem restrição por chave. Execute transcrições em lote em vários vídeos ou na sua biblioteca inteira em paralelo.
Veja na prática

De uma única transcrição para cinco versões em outros idiomas

A transcrição deste vídeo foi convertida para as versões em inglês, francês, alemão, português e espanhol, cada uma com legendas e o áudio de fundo original.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Fluxo de trabalho

Três solicitações do link do vídeo até a transcrição

A criação do projeto inicia a transcrição, seguida pela tradução, legendas e a versão dublada em um só processo. Use o endpoint /generate após corrigir a transcrição.
1

Envie o vídeo

Faça o upload de um arquivo de vídeo como dados de formulário multipart, ou envie um link direto do YouTube, Google Drive, Vimeo ou S3. Você obtém um ID de mídia e os metadados do vídeo antes de gastar qualquer valor.

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

Criar o projeto

Passe o ID de mídia como video_id e um idioma de destino. Deixe o idioma de origem em branco para a detecção automática de idioma. A transcrição começa imediatamente.video_id

POST /v2/projects
3

Leia a transcrição

Leia os trechos da transcrição assim que estiverem disponíveis, para começar a indexar a gravação enquanto a mídia traduzida continua sendo processada. Baixe os arquivos de legenda e mídia quando o projeto for concluído.

GET /v2/projects/{id}/transcription
A transcrição funciona em vídeos gravados, não em transmissões ao vivo. O tempo de processamento varia de acordo com a duração do vídeo e o número de falantes: em um teste observado, um vídeo de 3:47 foi concluído em 165 segundos.
Criado para você

Precisa transcrever um volume alto ou em um idioma que não está na nossa lista? Fale com nossa equipe

Transcrição em alto volume, um idioma de origem fora da lista, um formato de transcrição esperado pelo seu sistema de busca ou entrega no seu próprio armazenamento: nossa equipe avalia o que você precisa e as opções disponíveis.

Idiomas e vozes

Precisa de um idioma de origem fora do catálogo público? Fale com nossa equipe sobre suas necessidades e 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 transcrição de vídeo

Plataformas com vídeo integrado

Plataformas de LMS e educação de clientes, plataformas de criadores e vídeo, ferramentas de webinars e eventos virtuais, hospedagem de vídeo e SaaS de fluxo de trabalho, plataformas de adoção digital, live shopping. Adicione transcrições pesquisáveis e legendas aos vídeos enviados como um recurso do seu produto.

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

Transcreva vídeos de clientes em massa, forneça aos revisores a transcrição com identificação de falantes e entregue legendas e traduções a partir dos mesmos projetos.

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

Varejo internacional e e-commerce, franquias globais, editoras de mídia, universidades corporativas, criadores de conteúdo. Torne cada vídeo pesquisable e acessível, e reutilize as transcrições para artigos e descrições.
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 transcrição de vídeo

Um exemplo completo em cada idioma: envie vídeos como links ou arquivos, aguarde e salve transcrições em texto simples ou pesquise nelas por marcação de tempo.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

VIDEOS = ["https://youtu.be/aaa", "https://youtu.be/bbb", "https://vimeo.com/123"]

async def transcribe(client, i, link):
    media = await client.create_media_link(data=schemas.MediaCreateLink(link=link))
    while media.status is enums.MediaStatus.PROCESSING:
        await asyncio.sleep(5)
        media = await client.get_media(media_id=media.id)
    job = await client.create_project(data=schemas.ProjectCreate(video_id=media.id, dst_lang="en-us"))
    while job.status is not enums.ProjectStatus.MERGING_DONE:
        await asyncio.sleep(10)
        job = await client.get_project(project_id=job.id)
    t = await client.get_project_transcription(project_id=job.id)
    with open(f"video_{i}.txt", "w") as f:   # plain text, one segment per line
        f.write("\n".join(f"{s.speaker}: {s.src.text}" for s in t.segments))

async def main():
    client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)
    await asyncio.gather(*(transcribe(client, i, v) for i, v in enumerate(VIDEOS)))   # no rate limits

asyncio.run(main())
github.com/braskai/rask-sdk
bulk, async
import os, 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}"}

media = requests.post(f"{API}/api/library/v1/media/link", headers=h,
                      json={"link": "https://youtu.be/..."}).json()

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

while project["status"] != "merging_done":
    time.sleep(10)
    project = requests.get(f"{API}/v2/projects/{project['id']}", headers=h).json()

print(project["translated_video"])
requests
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());

let media = await call('POST', '/api/library/v1/media/link', { link: 'https://drive.google.com/file/d/...' });
while (media.status === 'processing') { await sleep(5000); media = await call('GET', `/api/library/v1/media/${media.id}`); }

let p = await call('POST', '/v2/projects', { video_id: media.id, dst_lang: 'fr-fr' });
while (p.status !== 'merging_done') { await sleep(10000); p = await call('GET', `/v2/projects/${p.id}`); }

const { segments } = await call('GET', `/v2/projects/${p.id}/transcription`);
const index = segments.map((s) => ({ t: s.start, speaker: s.speaker, text: s.src.text, fr: s.dst.text }));
console.log(JSON.stringify(index, null, 2));   // ready for your search index
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. upload a local video file
VIDEO_ID=$(curl -s -X POST "https://api.rask.ai/api/library/v1/media?kind=video" \
  -H "Authorization: Bearer $TOKEN" -F "[email protected]" | jq -r .id)

# 3. create the project once the media status is ready
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\": \"de-de\", \"num_speakers\": 3}" | jq -r .id)

# 4. when status is merging_done, save the transcript as plain text
curl -s https://api.rask.ai/v2/projects/$ID/transcription -H "Authorization: Bearer $TOKEN" \
  | jq -r '.segments[].src.text' > webinar.txt
local video file
multipart upload
<?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']];

$media = $json($http->post('/api/library/v1/media/link', ['headers' => $h, 'json' => [
    'link' => 'https://vimeo.com/123456']]));
while ($media['status'] === 'processing') {
    sleep(5);
    $media = $json($http->get("/api/library/v1/media/{$media['id']}", ['headers' => $h]));
}

$p = $json($http->post('/v2/projects', ['headers' => $h, 'json' => [
    'video_id' => $media['id'], 'dst_lang' => 'pt-br']]));
while ($p['status'] !== 'merging_done') {
    sleep(10);
    $p = $json($http->get("/v2/projects/{$p['id']}", ['headers' => $h]));
}

$t = $json($http->get("/v2/projects/{$p['id']}/transcription", ['headers' => $h]));
file_put_contents('video.txt', implode("\n", array_map(fn($s) => $s['src']['text'], $t['segments'])));
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 transcrição de vídeo relata o progresso

Cada vídeo se torna um projeto com status documentados, para que você possa acompanhar o progresso de cada vídeo em um lote. Você só precisa agir em três grupos.

Sucesso, pare por aqui

merging_done
Os arquivos finais de mídia e legendas estão prontos. Você pode ler e indexar a transcrição antes, assim que os trechos estiverem disponíveis.

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 and forbidden_link are specific enough to show directly to your own user, for example a video without speech.
Plain text transcript, two speakers
jq -r on /transcription
00:00:00,320  SPEAKER_00  Welcome back. Today we test three cameras in low light.
00:00:06,180  SPEAKER_01  I brought the footage from last week's night shoot.
00:00:10,940  SPEAKER_00  Let's start with the smallest sensor, the hardest case.
00:00:15,500  SPEAKER_01  At ISO 6400 the noise is visible, but the colors hold up.

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

O que você recebe para cada vídeo

Cada projeto concluído disponibiliza a transcrição em trechos no formato JSON, arquivos de legenda em SRT e VTT no idioma de destino, além do vídeo e áudio traduzidos. Os links de download são assinados previamente e válidos por uma hora.
Campo
Formato
O que é
/transcription
JSON
Identificação do falante, marcas de tempo, texto de origem e tradução para cada trecho
translation_srt_path
.srt
Legendas no idioma de destino, sincronizadas com os trechos
translation_vtt_path
.vtt
As mesmas legendas no formato WebVTT, para reprodutores web
translated_video
MP4
O vídeo traduzido com dublagem
translated_audio
WAV
Fala traduzida misturada com o áudio de fundo original
original_video
MP4
Seu vídeo original armazenado para referência
Controle

Corrija nomes e termos técnicos na transcrição

A transcrição automática lida com a maior parte de um vídeo. Nomes, sotaques e jargões técnicos às vezes precisam de uma pessoa. Corrija o texto, o tempo ou o locutor de um segmento com uma única solicitação e, em seguida, regenere a versão traduzida, cobrada com base nos segmentos alterados, com um mínimo de um minuto por execução.

Edição por segmentos

Edição por segmentos
Cada projeto expõe sua transcrição como segmentos acessíveis, de modo que um nome mal compreendido exige apenas uma solicitação de correção em vez de uma transcrição manual.
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 garantir que nomes de produtos e termos técnicos sejam lidos da mesma forma em todas as transcrições traduzidas, ou mantenha-os 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

Transcreva arquivos de vídeo em sete formatos e gravações de áudio em quatro, ou envie um link de uma grande plataforma como YouTube, Google Drive ou Vimeo. Arquivos não suportados são rejeitados antes que qualquer minuto seja cobrado.

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 o arquivo e estime o custo com antecedência, pois os projetos são cobrados por minuto de vídeo.
Segurança e conformidade

Seus vídeos e transcrições protegidos por controles auditados

A Brask Inc possui a certificação SOC 2 Tipo II, opera em conformidade com o GDPR e publica o status de controle em tempo real em seu Centro de Confiança para a sua equipe de segurança.

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 em comparação com um fluxo de trabalho de transcrição montado por partes

A transcrição de um vídeo raramente é o resultado final. As equipes também precisam de identificação de locutores, legendas e outros idiomas. Aqui está o mesmo trabalho montado de duas maneiras.
O que você precisa
Rask API
Montado a partir de partes
Links de vídeo do YouTube, Drive, Vimeo ou S3
Aceitos diretamente
Baixar e converter primeiro
Identificação de locutores para vários participantes
Incluído
Um complemento de diarização ou marcação manual
O idioma de cada vídeo
Detectado automaticamente
Definido por arquivo ou detectado separadamente
Transcrições em outros idiomas
Mais de 135 opções de idiomas e regiões
Uma API de tradução por idioma
Legendas em .srt e .vtt
Incluído
Uma ferramenta de legendas ou seu próprio criador de arquivos
Correção de termos técnicos
Uma solicitação de correção por segmento
Editar cópias em cada ferramenta
Uma versão dublada do vídeo
Incluído no mesmo projeto
Um fornecedor de TTS mais a sua própria mixagem
Limites de taxa
Nenhum
O que cada provedor determinar
Legendas em tempo real para reuniões ao vivo
Use uma API de fala para texto em tempo real
Integrado em alguns provedores
Um idioma que ninguém ainda oferece
Nós criamos
Indisponível
Perguntas frequentes

API de transcrição de vídeo: perguntas frequentes

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

O Rask possui uma API de transcrição de vídeo?

Posso transcrever um vídeo do YouTube ou um link de vídeo?

Posso transcrever vários vídeos ao mesmo tempo?

Como o sistema lida com vários falantes?

Quais idiomas são suportados?

Qual é a precisão da transcrição?

Posso obter a transcrição como texto simples?

O sistema gera resumos com IA, tópicos principais ou análise de sentimento?

É possível transcrever reuniões?

Existe um limite máximo de tamanho de arquivo?

Como é feita a cobrança da transcrição de vídeo?

Existe uma opção gratuita?

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.