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

Envie ficheiros de vídeo ou links do YouTube, Google Drive e Vimeo e obtenha transcrições pesquisáveis com identificação de oradores e carateres temporais, em 75 idiomas e com deteção automática de idioma. Transcreva um vídeo ou toda a sua biblioteca e, em seguida, traduza as transcrições e legendas para públicos globais.
Ficheiros e links de vídeo
Transcrição em lote
REST + SDK 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)"'
Utilizado por equipas globais
Funcionalidades

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

Envie ficheiros ou links de vídeo e obtenha uma transcrição com oradores e carateres temporais para cada vídeo da sua biblioteca. O mesmo projeto converte cada transcrição em traduções, legendas e uma versão dobrada.

Transcrever vídeos a partir de um ficheiro ou link

Carregue ficheiros de vídeo ou partilhe um link direto do YouTube, Google Drive, Vimeo, S3 ou outro. A API obtém o vídeo diretamente, sem necessidade de o descarregar.

Múltiplos oradores identificados

Entrevistas, painéis e webinars com diferentes oradores devolvem uma identificação em cada segmento, para saber sempre quem disse o quê.

Deteção automática de idioma

Transcreva vídeos em 75 idiomas de origem, incluindo inglês. Deixe o idioma de origem em branco e o idioma de cada vídeo será detetado automaticamente.

Transcrições pesquisáveis

Cada segmento tem um tempo de início e de fim, permitindo aos utilizadores pesquisar o conteúdo de texto de um vídeo e saltar diretamente para o momento em que a frase é dida.

Transcrições em vários idiomas

Cada segmento inclui também a respetiva tradução, disponível em mais de 135 opções de idiomas e regiões, permitindo que uma única transcrição sirva públicos globais.

Legendas em .srt e .vtt

Cada projeto também devolve ficheiros de legendas no idioma pretendido, sincronizados com os segmentos, para espetadores com dificuldades auditivas ou a ver vídeos sem som.

Texto simples ou dados estruturados

Leia a transcrição como segmentos JSON ou junte o texto num formato simples para índices de pesquisa, artigos, descrições e notas.

Corrigir calão técnico

Corrija nomes, termos de produtos e calão técnico em qualquer segmento 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 taxa, sem quotas de concorrência e sem restrições por chave. Realize transcrições em lote em vários vídeos ou em toda a sua biblioteca em paralelo.
Veja como funciona

De uma transcrição para cinco versões linguísticas

A transcrição deste vídeo foi convertida para 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 pedidos, desde o link do vídeo até à transcrição

A criação do projeto inicia a transcrição, seguida da tradução, legendas e da versão dobrada no mesmo processo. Utilize o endpoint /generate após corrigir a transcrição.
1

Envie o vídeo

Carregue um ficheiro de vídeo como dados de formulário multipart ou envie um link direto do YouTube, Google Drive, Vimeo ou S3. Obtém um ID de multimé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 multimédia como video_id e um idioma de destino. Deixe o idioma de origem em branco para a deteção automática de idioma. A transcrição começa imediatamente.video_id

POST /v2/projects
3

Ler a transcrição

Consulte os segmentos da transcrição assim que estiverem disponíveis, para poder começar a indexar a gravação enquanto a multimédia traduzida continua a ser processada. Transfira os ficheiros de legendas e multimédia quando o projeto estiver concluído.

GET /v2/projects/{id}/transcription
A transcrição funciona em vídeos gravados e não em transmissões em direto. O tempo de processamento varia consoante a duração do vídeo e o número de locutores: num teste observado, um vídeo de 3:47 foi concluído em 165 segundos.
Criado a pensar em si

Precisa de transcrição em grande volume ou num idioma que não listamos? Fale com a nossa equipa

Transcrição de alto volume, um idioma de origem fora da lista, um formato de transcrição exigido pelo seu índice de pesquisa ou entrega no seu próprio armazenamento: a nossa equipa analisa as suas necessidades e as opções disponíveis.

Idiomas e vozes

Precisa de um idioma de origem 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 transcrição de 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, SaaS de alojamento de vídeo e fluxos de trabalho, plataformas de adoção digital, compras em direto. Adicione transcrições pesquisáveis e legendas aos uploads de vídeo como uma funcionalidade do seu produto.

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

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

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

Retalho internacional e comércio eletrónico, franquias globais, editores de média, universidades corporativas, criadores de conteúdos. Torne todos os vídeos pesquisáveis e acessíveis, e reutilize as transcrições para artigos e descrições.
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 transcrição de vídeo

