Usamos cookies. Las cookies y el almacenamiento del navegador mantienen tu sesión iniciada y recuerdan tus preferencias. Con tu permiso, también medimos cómo se usa el sitio. Puedes en cualquier momento. Consulta nuestra política de cookies.

Transcripción (STT)

Endpoints

Transcripción (STT)

Convierte audio en texto con POST /audio/transcriptions usando Whisper, GPT-4o Transcribe y otros modelos, con subida multipart o cuerpo JSON.

Pruébalo en el playground

Convierte voz en texto (speech-to-text, STT) con Whisper, GPT-4o Transcribe, Deepgram, Voxtral y otros modelos de transcripción. El endpoint sigue POST /audio/transcriptions de OpenAI, así que client.audio.transcriptions.create(...) funciona sin cambios.

POST https://api14.com/api/v1/audio/transcriptions

Petición

Envía multipart/form-data con el archivo de audio (lo que hacen los SDK de OpenAI), o un cuerpo JSON.

CampoTipoObligatorioDescripción
filefilesíArchivo de audio: mp3, mp4, m4a, wav, webm, ogg, flac.
modelstringsíUn id de modelo de transcripción, p. ej. openai/whisper-1.
languagestringnoCódigo ISO-639-1 (en, de); mejora la precisión y la velocidad.
promptstringnoPistas de vocabulario o el texto del segmento anterior.
response_formatstringnojson (por defecto), text, srt, vtt, verbose_json donde se admita.
temperaturenumbernoTemperatura de muestreo, 0–1.

El límite del cuerpo de la petición es de 25 MB por defecto. Los archivos más grandes devuelven 413 payload_too_large; divide las grabaciones largas en fragmentos.

Multipart con cURL

curl https://api14.com/api/v1/audio/transcriptions \
  -H "Authorization: Bearer sk-api14-..." \
  -F model=openai/whisper-1 \
  -F file=@meeting.mp3 \
  -F language=en

Cuerpo JSON

También se acepta JSON, con el audio en base64 para los modelos que lo admiten:

{
  "model": "openai/whisper-1",
  "input_audio": { "data": "<base64>", "format": "mp3" },
  "language": "en"
}

Ejemplo

import fs from "node:fs";
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api14.com/api/v1",
  apiKey: process.env.API14_API_KEY,
});

const result = await client.audio.transcriptions.create({
  model: "openai/whisper-1",
  file: fs.createReadStream("audio.mp3"),
});
console.log(result.text);

Respuesta

{
  "text": "Thanks everyone for joining. Let's start with the roadmap.",
  "usage": { "type": "duration", "seconds": 42, "cost": 0.0042 }
}

Con response_format: "text", srt o vtt, el cuerpo es texto plano en lugar de JSON.

Precios

La transcripción se factura al precio indicado del modelo, mostrado como "$ / minuto" (o por token en los modelos con precio por token). El cargo se devuelve en usage.cost y se descuenta de tu saldo en USD.

Errores

EstadoCódigoCuándo
400invalid_bodyNo se pudo analizar el cuerpo multipart.
400model_requiredFalta el campo model.
402insufficient_balanceTu saldo en USD es $0.
404model_not_foundId de modelo desconocido o desactivado.
413payload_too_largeEl archivo supera el límite de tamaño del cuerpo.

Consulta Errores.