API de transcripción de video para cada video en tu biblioteca

Envía archivos de video o enlaces de YouTube, Google Drive y Vimeo y obtén transcripciones con capacidad de búsqueda, etiquetas de oradores y marcas de tiempo, en 75 idiomas y con detección automática de idioma. Transcribe un video o toda tu biblioteca, y luego traduce las transcripciones y subtítulos para audiencias globales.
Archivos y enlaces de video
Transcripción por lotes
REST + SDK de 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 equipos globales
Funciones

Qué hace la API de transcripción de video

Envía archivos o enlaces de video y obtén una transcripción con oradores y marcas de tiempo para cada video de tu biblioteca. El mismo proyecto convierte cada transcripción en traducciones, subtítulos y una versión doblada.

Transcribe videos desde un archivo o un enlace

Sube archivos de video o publica un enlace directo de YouTube, Google Drive, Vimeo, S3 o de otro tipo. La API obtiene el video directamente, sin necesidad de que lo descargues.

Múltiples oradores, etiquetados

Las entrevistas, paneles y seminarios web con diferentes participantes devuelven una etiqueta de orador en cada segmento, para que siempre sepas quién dijo qué.

Detección automática de idioma

Transcribe videos en 75 idiomas de origen, incluido el inglés. Deja el idioma de origen vacío y el idioma de cada video se detectará de forma automática.

Transcripciones con capacidad de búsqueda

Cada segmento cuenta con un tiempo de inicio y fin, lo que permite a los usuarios buscar el contenido de texto de un video e ir directamente al momento exacto en que se dice una frase.

Transcripciones en varios idiomas

Cada segmento también incluye su traducción en cualquiera de las más de 135 opciones de idiomas y regiones, por lo que una sola transcripción sirve para audiencias globales en otros idiomas.

Subtítulos en .srt y .vtt

Cada proyecto también devuelve archivos de subtítulos en el idioma de destino, sincronizados con los segmentos, para espectadores con problemas de audición o que ven el video sin sonido.

Texto plano o datos estructurados

Lee la transcripción como segmentos JSON o une el texto en un formato plano para índices de búsqueda, artículos, descripciones y notas.

Corrige la jerga técnica

Corrige nombres, términos de productos y jerga técnica en cualquier segmento a través de la API. Un glosario mantiene la consistencia de los mismos términos al traducir la transcripción.

Escala sin límites

Sin límites de velocidad, sin cuota de concurrencia y sin restricciones por clave. Realiza transcripciones masivas en varios videos o en toda tu biblioteca en paralelo.
Míralo en acción

De una transcripción a cinco versiones en diferentes idiomas

La transcripción de este clip se convirtió en versiones en inglés, francés, alemán, portugués y español, cada una con subtítulos y el audio de fondo original.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Flujo de trabajo

Tres pasos desde el enlace del video hasta la transcripción

Al crear el proyecto se inicia la transcripción, seguida de la traducción, los subtítulos y la versión con doblaje en el mismo proceso. Usa el endpoint /generate después de corregir la transcripción.
1

Envía el video

Sube un archivo de video como datos de formulario multipartes, o publica un enlace directo de YouTube, Google Drive, Vimeo, S3 o similar. Obtendrás un ID de contenido multimedia y los metadatos del video antes de gastar nada.

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

Crea el proyecto

Pasa el ID de contenido multimedia como video_id y un idioma de destino. Deja el idioma de origen vacío para la detección automática de idiomas. La transcripción comienza de inmediato.video_id

POST /v2/projects
3

Lee la transcripción

Lee los fragmentos de la transcripción tan pronto estén disponibles, para que puedas comenzar a indexar la grabación mientras el contenido traducido sigue procesándose. Descarga los archivos de subtítulos y multimedia cuando el proyecto esté completo.

GET /v2/projects/{id}/transcription
La transcripción funciona en videos grabados, no en transmisiones en vivo. El tiempo de procesamiento varía según la duración del video y la cantidad de hablantes: en una prueba observada, un video de 3:47 se completó en 165 segundos.
Diseñado a tu medida

¿Necesitas transcripción en gran volumen o en un idioma que no tenemos en la lista? Habla con nuestro equipo

Transcripción de alto volumen, un idioma de origen fuera de la lista, un formato de transcripción que espera tu índice de búsqueda o entrega en tu propio almacenamiento: nuestro equipo revisa lo que necesitas y las opciones disponibles.

Idiomas y voces

¿Necesitas un idioma de origen fuera del catálogo público? Habla con nuestro equipo sobre tus requerimientos y las opciones disponibles.

