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

Envie áudio ou vídeo pré-gravação e obtenha uma transcrição com identificação de locutores e carimbos de data/hora para cada segmento, em 75 idiomas de origem com detecção automática de idioma. O mesmo projeto o traduz 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 para 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 globais
Recursos

Tudo o que a API de fala para texto retorna

O reconhecimento de fala é a primeira etapa de cada projeto do Rask. A transcrição retorna em segmentos com identificação de locutores e carimbos de data/hora, prontos para editar, traduzir, legendar e dublar no mesmo projeto.

Transcreva arquivos de áudio e vídeo

Envie áudio ou vídeo pré-gravado, ou poste 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 carrega uma identificação de locutor, como SPEAKER_00. Informe o número de locutores se você souber, ou corrija a identificação depois.

Carimbos de data/hora para cada segmento

Cada segmento possui um horário de início e término no formato HH:MM:SS,mmm, pronto para legendas, busca e navegação dentro de uma gravação.

75 idiomas de origem

Suporte multilíngue em 75 idiomas de origem. Deixe o idioma de origem vazio e ele será detectado automaticamente, ou defina-o com um código de duas letras.

Tradução no mesmo segmento

Cada segmento contém o texto original e sua tradução em qualquer uma das mais de 135 opções de idiomas e regiões, para que a transcrição e a tradução fiquem alinhadas linha por linha.

Legendas em .srt e .vtt

Cada projeto concluído inclui arquivos de legendas no idioma de destino, sincronizados com os segmentos da transcrição. Sem necessidade de um segundo 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 quando a transcrição é traduzida ou deixada no idioma original de propósito.

Edite a transcrição por meio da API

Corrija uma palavra, ajuste um carimbo de data/hora, reatribua um locutor, adicione ou exclua um segmento. Os revisores corrigem a transcrição final em vez de começar tudo de novo.

Cresça sem limites

Sem limites de taxa, sem cota de concorrência e sem limitação por chave. Execute transcrições em lote em toda a sua biblioteca de áudio e vídeo em paralelo.
Veja na prática

Veja uma transcrição se transformar 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 solicitações do arquivo de áudio até a transcrição

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

Envie áudio ou vídeo

Envie um arquivo de áudio ou vídeo como dados de formulário multipart, ou envie 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 de mídia como video_id e um idioma de destino. Adicione o idioma de origem ou o número de falantes, se você souber. O reconhecimento começa imediatamente.

POST /v2/projects
3

Leia 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 legendas e mídia quando o projeto estiver 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.
Criado 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 esperado pela sua plataforma, maior capacidade 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 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 fala para texto para vídeos

Plataformas com vídeo integrado

Plataformas de LMS e educação de clientes, plataformas de criadores e vídeos, ferramentas de webinars e eventos virtuais, SaaS de hospedagem e fluxo de trabalho de vídeos, 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 o primeiro rascunho para seus revisores, corrija segmentos pela API e entregue legendas, traduções e versões dubladas a partir do mesmo projeto.

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

Varejo e e-commerce internacional, 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 o Rask, em seus próprios números.
seta
seta
Código

Exemplos de código da API de conversão de fala em 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 marcas 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 por 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
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 e forbidden_link são claros o suficiente para serem exibidos diretamente para o seu próprio usuário.
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 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

Segmentos de 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, tempo de início e fim 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
As mesmas legendas em formato WebVTT, para players web
translated_video
MP4
O vídeo traduzido com dublagem
Controle

Corrija o segmento da transcrição por segmento

O reconhecimento de fala gera a primeira versão. Corrija uma palavra, um registro de data e hora ou um rótulo de falante com uma solicitação por segmento e, em seguida, regenere a versão traduzida. A regeneração é 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 disponibiliza sua transcrição como segmentos acessíveis, portanto, uma correção na transcrição final requer apenas uma solicitação de patch.
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
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, conforme desejado.

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 á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 antecipadamente, 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 Rask Inc possui a certificação SOC 2 Tipo II, opera em conformidade com a 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 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

Rask API versus uma API de fala para texto combinada com sua própria infraestrutura

Uma API de fala para texto converte áudio em texto. Quando esse texto precisa se transformar em legendas, traduções e versões dubladas, o restante exige desenvolvimento de infraestrutura. Veja o mesmo resultado obtido de duas maneiras.
O que você precisa
Rask API
Montado a partir de partes
Uma transcrição com identificação de falantes
Incluído
Incluído na maioria das APIs de fala para texto
Registros de data e hora
Por segmento
Por palavra em muitas APIs de fala para 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 mais a sua própria mixagem
Correção de um segmento
Uma solicitação de atualização e depois regenerar
Edite e sincronize novamente 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 fala para texto em tempo real
Feito para isso
Apenas uma transcrição, pelo menor preço
Uma API dedicada de fala para texto custa menos
Preço por hora de áudio
Perguntas frequentes

API de fala para texto: perguntas frequentes

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

O Rask possui uma API de fala para texto?

Quais idiomas o sistema consegue transcrever?

Posso transcrever arquivos de áudio sem vídeo?

O sistema oferece suporte à identificação de falantes (diarização)?

A API retorna carimbos de data/hora por palavra?

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

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

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

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

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

Como é cobrada a transcrição?

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.