Um exemplo completo em cada idioma: envie vídeos como links ou ficheiros, aguarde e, em seguida, guarde transcrições em texto simples ou pesquise-as por carimbo de data/hora.
# 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
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 transcrição de vídeo reporta o progresso

Cada vídeo torna-se um projeto com estados documentados, para que possa acompanhar o progresso de cada vídeo numa execução em massa. Só precisa de interagir com três grupos.

Concluído com sucesso, parar por aqui

merging_done
Os ficheiros finais de multimédia e legendas estão prontos. Pode ler e indexar a transcrição mais cedo, assim que os respetivos segmentos estiverem disponíveis.

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

O que obtém para cada vídeo

Cada projeto concluído disponibiliza a transcrição como segmentos JSON, ficheiros de legendas em SRT e VTT no idioma de destino, bem como o vídeo e o áudio traduzidos. Os links de transferência são pré-assinados e válidos por uma hora.
Campo
Formato
O que é
/transcription
JSON
Identificação do locutor, carimbos de data/hora, texto de origem e tradução para cada segmento
translation_srt_path
.srt
Legendas no idioma de destino, sincronizadas com os segmentos
translation_vtt_path
.vtt
As mesmas legendas em formato WebVTT, para leitores web
translated_video
MP4
O vídeo traduzido com dobragem
translated_audio
WAV
Fala traduzida misturada com o áudio de fundo original
original_video
MP4
O seu vídeo original guardado, para referência
Controlo

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 por vezes precisam de intervenção humana. Corrija o texto, o timing ou o locutor de um segmento com um único pedido e, em seguida, volte a gerar a versão traduzida, cobrada apenas pelos segmentos alterados 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 disponibiliza a respetiva transcrição em segmentos acessíveis, pelo que um nome mal ouvido requer apenas um pedido de alteração em vez de uma transcrição manual.
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
Adicione um glossário para garantir que os nomes de produtos e termos técnicos aparecem exatamente iguais em todas as transcrições traduzidas, ou mantenha-os 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

Transcreva ficheiros de vídeo em sete formatos e gravações de áudio em quatro, ou envie um link de uma plataforma importante como YouTube, Google Drive ou Vimeo. Os ficheiros não suportados são rejeitados antes de lhe ser cobrado qualquer minuto.

Vídeo

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

Áudio

4 formatos
.mp3
.wav
.flac
.m4a

Metadados antes de gastar

O ponto final 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, uma vez que os projetos são faturados por minuto de vídeo.
Segurança e conformidade

Os seus vídeos e transcrições com controlos auditados

A Rask Inc possui a certificação SOC 2 Type II, opera em conformidade com o RGPD e publica o estado dos controlos em direto no seu Trust Center para a sua equipa de segurança.

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

Rask API versus um fluxo de trabalho de transcrição montado por peças

A transcrição de um vídeo raramente é o resultado final. As equipas também precisam de identificação de locutores, legendas e outros idiomas. Eis o mesmo trabalho, feito de duas maneiras.
O que precisa
Rask API
Montado a partir de peças
Links de vídeo do YouTube, Drive, Vimeo ou S3
Aceites diretamente
Descarregar e converter primeiro
Identificação para vários locutores
Incluído
Um suplemento de diarização ou etiquetagem manual
O idioma de cada vídeo
Detetado automaticamente
Definido por ficheiro ou detetado separadamente
Transcrições noutros 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 o seu próprio editor de ficheiros
Correção de termos técnicos
Um pedido de alteração por segmento
Editar cópias em todas as ferramentas
Uma versão dobrada do vídeo
Incluído no mesmo projeto
Um fornecedor de TTS mais a sua própria mistura
Limites de taxa
Nenhum
Tudo o que cada fornecedor impõe
Legendas em tempo real para reuniões ao vivo
Utilize uma API de conversão de voz em texto em streaming
Integrado em alguns fornecedores
Um idioma que ainda ninguém suporta
Nós criamo-lo
Indisponível
Perguntas frequentes

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

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

A 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 é que lida com vários oradores?

Que idiomas são suportados?

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

Posso obter a transcrição em texto simples?

Gera resumos por IA, tópicos principais ou análise de sentimentos?

Consegue transcrever reuniões?

Existe um tamanho máximo de ficheiro?

Como é cobrada a transcrição de vídeo?

Existe um plano gratuito?

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.