API de fala para texto para arquivos de áudio e vídeo

Envie áudio ou vídeo pré-gravações e obtenha uma transcrição com identificação de locutores e marcas de tempo para cada segmento, em 75 idiomas de origem com detecção automática de idioma. O mesmo projeto traduz o conteúdo para mais de 135 opções de idiomas e regiões, com legendas e áudio dublado.
Diarização de locutores
75 idiomas de origem
REST + SDK em Python
upload, transcribe, read
OAuth 2.0
# 1. upload an audio or video file by link
curl -X POST https://api.rask.ai/api/library/v1/media/link \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"link": "https://example.com/interview.mp3", "name": "interview"}'

# 2. create the project - speech recognition starts automatically
#    src_lang is optional: leave it out and the language is detected
curl -X POST https://api.rask.ai/v2/projects \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "{\"video_id\": \"$MEDIA_ID\", \"dst_lang\": \"es-mx\"}"
GET /v2/projects/{project_id}/transcription
segments
# Read the transcript: one object per segment
curl -s https://api.rask.ai/v2/projects/$ID/transcription -H "Authorization: Bearer $TOKEN" \
  | jq '.segments[] | {speaker, start, end, text: .src.text}'
Usado por equipes do mundo todo
Recursos

Tudo o que a API de fala para texto retorna

O reconhecimento de fala é a primeira etapa de qualquer projeto no Rask AI. A transcrição é dividida em segmentos com identificação de locutores e marcas de tempo, prontos para editar, traduzir, legendar e dublar no mesmo projeto.

Transcreva arquivos de áudio e vídeo

Envie arquivos de áudio ou vídeo pré-gravados, ou cole um link, e a API converte a fala em texto escrito, segmento por segmento.

Diarização de locutores

Diferentes locutores são detectados automaticamente, e cada segmento recebe uma identificação, como SPEAKER_00. Informe o número de locutores, se souber, ou corrija a identificação mais tarde.

Marcas de tempo para cada segmento

Cada segmento possui um horário de início e fim no formato HH:MM:SS,mmm, pronto para legendas, buscas e navegação dentro da gravação.

75 idiomas de origem

Suporte multilíngue em 75 idiomas de origem. Deixe o idioma de origem vazio para detecção automática ou defina-o com um código de duas letras.

Tradução no mesmo segmento

Cada segmento armazena o texto original e a tradução em mais de 135 opções de idiomas e regiões, mantendo a transcrição e a tradução alinhadas linha por linha.

Legendas em .srt e .vtt

Cada projeto concluído inclui arquivos de legenda no idioma de destino, sincronizados com os segmentos da transcrição. Sem a necessidade de outro fornecedor para legendas.

Termos específicos na tradução

Um glossário mantém nomes de produtos, nomes próprios e vocabulário específico consistentes ao traduzir a transcrição ou ao mantê-la no idioma original.

Edite a transcrição por meio da API

Corrija uma palavra, ajuste uma marca de tempo, altere o locutor ou adicione/exclua um segmento. Os revisores corrigem a transcrição final em vez de começar do zero.

Cresça sem limites

Sem limites de requisições, sem cota de concorrência e sem bloqueios por chave. Processe transcrições em lote em toda a sua biblioteca de áudio e vídeo em paralelo.
Veja como funciona

Veja uma transcrição transformada em cinco versões de idiomas

O mesmo clipe transcrito, traduzido e dublado em inglês, francês, alemão, português e espanhol, 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 etapas do arquivo de áudio até a transcrição

A criação do projeto inicia o reconhecimento de fala, seguido pela tradução e dublagem em uma única execução. Use o endpoint /generate após editar a transcrição.
1

Enviar áudio ou vídeo

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

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

Criar o projeto

Passe o ID da mídia como video_id e um idioma de destino. Adicione o idioma de origem ou o número de falantes, caso os conheça. O reconhecimento começa imediatamente.

POST /v2/projects
3

Ler a transcrição

Leia a transcrição assim que os segmentos estiverem disponíveis, 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
O reconhecimento é executado em arquivos completos e pré-gravados, e não em áudio ao vivo. O tempo de processamento varia de acordo com a duração do arquivo, o número de falantes e o idioma de destino.
Desenvolvido para você

Precisa de um idioma ou formato que não está na lista? Fale com nossa equipe

Um idioma de origem fora da lista, um formato de transcrição que sua plataforma espera, maior capacidade de processamento ou seu próprio método de entrega: nossa equipe analisa o que sua integração precisa e as opções disponíveis.

