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 pesquisáveis com identificação de falantes e marcações 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 o público global.
Arquivos e links de vídeo
Transcrição em massa
REST + SDK em 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 do mundo todo
Recursos

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

Envie arquivos ou links de vídeo e obtenha uma transcrição com 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 de um arquivo ou link

Envie arquivos de vídeo ou cole um link do YouTube, Google Drive, Vimeo, S3 ou link direto. A API busca o vídeo sozinha, sem que você precise baixar nada.

Vários falantes, identificados

Entrevistas, painéis e webinars com diferentes participantes retornam com o nome do falante 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 vazio e o idioma de cada vídeo será detectado automaticamente.

Transcrições pesquisáveis

Cada trecho tem hora de início e fim, permitindo que os usuários busquem o conteúdo em texto de um vídeo e vão direto ao momento em que a frase é dita.

Transcrições em vários idiomas

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

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 preferem assistir sem som.

Texto simples ou dados estruturados

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

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 velocidade, sem cota de simultaneidade e sem restrições por chave. Faça transcrições em massa em vários vídeos ou na sua biblioteca inteira em paralelo.
Veja como funciona

De uma transcrição para cinco versões em diferentes idiomas

A transcrição deste trecho deu origem a 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 etapas 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 no mesmo processo. Use o endpoint /generate após corrigir a transcrição.
1

Envie o vídeo

Envie um arquivo de vídeo como dados de formulário multipart, ou poste um link do YouTube, Google Drive, Vimeo, S3 ou um link direto. Você obtém um ID de mídia e os metadados do vídeo antes de gastar qualquer coisa.

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 idiomas. A transcrição começa imediatamente.video_id

POST /v2/projects
3

Ler a transcrição

Leia os trechos da transcrição assim que estiverem disponíveis, para que você possa 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.
Desenvolvido para você

Precisa transcrever em grande volume ou em um idioma que não está na nossa lista? Fale com a 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 para o seu próprio armazenamento: nossa equipe analisa suas necessidades e as opções disponíveis.

Idiomas e vozes

Precisa de um idioma de origem que não está no catálogo público? Fale com a nossa equipe sobre os seus requisitos 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 transcrição de vídeo

Plataformas que incluem vídeos

Plataformas de ensino (LMS) e educação de clientes, plataformas de criadores e vídeos, 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 uploads de vídeo como um recurso do seu produto.

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

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

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

Varejo internacional e e-commerce, franquias globais, editoras de mídia, universidades corporativas, criadores de conteúdo. Torne cada vídeo pesquisável e acessível, e reaproveite as transcrições para artigos e descrições.
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 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 andamento de cada vídeo em um processamento em lote. Você só precisa agir em três grupos.

Sucesso, pare aqui

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

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 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 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

O que você recebe por 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 do áudio traduzidos. Os links de download são pré-assinados e válidos por uma hora.
Campo
Formato
O que é
/transcription
JSON
Identificação do falante, marcações de tempo, texto original 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 em formato WebVTT para players 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 salvo, para referência
Controle

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

A transcrição automática resolve a maior parte de um vídeo. Nomes, sotaques e termos técnicos às vezes precisam de revisão humana. Corrija o texto, o tempo ou o locutor de um trecho com apenas uma solicitação e gere a versão traduzida novamente. Você paga apenas pelos trechos alterados, com um minuto mínimo por execução.

Edição por trecho

Edição por trecho
Cada projeto organiza sua transcrição em trechos fáceis de editar, então um nome entendido errado exige apenas um ajuste rápido, e não uma nova transcrição manual.
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
Adicione um glossário para garantir que nomes de produtos e termos técnicos fiquem idênticos 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 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

Transcreva arquivos de vídeo em sete formatos e gravações de áudio em quatro, ou envie um link de plataformas populares como YouTube, Google Drive ou Vimeo. Arquivos não compatíveis 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 ponto de extremidade de mídia retorna duração, tamanho do arquivo, codec de vídeo, taxa de quadros, resolução, codec de áudio, taxa de amostragem e 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 com controles auditados

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

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 vs. um fluxo de trabalho de transcrição montado com várias ferramentas

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. Veja o mesmo trabalho feito de duas maneiras.
O que você precisa
Rask API
Montado por partes
Links de vídeo do YouTube, Drive, Vimeo ou S3
Aceitos diretamente
Baixar e converter primeiro
Identificação de vários locutores
Incluído
Um recurso extra de divisão de vozes 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 para cada idioma
Legendas em .srt e .vtt
Incluído
Uma ferramenta de legendas ou seu próprio editor de arquivos
Correção de termos técnicos
Uma solicitação de ajuste por trecho
Editar cópias em cada ferramenta
Uma versão dublada do vídeo
Incluído no mesmo projeto
Um fornecedor de TTS com 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 conversão de fala em texto por streaming
Integrado em alguns provedores
Um idioma que ninguém oferece ainda
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 tem 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 de uma vez?

Como o sistema lida com vários locutores?

Quais idiomas são suportados?

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

Posso obter a transcrição em texto simples?

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

É possível transcrever reuniões?

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