API de conversión de voz a texto para archivos de audio y video

Sube audio o video pregrabado y obtén una transcripción con etiquetas de hablante y marcas de tiempo para cada segmento, en 75 idiomas de origen con detección automática de idioma. El mismo proyecto lo traduce a más de 135 opciones de idiomas y regiones, con subtítulos y audio doblado.
Separación de hablantes
75 idiomas de origen
REST + SDK de 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}'
Utilizado por equipos globales
Funciones

Todo lo que la API de voz a texto ofrece

El reconocimiento de voz es la primera etapa de cada proyecto en Rask AI. La transcripción se divide en segmentos con etiquetas de hablante y marcas de tiempo, listos para editar, traducir, subtitular y doblar en el mismo proyecto.

Transcribe archivos de audio y video

Sube audio o video pregrabado, o comparte un enlace, y la API convierte la voz en texto escrito, segmento por segmento.

Separación de hablantes

Los diferentes hablantes se detectan automáticamente y cada segmento incluye una etiqueta de hablante como SPEAKER_00. Indica el número de hablantes si lo sabes o corrige la etiqueta más adelante.

Marcas de tiempo para cada segmento

Cada segmento cuenta con un tiempo de inicio y de fin en formato HH:MM:SS,mmm, ideal para subtítulos, búsquedas y navegación dentro de una grabación.

75 idiomas de origen

Soporte multilingüe en 75 idiomas de origen. Deja el idioma de origen vacío para que se detecte automáticamente o configúralo con un código de dos letras.

Traducción en el mismo segmento

Cada segmento contiene el texto original y su traducción a cualquiera de los más de 135 idiomas y opciones regionales, para que la transcripción y la traducción se mantengan alineadas línea por línea.

Subtítulos en formato .srt y .vtt

Cada proyecto finalizado incluye archivos de subtítulos en el idioma de destino, sincronizados con los segmentos de la transcripción. Sin necesidad de buscar a otro proveedor para los subtítulos.

Términos especializados en la traducción

Un glosario mantiene la consistencia de los nombres de productos, nombres propios y vocabulario especializado al traducir la transcripción, o bien en el idioma original a propósito.

Edita la transcripción a través de la API

Corrige una palabra, ajusta una marca de tiempo, reasigna a un hablante, o agrega y elimina un segmento. Los revisores corrigen la transcripción final en lugar de empezar de nuevo.

Escala sin límites

Sin límites de velocidad, sin cuotas de concurrencia y sin restricciones por clave. Realiza transcripciones por lotes en toda tu biblioteca de audio y video en paralelo.
Míralo en acción

Mira cómo una transcripción se convierte en versiones de cinco idiomas

El mismo clip transcrito, traducido y sonorizado en inglés, francés, alemán, portugués y español, con el audio de fondo original intacto.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Flujo de trabajo

Tres solicitudes desde el archivo de audio hasta la transcripción

Crear el proyecto inicia el reconocimiento de voz, seguido de la traducción y la voz en off en una sola ejecución. Usa el endpoint /generate después de editar la transcripción.
1

Sube un archivo de audio o video

Envía un archivo de audio o video como datos de formulario multiparte, o publica un enlace de YouTube, Google Drive, S3, Vimeo o cualquier URL directa. Obtendrás un ID de contenido multimedia y los metadatos del archivo antes de gastar algo.

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

Crea el proyecto

Pasa el ID de contenido multimedia como video_id y un idioma de destino. Agrega el idioma de origen o el número de hablantes si los conoces. El reconocimiento comienza de inmediato.

POST /v2/projects
3

Lee la transcripción

Lee la transcripción tan pronto como sus segmentos estén disponibles, mientras el contenido multimedia traducido sigue procesándose. Descarga los archivos de subtítulos y multimedia cuando el proyecto esté completo.

GET /v2/projects/{id}/transcription
El reconocimiento se ejecuta en archivos completos y pregrabados en lugar de audio en vivo. El tiempo de procesamiento varía según la duración del archivo, el número de hablantes y el idioma de destino.
Diseñado a tu medida

¿Necesitas un idioma o formato que no aparece en la lista? Habla con nuestro equipo

Un idioma de origen fuera de la lista, un formato de transcripción que tu plataforma espera, mayor rendimiento o tu propio método de entrega: nuestro equipo analiza lo que tu integración necesita y las opciones disponibles.

Idiomas y voces

¿Necesitas un idioma 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 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 conversión de voz a texto para video

Plataformas con video integrado

Plataformas de LMS y educación para clientes, plataformas de creadores y de video, herramientas de seminarios web y eventos virtuales, SaaS de alojamiento de video y flujos de trabajo, plataformas de adopción digital, compras en vivo. Agrega transcripciones, subtítulos y versiones traducidas de video grabado como una función de tu producto.

Agencias de localización y producción

Usa la transcripción con etiquetas de hablante como el primer borrador para tus revisores, corrige segmentos a través de la API y entrega subtítulos, traducciones y versiones dobladas desde el mismo proyecto.

