Endpointy
Transkrypcja (STT)
POST /audio/transcriptions: zamień nagranie audio na tekst modelami Whisper, GPT-4o Transcribe, Deepgram i Voxtral, w formacie zgodnym z OpenAI.
Wypróbuj w playgroundZamień mowę na tekst (speech-to-text, STT) za pomocą Whisper, GPT-4o Transcribe, Deepgram, Voxtral i innych modeli transkrypcji. Endpoint ma kształt zgodny z POST /audio/transcriptions z OpenAI, więc client.audio.transcriptions.create(...) działa bez zmian.
POST https://api14.com/api/v1/audio/transcriptions
Żądanie
Wyślij multipart/form-data z plikiem audio (tak robią SDK OpenAI) lub ciało JSON.
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
file | file | tak | Plik audio: mp3, mp4, m4a, wav, webm, ogg, flac. |
model | string | tak | Identyfikator modelu transkrypcji, np. openai/whisper-1. |
language | string | nie | Kod ISO-639-1 (en, de), poprawia dokładność i szybkość. |
prompt | string | nie | Wskazówki dotyczące słownictwa lub tekst poprzedniego segmentu. |
response_format | string | nie | json (domyślnie), text, srt, vtt, verbose_json, jeśli są obsługiwane. |
temperature | number | nie | Temperatura próbkowania, 0–1. |
Domyślny limit rozmiaru ciała żądania to 25 MB. Większe pliki zwracają 413 payload_too_large, więc dziel długie nagrania na fragmenty.
Multipart z 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
Ciało JSON
JSON też jest akceptowany, z dźwiękiem w base64 dla modeli, które to obsługują:
{
"model": "openai/whisper-1",
"input_audio": { "data": "<base64>", "format": "mp3" },
"language": "en"
}
Przykład
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);
Odpowiedź
{
"text": "Thanks everyone for joining. Let's start with the roadmap.",
"usage": { "type": "duration", "seconds": 42, "cost": 0.0042 }
}
Przy response_format: "text", srt lub vtt ciałem odpowiedzi jest zwykły tekst zamiast JSON.
Cennik
Transkrypcja jest rozliczana według ceny podanej przy modelu, wyświetlanej jako "$ / minuta" (lub za token dla modeli wycenianych za tokeny). Opłata jest zwracana w usage.cost i pobierana z Twojego salda w USD.
Błędy
| Status | Kod | Kiedy |
|---|---|---|
| 400 | invalid_body | Nie udało się sparsować ciała multipart. |
| 400 | model_required | Brakuje pola model. |
| 402 | insufficient_balance | Twoje saldo w USD wynosi 0 USD. |
| 404 | model_not_found | Nieznany lub wyłączony identyfikator modelu. |
| 413 | payload_too_large | Plik przekracza limit rozmiaru ciała żądania. |
Zobacz Błędy.