API de transcripción para todos los videos de tu biblioteca

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

Transcribe videos desde un archivo o un enlace

Sube archivos de video o publica un enlace directo, de YouTube, Google Drive, Vimeo o S3. La API obtiene el video por ti, sin necesidad de descargarlo por tu cuenta.

Múltiples oradores identificados

Las entrevistas, paneles y seminarios web con diferentes participantes regresan con 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 sistema detectará el idioma de cada video automáticamente.

Transcripciones con función de búsqueda

Cada segmento tiene una hora de inicio y una hora de finalización, por lo que los usuarios pueden buscar en el contenido textual de un video y saltar directamente al momento en que se pronuncia una frase.

Transcripciones en varios idiomas

Cada segmento incluye además su traducción, en cualquiera de las más de 135 opciones de idiomas y variantes regionales, por lo que una sola transcripción sirve para llegar a audiencias globales en otros idiomas.

Subtítulos en .srt y .vtt

Además, cada proyecto incluye archivos de subtítulos en el idioma de destino, sincronizados con los segmentos, para los espectadores con discapacidad auditiva o que vean el contenido sin sonido.

Texto sin formato o datos estructurados

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

Términos técnicos correctos

Correge nombres, términos de productos y jerga técnica en cualquier sector a través de la API. Un glosario garantiza la coherencia de los términos cuando se traduce la transcripción.

Escala sin límites

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

De una transcripción a cinco versiones lingüísticas

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 multipart o publica un enlace de YouTube, Google Drive, Vimeo, S3 o un enlace directo. Obtendrás un ID de medios y los metadatos del video antes de gastar algo.

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

Crear el proyecto

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

POST /v2/projects
3

Lee la transcripción

Lee los segmentos de la transcripción tan pronto estén disponibles para empezar a indexar la grabación mientras el contenido multimedia traducido se sigue procesando. Descarga los archivos de subtítulos y de video 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 personas hablando: en una prueba observada, un video de 3:47 se completó en 165 segundos.
Diseñado a tu medida

¿Necesitas transcripción a gran escala 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 tu índice de búsqueda requiere o entrega a tu propio almacenamiento: nuestro equipo revisa tus necesidades y las opciones disponibles.

Idiomas y voces

¿Necesitas un idioma de origen que no esté en el 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, endpoints personalizados. Cuéntanos cómo quieres alimentar tu flujo.

Volumen y capacidad

El tamaño de los lotes, los idiomas de destino por acción y la prioridad de procesamiento son términos contractuales, 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 para empresas.
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 para seminarios web y eventos virtuales, SaaS de alojamiento de video y flujos de trabajo, plataformas de adopción digital y compras en vivo. Agrega transcripciones con función de búsqueda y subtítulos 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 los hablantes y entrega subtítulos y traducciones desde los mismos proyectos.

Producción interna de video continua

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

Equipos reales, resultados medibles

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

Ejemplos de código para 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 de HTTP plano para los mismos endpoints.
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 segmentos estén disponibles.

En progreso, continúa consultando

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Además del equivalente _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

Apúntanos a un endpoint de webhook y cada cambio de estado llegará como una petición POST, para que tu cola de tareas reaccione a cada cambio en el momento en que ocurre. La entrega por webhook forma parte de la incorporación para empresas (enterprise).
Leer la documentación
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Resultado

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 formato 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 del video. A veces, los nombres, acentos y términos técnicos requieren la revisión de una persona. Corrige el texto, el tiempo o el hablante de un segmento con una sola solicitud y regenera la versión traducida. Se cobra según los segmentos modificados, con un mínimo de un minuto por ejecución.

Edición por segmentos

Edición por segmentos
Cada proyecto muestra su transcripción como segmentos independientes, por lo que corregir un nombre malinterpretado requiere una simple solicitud en lugar de una transcripción manual.
Obtén la transcripción y sus segmentos
Actualiza el texto original y nosotros volvemos a hacer la traducción
Modifica el texto traducido directamente para conservar tus propias palabras
Ajusta las marcas de tiempo, agrega segmentos o elimínalos
Cambia la voz asignada a cualquier hablante

Glosarios para tu terminología

Glosarios para tu terminología
Agrega un glosario para que los nombres de productos y los 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 tanto, un solo glosario en español funciona para es-mx y es-es por igual. El proyecto registra glossary_version, de modo que las ediciones posteriores nunca modifiquen el trabajo finalizado en segundo plano.
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.

Video

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

Audio

4 formatos
.mp3
.wav
.flac
.m4a

Metadatos antes de gastar

El endpoint de medios devuelve la duración, el tamaño del archivo, el códec de video, la velocidad de cuadros, la resolución, el códec de audio, la frecuencia de muestreo y la distribución de canales. Valida un archivo y calcula el costo por adelantado, ya que los proyectos se cobran por minuto de video.
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 la tranquilidad de 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 AI cerrado
Nunca se usa para entrenar modelos generales
Exportación completa, sin ataduras

Acceso

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

Empresa

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 AI, supervisión humana
Comparación

Rask API en comparación con 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. Así es como se realiza el mismo trabajo de dos formas diferentes.
Lo que necesitas
Rask API
Armado por partes
Enlaces de video de YouTube, Drive, Vimeo o S3
Aceptados directamente
Descargar y convertir primero
Etiquetas de hablantes para múltiples voces
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 editor de archivos
Corrección de términos técnicos
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 conversión de texto a voz más tu propia mezcla de audio
Límites de velocidad
Ninguno
Lo que cada proveedor establezca
Subtítulos en tiempo real para reuniones en vivo
Usa una API de conversión de voz a texto por streaming
Integrado en algunos proveedores
Un idioma que nadie admite 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 son compatibles?

¿Qué tan precisa es la transcripción?

¿Puedo obtener la transcripción como texto sin formato?

¿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 una versión gratuita?

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

Empieza a hacer doblaje en una sola tarde

Haz tu primera solicitud hoy y habla con nosotros cuando necesites tarifas por volumen o un idioma que nadie más tenga.