API de texto a voz para locución en videos

Envía tu guion sincronizado con un video o grabación de audio y genera voz alineada con su tiempo. Elige voces AI de la biblioteca de voces o una clonación de voz en más de 135 opciones de idiomas y regiones, y descarga la locución, el video y los subtítulos desde el mismo proyecto.
De guion a locución
Voces AI y clonación de voz
REST + SDK de Python
script in, voiceover out
OAuth 2.0
# 1. send your script as timed segments - one speaker per line
curl -X POST https://api.rask.ai/v2/transcriptions \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"segments": [
    {"speaker": "SPEAKER_00", "start": "00:00:00,500", "end": "00:00:04,800",
     "src": {"text": "Welcome to the new dashboard.", "lang": "en"},
     "dst": {"text": "Bienvenido al nuevo panel.", "lang": "es-mx"}}
  ]}'

# 2. voice the script over your video
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\", \"transcript_id\": \"$TRANSCRIPT_ID\"}"
GET /v2/projects/{project_id}
voiceover links
# When status is merging_done, read the voiceover links
curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" \
  | jq '{status, voiceover, translated_audio, translated_video}'
Utilizado por equipos globales
Funciones

Todo lo que la API de texto a voz hace para el video

Convierte un guion escrito en una locución que se ajuste a la imagen: la voz correcta para cada hablante, la sincronización de tus segmentos, audio de fondo, subtítulos y traducción en un solo proyecto. Agrega sincronización labial opcional, facturada por separado.

Tu guion hablado

Crea una transcripción a partir de tus propios segmentos de texto o un archivo SRT, y la API generará voz exactamente para ese guion en el idioma de destino.

Biblioteca de voces

Cada región de destino cuenta con voces AI predefinidas con un género específico. Lístalas para un proyecto con el endpoint de voces y asigna una a cada hablante mediante su ID de voz.

Voces personalizadas y clonación de voz

Usa una clonación de voz personalizada guardada como la voz coherente de tu marca, o mantén la voz propia de un hablante en pantalla con la clonación de voz instantánea, en los idiomas de clonación de voz compatibles.

Sincronizado con la imagen

Cada segmento tiene un tiempo de inicio y fin, por lo que cada línea de diálogo se ubica exactamente donde corresponde en el video.

Voces de personajes y diálogos

Asigna un hablante a cada línea y una voz a cada hablante, para que los diálogos o un elenco de voces de personajes se mantengan claros y coherentes.

Más de 135 idiomas y variantes regionales

Escribe el guion en un idioma y ponle voz en otro: Rask lo traduce y hay voces AI disponibles para cada región de destino.

Pista de audio exclusiva de voz

En los planes elegibles, descarga el audio hablado como pista WAV sin fondo, lista para tu propia edición, o bien la mezcla completa y el video finalizado.

Edita una línea, regenera una línea

Cambia el texto de un segmento o la voz de un hablante y vuelve a generar. Nadie tiene que volver a grabar nada y solo se cobran los segmentos modificados.

Escala sin límites

Sin límites de velocidad, sin cuota de concurrencia y sin restricciones por clave. Ponle voz a contenido de formato largo y a catálogos completos de videos en paralelo.
Míralo en acción

Escucha una misma imagen con voces en cinco idiomas

El mismo video con voces en inglés, francés, alemán, portugués y español, sincronizado con la misma imagen y 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 pasos del guion a la voz

Al crear el proyecto se inicia la generación de voz para tu guion. Usa el endpoint /generate después de cambiar el texto o las voces.
1

Sube un video o audio

Sube el archivo de video o audio al que pertenece tu voz usando un archivo o una URL de medios compatible. Su línea de tiempo proporciona la sincronización para tu guion.

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

Envía tu guion

Crea una transcripción a partir de segmentos de texto con marcas de tiempo y hablantes, o desde un archivo SRT, y luego crea el proyecto con su transcript_id y un idioma de destino.

POST /v2/transcriptions
3

Elige las voces y descarga

Consulta las voces, asigna una predeterminada o una clonada a cada hablante, vuelve a generar si es necesario y descarga la voz, el video y los subtítulos.

GET /v2/projects/{id}/voices
El tiempo de procesamiento varía según el proyecto. La voz se genera para todo el proyecto y se entrega como archivos, por lo que esta API es ideal para videos publicados en lugar de conversaciones en vivo.
Diseñado a tu medida

¿Necesitas una voz que no está en la biblioteca? Habla con nuestro equipo

Una voz de marca, un idioma fuera del catálogo, mayor rendimiento o tu propio método de entrega: cuando una integración de voz necesita algo fuera del catálogo público, nuestro equipo analiza tus requerimientos y las opciones disponibles.

Idiomas y voces

¿Necesitas un idioma o una voz que no esté en el catálogo público? Cuéntale al equipo tus necesidades 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 texto a voz para videos

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 flujo de trabajo de video, plataformas de adopción digital, compras en vivo. Permite que los usuarios escriban o suban un guion y obtengan la voz para sus videos en varios idiomas sin salir de tu producto.

Agencias de localización y producción

