엔드포인트
음성 합성(TTS)
POST /audio/speech로 텍스트를 mp3, wav 등 원시 오디오 바이트로 변환하는 방법입니다. model, input, voice 파라미터, 입력 글자 수 기준 요금, 음성 모델 조회, 오류 코드를 다룹니다.
플레이그라운드에서 사용해 보기텍스트를 자연스러운 음성으로 변환합니다(text-to-speech, TTS). 이 엔드포인트는 OpenAI의 POST /audio/speech 형식을 따르며 원시 오디오 바이트를 반환하므로, client.audio.speech.create(...)가 그대로 동작합니다.
POST https://api14.com/api/v1/audio/speech
요청
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
model | string | 예 | 음성 모델 ID. 예: openai/gpt-4o-mini-tts. |
input | string | 예 | 음성으로 읽을 텍스트. |
voice | string | 예 | 음성 이름. 예: alloy, nova, verse. 음성은 모델마다 다릅니다(모델 페이지 참고). |
response_format | string | 아니요 | mp3(기본값), wav, opus, aac, flac, pcm (지원되는 경우). |
speed | number | 아니요 | 재생 속도. 일반적으로 0.25–4.0. |
instructions | string | 아니요 | 이를 지원하는 모델용 스타일 지침("차분하고 따뜻한 어조"). |
예제
import { writeFile } from "node:fs/promises";
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const audio = await client.audio.speech.create({
"model": "openai/gpt-4o-mini-tts",
"input": "Hello from api14! One API for every model.",
"voice": "alloy",
"response_format": "mp3"
});
await writeFile("speech.mp3", Buffer.from(await audio.arrayBuffer()));
응답
본문은 오디오 파일 자체이며, 알맞은 Content-Type(예: audio/mpeg)이 함께 옵니다. 디스크에 저장하거나 플레이어로 스트리밍하세요.
curl https://api14.com/api/v1/audio/speech \
-H "Authorization: Bearer sk-api14-..." \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-4o-mini-tts","input":"Hello from api14!","voice":"alloy"}' \
--output hello.mp3
오류는 여전히 OpenAI 오류 형식의 JSON으로 반환되므로, 파일을 쓰기 전에 상태 코드를 확인하세요.
가격
음성은 모델에 표시된 가격("$ / 1M characters")으로 입력 글자 수에 따라 과금됩니다. 1,000자 단락을 $15 / 1M characters 모델로 처리하면 $0.015입니다.
음성 모델 목록 조회
curl "https://api14.com/api/v1/models?category=speech"
오류
| 상태 | 코드 | 발생 조건 |
|---|---|---|
| 400 | model_required / invalid_json | model이 없거나 본문 형식이 잘못되었습니다. |
| 402 | insufficient_balance | USD 잔액이 $0입니다. |
| 403 | model_not_allowed / plan_required | 키 허용 목록이나 요금제에서 해당 모델이 제외됩니다. |
| 404 | model_not_found | 알 수 없거나 비활성화된 모델 ID입니다. |
| 429 | rate_limited | 분당 요청 수를 초과했습니다. |
지원하지 않는 음성이나 형식은 업스트림에서 거부되어 그대로 전달됩니다. 오류를 참고하세요.