Entrega e integración

Webhooks, envío a tu propia cola, entrega directa a tu S3 y endpoints personalizados. Cuéntanos cómo quieres que funcione tu sistema.

Volumen y capacidad

Los tamaños de los lotes, los idiomas de destino por acción y la prioridad de procesamiento son términos del contrato, no límites fijos del producto.

Seguridad y alojamiento

La residencia de datos, SSO y SAML, las reglas de retención y el soporte para revisión de seguridad se gestionan como parte de la incorporación empresarial.
Casos de uso

Quién usa una API de transcripción de video

Plataformas con video integrado

Plataformas de LMS y capacitación de clientes, plataformas de creadores y de video, herramientas de seminarios web y eventos virtuales, SaaS de alojamiento y flujo de trabajo de video, plataformas de adopción digital, live shopping. Agrega transcripciones y subtítulos con función de búsqueda a tus videos subidos como una característica de tu producto.

Agencias de localización y producción

Transcribe videos de clientes de forma masiva, proporciona a los revisores la transcripción con etiquetas de hablantes y entrega subtítulos y traducciones desde los mismos proyectos.

Producción de video interna y continua

Retail y comercio electrónico internacional, franquicias globales, editores de medios, universidades corporativas, creadores de contenido. Haz que cada video sea searchable y accesible, y reutiliza las transcripciones para artículos y descripciones.
Casos de éxito de clientes

Equipos reales, resultados cuantificables

Cómo las empresas localizan videos con Rask, según sus propios números.
flecha
flecha
Código

Ejemplos de código de la API de transcripción de video

Un ejemplo completo en cada idioma: envía videos como enlaces o archivos, espera y luego guarda transcripciones en texto plano o búscalas por marca de tiempo.
# 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 es el SDK oficial. Las pestañas de Node, PHP y cURL son ejemplos simples de HTTP que usan los mismos puntos de conexión.
Progreso

Cómo un proyecto de transcripción de video reporta su progreso

Cada video se convierte en un proyecto con estados documentados, para que puedas mostrar el progreso de cada video en una ejecución masiva. Solo necesitas actuar en tres grupos.

Éxito, detente aquí

merging_done
Los archivos multimedia y de subtítulos finales están listos. Puedes leer e indexar la transcripción antes, tan pronto como sus fragmentos estén disponibles.

En progreso, continúa consultando

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Más la coincidencia _done estados. Estos se adaptan perfectamente a una interfaz de progreso por etapas.

Error, detener y 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.

O puedes omitir el sondeo por completo

Indícanos un punto de enlace de webhook y cada cambio de estado llegará como una petición POST, para que tu fila de tareas reaccione a cada cambio en el momento en que ocurre. La entrega por webhook forma parte de la incorporación empresarial.
Leer la documentación
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Salida

Lo que obtienes por cada video

Cada proyecto terminado expone la transcripción como segmentos JSON, archivos de subtítulos en SRT y VTT en el idioma de destino, así como el video y el audio traducidos. Los enlaces de descarga están firmados previamente y son válidos por una hora.
Campo
Formato
Qué es
/transcription
JSON
Etiqueta de hablante, marcas de tiempo, texto de origen y traducción para cada segmento
translation_srt_path
.srt
Subtítulos en el idioma de destino, sincronizados con los segmentos
translation_vtt_path
.vtt
Los mismos subtítulos en WebVTT, para reproductores web
translated_video
MP4
El video traducido con doblaje
translated_audio
WAV
Voz traducida mezclada con el audio de fondo original
original_video
MP4
Tu video original guardado como referencia
Control

Corrige nombres y términos técnicos en la transcripción

La transcripción automática se encarga de la mayor parte de un video. Los nombres, acentos y jergas técnicas a veces necesitan de una persona. Corrige el texto, la sincronización o el hablante de un segmento con una sola solicitud y luego regenera la versión traducida, cobrada por los segmentos modificados con un mínimo de un minuto por ejecución.

Edición a nivel de segmento

Edición a nivel de segmento
Cada proyecto expone su transcripción como segmentos direccionables, por lo que un nombre malentendido se soluciona con una solicitud de parche en lugar de una transcripción manual.
Obtén la transcripción y sus segmentos
Actualiza el texto original y nosotros nos encargaremos de traducirlo de nuevo
Modifica el texto traducido directamente para conservar tus propias palabras
Ajusta las marcas de tiempo, agrega segmentos o elimina segmentos
Reasigna la voz asignada a cualquier hablante

Glosarios para terminología

