엔드포인트
음성 인식
Whisper, GPT-4o Transcribe, Deepgram, Voxtral 모델로 음성을 텍스트로 바꾸는 POST /audio/transcriptions 사용법입니다. multipart와 JSON 요청, 응답 형식, 요금, 오류를 설명합니다.
플레이그라운드에서 사용해 보기Whisper, GPT-4o Transcribe, Deepgram, Voxtral 등의 전사 모델로 음성을 텍스트로 바꿉니다(speech-to-text, STT). 이 엔드포인트는 OpenAI의 POST /audio/transcriptions를 따르므로 client.audio.transcriptions.create(...)가 그대로 동작합니다.
POST https://api14.com/api/v1/audio/transcriptions
요청
오디오 파일을 담은 multipart/form-data(OpenAI SDK가 보내는 방식) 또는 JSON 본문을 보내세요.
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
file | file | 예 | 오디오 파일: mp3, mp4, m4a, wav, webm, ogg, flac. |
model | string | 예 | 전사 모델 ID. 예: openai/whisper-1. |
language | string | 아니요 | ISO-639-1 코드(en, de). 정확도와 속도가 향상됩니다. |
prompt | string | 아니요 | 어휘 힌트 또는 이전 구간의 텍스트. |
response_format | string | 아니요 | json(기본값), text, srt, vtt, 지원되는 경우 verbose_json. |
temperature | number | 아니요 | 샘플링 온도, 0–1. |
요청 본문 크기 제한은 기본 25 MB입니다. 더 큰 파일은 413 payload_too_large를 반환하므로, 긴 녹음은 조각으로 나누세요.
cURL로 보내는 Multipart
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
JSON 본문
지원하는 모델에서는 오디오를 base64로 담은 JSON도 받습니다.
{
"model": "openai/whisper-1",
"input_audio": { "data": "<base64>", "format": "mp3" },
"language": "en"
}
예제
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);
응답
{
"text": "Thanks everyone for joining. Let's start with the roadmap.",
"usage": { "type": "duration", "seconds": 42, "cost": 0.0042 }
}
response_format이 "text", srt, vtt이면 본문은 JSON이 아닌 일반 텍스트입니다.
가격
전사는 모델에 표시된 가격으로 과금되며, "$ / minute"(토큰 단위 가격 모델은 토큰당)으로 표시됩니다. 요금은 usage.cost로 반환되고 USD 잔액에서 차감됩니다.
오류
| 상태 | 코드 | 발생 조건 |
|---|---|---|
| 400 | invalid_body | multipart 본문을 파싱할 수 없습니다. |
| 400 | model_required | model 필드가 없습니다. |
| 402 | insufficient_balance | USD 잔액이 $0입니다. |
| 404 | model_not_found | 알 수 없거나 비활성화된 모델 ID입니다. |
| 413 | payload_too_large | 파일이 본문 크기 제한을 초과했습니다. |
오류를 참고하세요.