OpenTranscription
OpenTranscription
RankerModelosPlayground
OpenTranscription
OpenTranscription

Una API para cada modelo de voz a texto que vale la pena. Compáralos con tu audio, enruta al mejor, paga por segundo.

Estado de la plataforma

Producto

ClasificadorModelosTranscripcionesPlaygroundBlog

Desarrolladores

DocumentaciónConfiabilidadVersionado APIEstado

Legal

Política de PrivacidadTérminos de ServicioSoporte
© 2026 OpenTranscription
Volver a Modelos$0.0065/min

Ink-2

Cartesia

Tiempo real

El nuevo STT en streaming de Cartesia — el menor WER de cualquier modelo en streaming, detección de turnos nativa y precisión en datos alfanuméricos como números de teléfono, correos y UUID. Por ahora solo en inglés.

Transcribir con este modeloComparar en el playground

1 idiomas · evaluado

Puntuación en Tiempo Real

77.6

TTFW (P50)

1554 ms

Parpadeo

0.0%

Cadencia

0.0/s

RTF

1.01×

Tasa de Error de Palabras

14.85%

Tasa de Error de Caracteres

7.87%

Benchmarks Ejecutados

25

Precios

pago por segundo

Tarifa

$0.0065

/min

Facturación por segundo. Usa tu propia clave de proveedor y paga directamente al proveedor — se aplica una tarifa de enrutamiento del 5% (primeros 100 min/mes gratis).

Configurar BYOK

Estimador de costo

1 hora

$0.39

10 horas

$3.89

100 horas

$38.88

1000 horas

$388.80

Facturado por segundo de audio procesado.

API y uso

POST /api/v1/transcriptions

ID del modelo

cartesia/ink-2

Obtener una clave API

Autentica cada solicitud con tu clave API secreta como token Bearer. Genera una clave desde tu panel.

Este modelo también admite streaming en tiempo real por WebSocket.

Úsalo con tu agente

Pega esto en Claude Code, Cursor, Codex o cualquier agente con terminal. Instala la CLI y la skill de OpenTranscription, y transcribe con este modelo.

Transcribe an audio file for me with OpenTranscription, using the model cartesia/ink-2.
Set it up first:
npm install -g @opentranscription/cli
ot login
npx skills add opentranscription/skills
Then run:
ot transcribe <my-file> --model cartesia/ink-2
Ask me one question at a time, and give me options to pick from rather than open questions. Look for audio files here before asking which one I mean. Leave the language alone unless I tell you what it is, since the model detects it.
The login step opens my browser and waits for me to approve it, so stop and tell me when you reach it. The skill covers the rest.
Skill para agentesSDK de TypeScriptSDK de PythonCLI en npm

Inicio rápido

Sube tu audio, crea un trabajo con este modelo y luego consulta el trabajo o define un webhook_url para recibir el aviso al completarse.

// npm install @opentranscription/sdk
import { readFile } from 'node:fs/promises';
import { OpenTranscription } from '@opentranscription/sdk';
const ot = new OpenTranscription({ apiKey: process.env.OT_API_KEY! });
// Uploads the audio and opens the job. The signed-URL round trip is inside.
const job = await ot.transcribe({
file: await readFile('interview.mp3'),
fileName: 'interview.mp3',
model: 'cartesia/ink-2',
language: 'en',
webhookUrl: 'https://your-app.com/webhooks/ot',
});
// We POST a signed event to that URL when the job finishes: no polling required.

Parámetros clave

file_path

string

obligatorio

Ruta de almacenamiento devuelta por el paso de subida.

model

string

obligatorio

El modelo con el que se ejecuta este trabajo.

models

string[]

Cadena ordenada de respaldo: primero el principal y luego los alternativos, en orden, si un proveedor falla.

language

string

Código de idioma ISO 639-1. Omítelo para la detección automática.

webhook_url

string

URL HTTPS que recibe el resultado al completarse el trabajo. Los eventos entregados están firmados (X-OT-Signature).

title

string

Nombre visible de este trabajo en el panel. Si falta, se usa el nombre del archivo.

Respuesta

Un trabajo completado devuelve la transcripción en el Esquema Unificado de OpenTranscription (OTUS).

{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "completed",
"transcript": {
"text": "Welcome to the meeting, everyone.",
"language": "en",
"confidence": 0.97,
"segments": [
{
"id": 0,
"start": 0,
"end": 3.5,
"text": "Welcome to the meeting, everyone."
}
],
"words": [
{
"word": "Welcome",
"start": 0,
"end": 0.42,
"confidence": 0.99
}
]
}
}

Webhooks — sin sondeo

Enviamos un evento firmado a tu webhook_url cuando un trabajo se completa o falla; verifica la cabecera X-OT-Signature (HMAC-SHA256, rechaza si tiene más de 300 s) y desduplicado por el id del evento, luego obtén la transcripción completa con GET /api/v1/transcriptions/{id}.

import { createHmac, timingSafeEqual } from "node:crypto";
// Your signing secret from Settings → API keys.
const SECRET = process.env.OT_WEBHOOK_SECRET ?? "";
function verify(
rawBody: string,
header: string,
nowSeconds = Math.floor(Date.now() / 1000),
): boolean {
const segments = header.split(",");
// Exactly one t= segment, finite, within the replay window.
const tValues = segments.filter((s) => s.startsWith("t=")).map((s) => s.slice(2));
if (tValues.length !== 1) return false;
const t = Number(tValues[0]);
if (!Number.isFinite(t) || Math.abs(nowSeconds - t) > 300) return false;
const expected = createHmac("sha256", SECRET)
.update(`${t}.${rawBody}`)
.digest("hex");
// Header may carry multiple v1 sigs (key rotation). Match any.
return segments
.filter((s) => s.startsWith("v1="))
.some((s) => {
const got = Buffer.from(s.slice(3), "hex");
const exp = Buffer.from(expected, "hex");
return got.length === exp.length && timingSafeEqual(got, exp);
});
}
// Express example. Use the RAW body buffer, not the parsed JSON.
// The X-OT-Signature header carries t=<unix>,v1=<hmac-hex>.
app.post("/webhooks/ot", express.raw({ type: "application/json" }), (req, res) => {
const sig = req.headers["x-ot-signature"] as string;
if (!verify(req.body.toString(), sig)) {
return res.sendStatus(400);
}
const event = JSON.parse(req.body.toString());
// Dedupe on event.id (at-least-once delivery), then enqueue + return 2xx fast.
res.sendStatus(200);
});
Obtén tu clave de firma

Límite por nivel — consulta los encabezados de respuesta X-RateLimit-*.

Referencia completa de la API

Modelos similares

del mismo grupo

Más preciso

Soniox STT (Async)

Soniox

8.73% WER

$0.0017/min

Comparar →

Más barato

Whisper Large V3 Turbo

Groq

14.31% WER

$0.0007/min

Comparar →

Idiomas Soportados

Inglés

Formatos Soportados

mp3wavflacm4aoggwebm

Características

streamingendpointingturn detection+1

Límites

Tamaño máx. de archivo

Sin límite documentado

Duración máx.

Sin límite documentado

Acerca de Ink-2

Ink-2 es un modelo de transcripción de voz a texto de Cartesia. Admite 1 idioma y cuesta 0,006 US$/min — de precio intermedio.

Su alternativa evaluada más cercana es Soniox STT (Async). Ideal para subtitulado en vivo y transcripción en streaming.