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

Sube audios o videos grabados previamente y obtén una transcripción con etiquetas de orador y marcas de tiempo para cada segmento, en 75 idiomas de origen con detección automática de idioma. El mismo proyecto los traduce a más de 135 opciones de idiomas y regiones, con subtítulos y audio doblado.
Diarización de oradores
75 idiomas de origen
REST + Python SDK
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. La transcripción se divide en segmentos con etiquetas de orador y marcas de tiempo, listos para editar, traducir, subtitular y doblar en el mismo proyecto.

Transcribe archivos de audio y video

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

Diarización de oradores

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

Marcas de tiempo para cada segmento

Cada segmento cuenta con un tiempo de inicio y 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 establécelo 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 las más de 135 opciones de idiomas y regiones, 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 terminado 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 incluso en el idioma original si así lo deseas.

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

Corrige una palabra, ajusta una marca de tiempo, reasigna a un orador, o añade y elimina segmentos. Los revisores corrigen la transcripción final en lugar de empezar de nuevo.

Escala sin límites

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

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

El mismo clip transcrito, traducido y con voz en inglés, francés, alemán, portugués y español, manteniendo intacto el audio de fondo original.
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

Al crear el proyecto se inicia el reconocimiento de voz, seguido de la traducción y el doblaje en un solo proceso. 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 multipart, o comparte 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

Crear 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 en cuanto sus segmentos estén disponibles, mientras el contenido multimedia traducido se sigue procesando. Descarga los archivos de subtítulos y multimedia cuando el proyecto esté completo.

GET /v2/projects/{id}/transcription
El reconocimiento funciona con archivos completos y pregrabados, no con 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 requiera, mayor rendimiento o tu propio método de entrega: nuestro equipo revisa lo que tu integración necesita y las opciones disponibles.

Idiomas y voces

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

Plataformas con video integrado

Plataformas de LMS y capacitación de clientes, plataformas de creadores y video, herramientas de seminarios web y eventos virtuales, SaaS de alojamiento y flujos de trabajo de video, 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 hablantes como 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 interna de video continua

Retail y comercio electrónico internacional, franquicias globales, medios de comunicación, universidades corporativas. Transcribe capacitaciones grabadas, seminarios web y entrevistas, luego publica subtítulos y versiones en diferentes idiomas para cada mercado.
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 conversión 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 de HTTP plano para los mismos endpoints.
Progreso

Cómo reporta el progreso un proyecto de transcripción

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

Éxito, detente aquí

merging_done
Los archivos finales de contenido multimedia 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
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 y forbidden_link son lo suficientemente específicos como para mostrárselos directamente a tu propio usuario.
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

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

Segmentos de transcripción, subtítulos y contenido multimedia 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 independiente.
Campo
Formato
Qué es
segments
JSON
Transcripción: texto de origen, traducción, etiqueta de hablante, tiempo de inicio y de fin para cada segmento
voiceover
WAV
Solo voz traducida, sin sonido de fondo, en 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
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 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 por segmentos

Edición por segmentos
Cada proyecto expone su transcripción como segmentos accesibles, por lo que corregir la transcripción final es una simple solicitud de actualización.
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
Cuando se traduce la transcripción, un glosario se encarga de mantener los nombres de marca, nombres propios y términos especializados iguales en todas las versiones, o en su idioma original según se prefiera.

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 audio como podcasts, entrevistas y llamadas grabadas, o videos en cualquier formato compatible, o bien envía una URL. Si envías un archivo no compatible, la API lo rechazará antes de consumir 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 multimedia devuelve la duración, el tamaño del archivo, el códec de video, la velocidad de fotogramas, la resolución, el códec de audio, la frecuencia de muestreo y la distribución de canales. Valida el archivo y calcula el costo por adelantado, ya que los proyectos se cobran por minuto de audio o video.
Seguridad y cumplimiento normativo

Seguridad de nivel empresarial para tus datos de audio y voz

Brask Inc cuenta con la certificación SOC 2 Tipo II, opera bajo el cumplimiento 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 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 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 construir un flujo de trabajo. Aquí puedes ver 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 conversión de texto a voz más tu propia mezcla de audio
Corregir un segmento
Una solicitud de actualización y luego regenerar
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 conversión de voz a texto por streaming
Diseñado para esto
Solo la transcripción, al precio más bajo
Una API dedicada de conversión de voz a texto cuesta menos
Precio por hora de audio
Preguntas frecuentes

API de conversión 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 conversión de voz a texto?

¿Qué idiomas puede transcribir?

¿Puedo transcribir archivos de audio sin video?

¿Es compatible con la diarización de hablantes?

¿La API devuelve marcas de tiempo a nivel de 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 como un archivo SRT?

¿Puedo subir mi propia transcripción?

¿Cómo se cobra la transcripción?

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