Aprueba guiones con voces para los videos de tus clientes usando voces de IA o una voz personalizada del cliente, y entrega el archivo WAV solo de voz para tu propia mezcla. Actualiza una línea después de la revisión y vuelve a generar solo ese segmento.

Producción de video interna y continua

Retail internacional y comercio electrónico, franquicias globales, medios de comunicación, universidades corporativas. Produce voces para capacitación, videos de productos y marketing a partir de un guion escrito, y actualiza el texto cuando el producto cambie.
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 texto a voz

Un ejemplo completo en cada idioma: envía un guion como segmentos sincronizados, crea el proyecto, elige una voz de la biblioteca, vuelve a generar y descarga la voz.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

async def wait(client, job):
    while job.status is not enums.ProjectStatus.MERGING_DONE:
        await asyncio.sleep(10)
        job = await client.get_project(project_id=job.id)
    return job

async def main():
    client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)

    script = await client.create_transcription(data=schemas.TranscriptionCreate(segments=[
        schemas.SegmentCreate(speaker="SPEAKER_00", start="00:00:00,500", end="00:00:04,800",
            src=schemas.SegmentTextCreatePatch(text="Welcome to the new dashboard.", lang="en"),
            dst=schemas.SegmentTextCreatePatch(text="Bienvenido al nuevo panel.", lang="es-mx")),
    ]))

    job = await wait(client, await client.create_project(data=schemas.ProjectCreate(
        video_id=VIDEO_ID, dst_lang="es-mx", transcript_id=script.id)))

    # pick a female AI voice preset from the library for SPEAKER_00
    voices = await client.get_project_voices(project_id=job.id)
    preset = next(v for v in voices if v.gender == "female")
    await client.patch_project(project_id=job.id, data=schemas.ProjectPatch(voice={**job.voice, "SPEAKER_00": preset.id}))

    job = await wait(client, await client.generate_project(project_id=job.id))
    print(job.voiceover, job.translated_video)

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}"}

def wait(pid):
    while (p := requests.get(f"{API}/v2/projects/{pid}", headers=h).json())["status"] != "merging_done":
        time.sleep(10)
    return p

script = requests.post(f"{API}/v2/transcriptions", headers=h, json={"segments": [
        {"speaker": "SPEAKER_00", "start": "00:00:00,500", "end": "00:00:04,800",
         "src": {"text": "Welcome to the new dashboard.", "lang": "en"},
         "dst": {"text": "Bienvenido al nuevo panel.", "lang": "es-mx"}},
    ]}).json()

pid = requests.post(f"{API}/v2/projects", headers=h, json={
    "video_id": VIDEO_ID, "dst_lang": "es-mx", "transcript_id": script["id"]}).json()["id"]
project = wait(pid)

voices = requests.get(f"{API}/v2/projects/{pid}/voices", headers=h).json()
preset = next(v for v in voices if v["gender"] == "female")
requests.patch(f"{API}/v2/projects/{pid}", headers=h,
               json={"voice": {**project["voice"], "SPEAKER_00": preset["id"]}})
requests.post(f"{API}/v2/projects/{pid}/generate", headers=h)
print(wait(pid)["voiceover"])
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());
const wait = async (id) => { let p; while ((p = await call('GET', `/v2/projects/${id}`)).status !== 'merging_done') await sleep(10000); return p; };

const script = await call('POST', '/v2/transcriptions', { segments: [
  { speaker: 'SPEAKER_00', start: '00:00:00,500', end: '00:00:04,800',
    src: { text: 'Welcome to the new dashboard.', lang: 'en' },
    dst: { text: 'Bienvenido al nuevo panel.', lang: 'es-mx' } },
] });

const { id } = await call('POST', '/v2/projects', { video_id: VIDEO_ID, dst_lang: 'es-mx', transcript_id: script.id });
const project = await wait(id);

const voices = await call('GET', `/v2/projects/${id}/voices`);
const preset = voices.find((v) => v.gender === 'female');
await call('PATCH', `/v2/projects/${id}`, { voice: { ...project.voice, SPEAKER_00: preset.id } });
await call('POST', `/v2/projects/${id}/generate`);
console.log((await wait(id)).voiceover);
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. your script as an SRT file in the target language
TRANSCRIPT_ID=$(curl -s -X POST "https://api.rask.ai/v2/transcriptions/srt?dst_lang=es-mx" \
  -H "Authorization: Bearer $TOKEN" -F "dst=@script_es-mx.srt" | jq -r .id)

# 3. voice it over the video
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\": \"es-mx\", \"transcript_id\": \"$TRANSCRIPT_ID\"}" | jq -r .id)

# 4. when status is merging_done, read the voiceover links
curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" \
  | jq '{status, voiceover, translated_video}'
POST /v2/transcriptions/srt
script from an SRT file
<?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']];

$script = $json($http->post('/v2/transcriptions', ['headers' => $h, 'json' => ['segments' => [[
    'speaker' => 'SPEAKER_00', 'start' => '00:00:00,500', 'end' => '00:00:04,800',
    'src' => ['text' => 'Welcome to the new dashboard.', 'lang' => 'en'],
    'dst' => ['text' => 'Bienvenido al nuevo panel.', 'lang' => 'es-mx'],
]]]]));

