Endpoint
Trascrizione (STT)
Trasforma l'audio in testo con POST /audio/transcriptions usando Whisper, GPT-4o Transcribe, Deepgram e Voxtral, con campi, formati, limiti e prezzi.
Provalo nel playgroundTrasforma il parlato in testo (speech-to-text, STT) con Whisper, GPT-4o Transcribe, Deepgram, Voxtral e altri modelli di trascrizione. L'endpoint segue POST /audio/transcriptions di OpenAI, quindi client.audio.transcriptions.create(...) funziona senza modifiche.
POST https://api14.com/api/v1/audio/transcriptions
Richiesta
Invia multipart/form-data con il file audio (è ciò che fanno gli SDK di OpenAI), oppure un corpo JSON.
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
file | file | sì | File audio: mp3, mp4, m4a, wav, webm, ogg, flac. |
model | string | sì | L'id di un modello di trascrizione, ad es. openai/whisper-1. |
language | string | no | Codice ISO-639-1 (en, de), migliora precisione e velocità. |
prompt | string | no | Suggerimenti di vocabolario o il testo del segmento precedente. |
response_format | string | no | json (predefinito), text, srt, vtt, verbose_json dove supportato. |
temperature | number | no | Temperatura di campionamento, 0-1. |
Il limite per il corpo della richiesta è 25 MB per impostazione predefinita. I file più grandi restituiscono 413 payload_too_large: dividi le registrazioni lunghe in parti.
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
Corpo JSON
Anche il JSON è accettato, con l'audio in base64 per i modelli che lo supportano:
{
"model": "openai/whisper-1",
"input_audio": { "data": "<base64>", "format": "mp3" },
"language": "en"
}
Esempio
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);
Risposta
{
"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 il corpo è testo semplice invece di JSON.
Prezzi
La trascrizione è fatturata al prezzo indicato per il modello, mostrato come "$ / minuto" (o per token per i modelli con prezzo a token). L'importo è restituito in usage.cost e scalato dal tuo saldo in USD.
Errori
| Stato | Codice | Quando |
|---|---|---|
| 400 | invalid_body | Non è stato possibile analizzare il corpo multipart. |
| 400 | model_required | Manca il campo model. |
| 402 | insufficient_balance | Il tuo saldo in USD è $0. |
| 404 | model_not_found | Id del modello sconosciuto o disattivato. |
| 413 | payload_too_large | Il file supera il limite di dimensione del corpo. |
Vedi Errori.