Usamos cookies. Cookies e o armazenamento do navegador mantêm você conectado e lembram suas preferências. Com sua permissão, também medimos como o site é usado. Você pode a qualquer momento. Veja nossa política de cookies.

Transcrição de áudio

Endpoints

Transcrição de áudio

Converta fala em texto com Whisper, GPT-4o Transcribe e outros modelos pelo endpoint POST /audio/transcriptions do api14, compatível com a OpenAI.

Teste no playground

Transforme fala em texto (speech-to-text, STT) com Whisper, GPT-4o Transcribe, Deepgram, Voxtral e outros modelos de transcrição. O endpoint segue o POST /audio/transcriptions da OpenAI, então client.audio.transcriptions.create(...) funciona sem alterações.

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

Requisição

Envie multipart/form-data com o arquivo de áudio (o que os SDKs da OpenAI fazem) ou um corpo JSON.

CampoTipoObrigatórioDescrição
filefilesimArquivo de áudio: mp3, mp4, m4a, wav, webm, ogg, flac.
modelstringsimUm id de modelo de transcrição, por exemplo openai/whisper-1.
languagestringnãoCódigo ISO-639-1 (en, de), melhora a precisão e a velocidade.
promptstringnãoDicas de vocabulário ou o texto do segmento anterior.
response_formatstringnãojson (padrão), text, srt, vtt, verbose_json quando suportado.
temperaturenumbernãoTemperatura de amostragem, 0–1.

O limite do corpo da requisição é de 25 MB por padrão. Arquivos maiores retornam 413 payload_too_large, então divida gravações longas em partes.

Multipart com 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

Corpo JSON

JSON também é aceito, com o áudio em base64 para os modelos que o suportam:

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

Exemplo

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);

Resposta

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

Com response_format: "text", srt ou vtt, o corpo é texto simples em vez de JSON.

Preços

A transcrição é cobrada ao preço listado do modelo, exibido como "$ / minuto" (ou por token nos modelos com preço por token). O valor cobrado é retornado em usage.cost e debitado do seu saldo em USD.

Erros

StatusCódigoQuando
400invalid_bodyNão foi possível interpretar o corpo multipart.
400model_requiredO campo model está ausente.
402insufficient_balanceSeu saldo em USD é $0.
404model_not_foundId de modelo desconhecido ou desativado.
413payload_too_largeO arquivo excede o limite de tamanho do corpo.

Veja Erros.