$p = $json($http->post('/v2/projects', ['headers' => $h, 'json' => [
    'video_id' => $videoId, 'dst_lang' => 'es-mx', 'transcript_id' => $script['id']]]));

while ($p['status'] !== 'merging_done') {
    sleep(10);
    $p = $json($http->get("/v2/projects/{$p['id']}", ['headers' => $h]));
}
echo $p['voiceover'];
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 voz informa su progreso

La generación de voz se ejecuta como un proyecto con estados documentados, para que puedas mostrar el progreso real incluso en contenido largo. Solo necesitas actuar en tres grupos.

Éxito, detente aquí

merging_done
El audio está listo. Consulta el proyecto una vez más para obtener los enlaces de descarga disponibles para tu proyecto.

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.
Voice options in a project, es-mx
GET /v2/projects/{project_id}/voices
{"label": "Renata",      "gender": "female", "sample_src": "https://..."}   AI voice preset
{"label": "Gerardo",     "gender": "male",   "sample_src": "https://..."}   AI voice preset
{"label": "Maria Lopez", "gender": "auto",   "sample_src": "https://..."}   custom voice clone
{"label": "Voice Clone", "gender": "auto",   "sample_src": null}            instant voice clone

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

Audio de voz, video y subtítulos

Descarga el video con la nueva voz y los subtítulos en SRT y VTT. En los planes elegibles, también puedes descargar el audio hablado por separado en formato WAV o mezclado con el audio de fondo original.
Campo
Formato
Qué es
translated_video
MP4
El video con la voz generada, listo para publicar
voiceover
WAV
Solo la voz generada, sin fondo, para tu propia edición
translated_audio
WAV
Voz traducida mezclada con el audio de fondo original
translation_srt_path
.srt
Subtítulos en el idioma de destino
translation_vtt_path
.vtt
Los mismos subtítulos en formato WebVTT para reproductores web
original_video
MP4
Tu archivo de origen tal como se guardó, para referencia
Control

Cambia una línea o una voz y regenera solo esa parte

Tu guion se guarda en segmentos. Edita el texto de una línea o cambia la voz de un orador, vuelve a generar y solo se cobrará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 muestra su guion en segmentos con marcas de tiempo, oradores y texto, por lo que una corrección es solo una 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 Rask traduce tu guion a otros idiomas, un glosario mantiene los nombres de marca y los términos técnicos iguales en todas las versiones, o 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

Sube el video al que pertenece tu voz en cualquier formato compatible o envía una URL. Los guiones se reciben como segmentos de texto a través de la API o como archivos SRT.

Vídeo

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 un archivo y calcula el costo por adelantado, ya que la voz se cobra por minuto de video, no por carácter.
Seguridad y cumplimiento normativo

Seguridad de nivel empresarial para guiones y voces

Brask Inc cuenta con la certificación SOC 2 Tipo II, opera bajo el RGPD y publica el estado de control en tiempo real en su Centro de confianza. Las clonaciones de voz personalizadas se crean con el consentimiento del orador.

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

API de Rask frente a un sistema de voz creado por ti

Una API de texto a voz por streaming convierte texto en bytes de audio para su uso en vivo. La voz para videos publicados también necesita sincronización, una voz por orador, mezcla, subtítulos y, a menudo, traducción. Aquí tienes el mismo trabajo de voz armado de dos maneras.
Lo que necesitas
Rask API
Armado por partes
Un guion sincronizado con el video
Segmentos con hora de inicio y de fin
Tu propia lógica de alineación
Una voz para cada orador o personaje
Mapa de voces por proyecto
IDs de voz gestionados por solicitud
Una voz de marca constante
Clones de voz personalizados
Un proveedor de clonación independiente
El mismo guion en otros idiomas
Traducción en el mismo proyecto
Una API de traducción más nueva sincronización
Música de fondo y efectos
Mezclados debajo de la voz
Tu propio paso de mezcla
Subtítulos en formato .srt y .vtt
Incluido
Generado a partir de tus propios datos de tiempo
Una pista de audio solo de voz
WAV en los planes elegibles
Fragmentos de audio que unes tú mismo
Cambiar una línea
Regenerar los segmentos modificados
Volver a sintetizar y mezclar el archivo
Límites de velocidad
Ninguno
Lo que establezca tu proveedor
Agentes de voz en vivo con streaming
Usa una API de TTS con streaming
Diseñado para esto
PREGUNTAS FRECUENTES

API de texto a voz: preguntas frecuentes

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

¿Rask tiene una API de texto a voz?

¿Puedo usarla para agentes de voz o centros de contacto?

¿La API es compatible con la salida de audio por streaming?

¿Cómo envío mi guion?

¿Qué voces están disponibles?

¿Puedo usar una voz personalizada?

¿Qué idiomas están disponibles?

¿Admiten etiquetas SSML o pronunciaciones personalizadas?

¿Puedo controlar la emoción y la expresividad?

¿Necesito un video para generar voz?

¿Los precios son por carácter?

¿Hay una versión gratuita o créditos gratis?

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