Idiomas e vozes

Precisa de um idioma fora do catálogo público? Fale com nossa equipe sobre 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 fala para texto para vídeos

Plataformas que incluem vídeos

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

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

Use a transcrição com identificação de falantes como a primeira versão para seus revisores, corrija os segmentos por meio da API e entregue legendas, traduções e versões dubladas a partir do mesmo projeto.

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

Varejo internacional e e-commerce, franquias globais, editoras de mídia, universidades corporativas. Transcreva treinamentos gravados, webinars e entrevistas, e publique legendas e versões em diferentes idiomas para cada mercado.
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 fala para texto

Um exemplo completo em cada idioma: envie um arquivo de áudio ou vídeo, crie o projeto, aguarde e leia os segmentos da transcrição com os falantes e as marcações de tempo.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

async def main():
    client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)

    media = await client.create_media_link(data=schemas.MediaCreateLink(link="https://example.com/interview.mp3"))
    while media.status is enums.MediaStatus.PROCESSING:
        await asyncio.sleep(5)
        media = await client.get_media(media_id=media.id)

    # src_lang omitted: the source language is detected automatically
    job = await client.create_project(data=schemas.ProjectCreate(video_id=media.id, dst_lang="es-mx"))
    while job.status is not enums.ProjectStatus.MERGING_DONE:
        await asyncio.sleep(10)
        job = await client.get_project(project_id=job.id)

    transcript = await client.get_project_transcription(project_id=job.id)
    for seg in transcript.segments:
        print(seg.start, seg.end, seg.speaker, seg.src.text)

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

with open("interview.mp3", "rb") as f:
    media = requests.post(f"{API}/api/library/v1/media", headers=h,
                          params={"kind": "audio"}, files={"data": f}).json()
while media["status"] == "processing":
    time.sleep(5)
    media = requests.get(f"{API}/api/library/v1/media/{media['id']}", headers=h).json()

pid = requests.post(f"{API}/v2/projects", headers=h, json={
    "video_id": media["id"], "dst_lang": "es-mx", "num_speakers": 2}).json()["id"]
while requests.get(f"{API}/v2/projects/{pid}", headers=h).json()["status"] != "merging_done":
    time.sleep(10)

# write the source transcript as an .srt file
segments = requests.get(f"{API}/v2/projects/{pid}/transcription", headers=h).json()["segments"]
with open("interview_en.srt", "w") as out:
    for i, s in enumerate(segments, 1):
        out.write(f"{i}\n{s['start']} --> {s['end']}\n{s['speaker']}: {s['src']['text']}\n\n")
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());