Glosarios para terminología
Agrega un glosario y haz que los nombres de productos y términos técnicos se lean igual en cada transcripción traducida, o mantenlos en el idioma original a propósito.

Un glosario cubre un par de idiomas y se aplica a todas las variantes regionales de ese idioma de destino, por lo que un solo glosario en español funciona es-mx y es-es por igual. El registro del proyecto glossary_version, para que las modificaciones posteriores nunca alteren en silencio el trabajo ya terminado.
Entrada

Formatos de archivo compatibles

Transcribe archivos de video en siete formatos y grabaciones de audio en cuatro, o envía un enlace desde una plataforma principal como YouTube, Google Drive o Vimeo. Los archivos no compatibles se rechazan antes de descontar cualquier minuto.

Vídeo

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

Audio

4 formatos
.mp3
.wav
.flac
.m4a

Metadatos antes de gastar

El punto final multimedia devuelve la duración, el tamaño del archivo, el códec de vídeo, la frecuencia de fotogramas, la resolución, el códec de audio, la frecuencia de muestreo y la configuración de canales. Comprueba la validez del archivo y calcula el coste por adelantado, ya que los proyectos se facturan por minuto de vídeo.
Seguridad y cumplimiento normativo

Tus videos y transcripciones bajo controles auditados

Brask Inc cuenta con la certificación SOC 2 Tipo II, opera bajo el RGPD y publica el estado en vivo de sus controles en su Centro de Confianza para tu equipo de seguridad.

Certificaciones

SOC 2 Type II
GDPR
Miembro de CAI y C2PA

Cifrado

TLS 1.2 en tránsito
AES-256 en reposo
Llaves administradas SSE-S3
Rotación de llaves al menos cada 12 meses

Tu contenido

Entorno de IA cerrado
Nunca se usa para entrenar modelos generales
Exportación completa, sin ataduras

Acceda a

SSO y SAML
Control de acceso basado en roles
Credenciales de cliente OAuth 2.0

Empresas

Opciones de residencia de datos
SLA personalizados
Gerente de cuenta dedicado

Derechos de voz

Voces sintéticas con derechos de uso
Clonación de voz basada en consentimiento
Controles de seguridad de IA, humano en el circuito
Comparación

Rask API frente a un flujo de trabajo de transcripción armado por piezas

La transcripción de un video rara vez es el resultado final. Los equipos también necesitan etiquetas de hablantes, subtítulos y otros idiomas. Aquí tienes el mismo trabajo hecho de dos formas.
Lo que necesitas
Rask API
Armado por partes
Enlaces de video de YouTube, Drive, Vimeo o S3
Aceptados directamente
Descargar y convertir primero
Etiquetas para múltiples hablantes
Incluido
Un complemento de diarización o etiquetado manual
El idioma de cada video
Detectado automáticamente
Configurado por archivo o detectado por separado
Transcripciones en otros idiomas
Más de 135 idiomas y variantes regionales
Una API de traducción por idioma
Subtítulos en .srt y .vtt
Incluido
Una herramienta de subtítulos o tu propio generador de archivos
Corrección de jerga técnica
Una solicitud de parche por segmento
Editar copias en cada herramienta
Una versión doblada del video
Incluido en el mismo proyecto
Un proveedor de TTS más tu propia mezcla
Límites de velocidad
Ninguno
Lo que cada proveedor establezca
Subtítulos en tiempo real para reuniones en vivo
Usa una API de streaming de voz a texto
Integrado en algunos proveedores
Un idioma que nadie soporta todavía
Nosotros lo creamos
No disponible
PREGUNTAS FRECUENTES

API de transcripción de video: preguntas frecuentes

¿No encuentras lo que buscas? Ponte en contacto con el departamento de ventas.

¿Rask cuenta con una API de transcripción de video?

¿Puedo transcribir un video de YouTube o un enlace de video?

¿Puedo transcribir varios videos al mismo tiempo?

¿Cómo maneja a varios oradores?

¿Qué idiomas están disponibles?

¿Qué tan precisa es la transcripción?

¿Puedo obtener la transcripción en texto plano?

¿Genera resúmenes con IA, temas clave o análisis de sentimientos?

¿Puede transcribir reuniones?

¿Existe un tamaño máximo de archivo?

¿Cómo se cobra la transcripción de video?

¿Hay un plan gratuito?

¿Cómo obtengo acceso a la API y una clave de API?

Empieza a hacer doblaje en una tarde

Haz tu primera solicitud hoy y contáctanos cuando necesites términos para grandes volúmenes o un idioma que nadie más tenga.