Producción de video interna y continua

Comercio minorista y comercio electrónico internacional, franquicias globales, medios de comunicación, universidades corporativas. Transcribe capacitaciones grabadas, seminarios web y entrevistas, y luego publica subtítulos y versiones en diferentes idiomas para cada mercado.
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 voz a texto

Un ejemplo completo en cada idioma: sube un archivo de audio o video, crea el proyecto, espera y luego lee los segmentos de la transcripción con los hablantes y las marcas de tiempo.
# 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 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 informa el progreso un proyecto de transcripción

La transcripción es la primera etapa de un proyecto con estados documentados, para que puedas mostrar el progreso real en grabaciones largas. Solo necesitas actuar en tres grupos.

Éxito, detente aquí

merging_done
Los archivos finales de video y subtítulos están listos. La transcripción se puede leer 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
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 y forbidden_link son lo suficientemente específicos como para mostrarlos directamente a tus propios usuarios.
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"}}
]}

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

Segmentos de transcripción, subtítulos y video traducido

Lee la transcripción como segmentos JSON desde el endpoint de transcripción. El proyecto terminado también incluye archivos de subtítulos en formato SRT y VTT en el idioma de destino, el video traducido y, en los planes elegibles, la voz traducida como una pista WAV separada.
Campo
Formato
Qué es
segments
JSON
Transcripción: texto de origen, traducción, etiqueta de hablante, hora de inicio y de fin para cada segmento
voiceover
WAV
Solo voz traducida, sin ruido de fondo, en los planes elegibles
translated_audio
WAV
Voz traducida mezclada con el audio de fondo original
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
Control

Corrige la transcripción segmento por segmento

El reconocimiento de voz te ofrece un primer borrador. Corrige una palabra, una marca de tiempo o una etiqueta de hablante con una sola solicitud por segmento, y luego vuelve a generar la versión traducida. La regeneración se cobra según 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 presenta su transcripción en segmentos accesibles, por lo que cualquier corrección en la transcripción final requiere una sola solicitud de actualización.
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
Cuando se traduce la transcripción, un glosario permite mantener los nombres de marca, nombres propios y términos especializados iguales en todas las versiones, o dejarlos en su idioma original de manera intencional.

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 audio como podcasts, entrevistas y llamadas grabadas, o videos en cualquier formato compatible, o bien envía una URL. Si subes un archivo no compatible, la API lo rechaza 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 de acceso multimedia devuelve la duración, el tamaño del archivo, el códec de video, la frecuencia 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 de antemano, ya que los proyectos se cobran por minuto de audio o video.
Seguridad y cumplimiento normativo

Seguridad de nivel empresarial para datos de audio y voz

Brask Inc cuenta con la certificación SOC 2 Tipo II, opera bajo el marco del RGPD y publica el estado de sus controles en tiempo real en su Centro de Confianza, por lo que las grabaciones y transcripciones se manejan bajo controles auditados.

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 una API de conversión de voz a texto más tu propio flujo de trabajo

Una API de conversión de voz a texto transforma el audio en texto. Cuando ese texto debe convertirse en subtítulos, traducciones y versiones con doblaje, el resto requiere trabajo de integración. Aquí tienes el mismo resultado obtenido de dos formas distintas.
Lo que necesitas
Rask API
Armado por partes
Una transcripción con etiquetas de hablante
Incluido
Incluido en la mayoría de las API de voz a texto
Marcas de tiempo
Por segmento
Por palabra en muchas API de voz a texto
Traducción de la transcripción
Mismo proyecto, más de 135 opciones de idiomas y regiones
Una API de traducción independiente
Subtítulos en formato .srt y .vtt
Incluido, en el idioma de destino
Creado a partir de tus propios datos de sincronización
Audio y video con doblaje
Incluido
Un proveedor de TTS más tu propia mezcla
Corrección de un segmento
Una solicitud de parche y, a continuación, volver a generar
Edita y vuelve a sincronizar tus propias copias
Límites de velocidad
Ninguno
Lo que establezca tu proveedor
Transcripción en tiempo real de audio en vivo
Usa una API de streaming de voz a texto
Diseñado para esto
Solo una transcripción, al precio más bajo
Una API especializada de voz a texto cuesta menos
Precio por hora de audio
PREGUNTAS FRECUENTES

API de voz a texto: preguntas frecuentes

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

¿Rask cuenta con una API de voz a texto?

¿Qué idiomas puede transcribir?

¿Puedo transcribir archivos de audio sin video?

¿Es compatible con la identificación de oradores (diarización)?

¿La API incluye marcas de tiempo por palabra?

¿Es compatible con la transcripción en tiempo real?

¿Qué tan precisa es la transcripción?

¿Puedo agregar vocabulario personalizado o términos especializados?

¿Puedo obtener la transcripción en un archivo SRT?

¿Puedo usar mi propia transcripción?

¿Cómo se factura la transcripción?

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