let media = await call('POST', '/api/library/v1/media/link', { link: 'https://example.com/webinar.mp4' });
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, src_lang: 'en', dst_lang: 'de-de' });
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`);
segments.forEach((s) => console.log(`[${s.start}] ${s.speaker}: ${s.src.text}`));
console.log(p.translation_vtt_path);   // German subtitles for your player
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 audio file
MEDIA_ID=$(curl -s -X POST "https://api.rask.ai/api/library/v1/media?kind=audio" \
  -H "Authorization: Bearer $TOKEN" -F "data=@podcast_episode.mp3" | 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\": \"$MEDIA_ID\", \"dst_lang\": \"fr-fr\"}" | jq -r .id)

# 4. when status is merging_done, read the transcript with speaker labels
curl -s https://api.rask.ai/v2/projects/$ID/transcription -H "Authorization: Bearer $TOKEN" \
  | jq -r '.segments[] | "\(.start) \(.speaker): \(.src.text)"'
local file upload
audio file, multipart
<?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://example.com/interview.mp3']]));
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' => 'es-mx']]));
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]));
foreach ($t['segments'] as $s) {
    echo $s['start'], ' ', $s['speaker'], ': ', $s['src']['text'], PHP_EOL;
}
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 relata o progresso

A transcrição é a primeira etapa de um projeto com status documentados, para que você possa acompanhar o progresso real em gravações longas. Você só precisa agir em três grupos.

Sucesso, pare aqui

merging_done
Os arquivos finais de mídia e legendas estão prontos. A transcrição pode ser lida antes, assim que seus segmentos 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 e forbidden_link são claros o suficiente para você mostrar diretamente aos seus usuários.
Two speakers
GET /v2/projects/{id}/transcription
{"segments": [
  {"speaker": "SPEAKER_00", "start": "00:00:00,320", "end": "00:00:07,316", "status": "done",
   "src": {"text": "Thanks for joining us. Let's start with the new release.", "lang": "en"},
   "dst": {"text": "Gracias por acompañarnos. Empecemos con la nueva versión.", "lang": "es-mx"}},
  {"speaker": "SPEAKER_01", "start": "00:00:07,640", "end": "00:00:11,900", "status": "done",
   "src": {"text": "Sure. The biggest change is the reporting view.", "lang": "en"},
   "dst": {"text": "Claro. El cambio más grande es la vista de reportes.", "lang": "es-mx"}}
]}

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

Segmentos da transcrição, legendas e mídia traduzida

Leia a transcrição como segmentos JSON no endpoint de transcrição. O projeto concluído também disponibiliza arquivos de legenda em SRT e VTT no idioma de destino, o vídeo traduzido e, nos planos elegíveis, a fala traduzida como uma faixa WAV separada.
Campo
Formato
O que é
segments
JSON
Transcrição: texto de origem, tradução, identificação do falante, horário de início e término de cada segmento
voiceover
WAV
Apenas a fala traduzida, sem som de fundo, nos planos elegíveis
translated_audio
WAV
Fala traduzida misturada com o áudio de fundo original
translation_srt_path
.srt
Legendas no idioma de destino, sincronizadas com os segmentos
translation_vtt_path
.vtt
Mesmas legendas que o WebVTT, para reprodutores web
translated_video
MP4
O vídeo traduzido com dublagem
Controle

Corrija a transcrição segmento por segmento

O reconhecimento de fala gera a primeira versão. Corrija uma palavra, uma marcação de tempo ou um rótulo de falante com uma solicitação por segmento e, em seguida, gere novamente a versão traduzida. A nova geração é cobrada com base nos segmentos alterados, com um mínimo de um minuto por execução.

Edição por trecho

Edição por trecho
Cada projeto exibe sua transcrição em segmentos acessíveis, portanto, uma correção na transcrição final requer apenas uma solicitação de atualizaçã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 a transcrição é traduzida, um glossário mantém nomes de marcas, nomes próprios e termos específicos 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

Transcreva arquivos de áudio, como podcasts, entrevistas e chamadas gravadas, ou vídeos em qualquer formato compatível, ou envie um URL. Se você enviar um arquivo incompatível, a API o rejeitará 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 áudio ou vídeo.
Segurança e conformidade

Segurança de nível empresarial para dados de áudio e fala

A Brask Inc possui certificação SOC 2 Tipo II, opera em conformidade com o GDPR e publica o status de controle em tempo real em seu Trust Center, garantindo que gravações e transcrições sejam tratadas sob controles auditados.

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. uma API de conversão de fala em texto combinada com a sua própria infraestrutura

Uma API de conversão de fala em texto transforma áudio em texto. Quando esse texto precisa se tornar legendas, traduções e versões dubladas, o restante exige trabalho de integração. Veja o mesmo resultado obtido de duas maneiras.
O que você precisa
Rask API
Montado por partes
Uma transcrição com identificação de falantes
Incluído
Incluído na maioria das APIs de conversão de fala em texto
Marcações de tempo
Por segmento
Por palavra em muitas APIs de conversão de fala em texto
Tradução da transcrição
Mesmo projeto, mais de 135 opções de idiomas e regiões
Uma API de tradução separada
Legendas em .srt e .vtt
Incluído, no idioma de destino
Criado a partir dos seus próprios dados de tempo
Áudio e vídeo dublados
Incluído
Um fornecedor de TTS com a sua própria mixagem
Corrigindo um segmento
Uma solicitação de correção e depois a recriação
Edite e resincronize suas próprias cópias
Limites de taxa
Nenhum
O que o seu provedor determinar
Transcrição em tempo real de áudio ao vivo
Use uma API de conversão de fala em texto por streaming
Feito para isso
Apenas a transcrição, pelo menor preço
Uma API de fala para texto dedicada custa menos
Cobrado por hora de áudio
Perguntas frequentes

API de fala para texto: dúvidas frequentes

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

O Rask tem uma API de fala para texto?

Quais idiomas podem ser transcritos?

Posso transcrever arquivos de áudio sem vídeo?

O recurso é compatível com a identificação de diferentes falantes?

A API retorna carimbos de data/hora por palavra?

O sistema oferece suporte a transcrição em tempo real?

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

Posso adicionar um vocabulário personalizado ou termos específicos da área?

Posso obter a transcrição em um arquivo SRT?

Posso enviar a minha própria transcrição?

Como a transcrição é cobrada?

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.