Cookieを使用しています. Cookieとブラウザストレージは、ログイン状態の維持と設定の保存に使われます。許可いただいた場合は、サイトの利用状況も計測します。はいつでも変更できます。詳しくはCookieポリシーをご覧ください。

音声合成(TTS)

エンドポイント

音声合成(TTS)

POST /audio/speech でテキストを自然な音声に変換する TTS の解説です。生の音声バイトを返す仕組み、リクエストパラメーター、例、料金、音声合成モデルの一覧の取得方法、エラーを説明します。client.audio.speech.create がそのまま動作します。

プレイグラウンドで試す

テキストを自然な音声に変換します(テキスト読み上げ、TTS)。エンドポイントは OpenAI の POST /audio/speech の形式に従い、生の音声バイトを返すため、client.audio.speech.create(...) が変更なしで動作します。

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

リクエスト

パラメーター型必須説明
modelstringはい音声合成モデルの ID。例: openai/gpt-4o-mini-tts。
inputstringはい読み上げるテキスト。
voicestringはい音声名。例: alloy、nova、verse。使える音声はモデルによって異なります(モデルのページを参照)。
response_formatstringいいえmp3(デフォルト)、wav、opus、aac、flac、pcm(対応するモデルのみ)。
speednumberいいえ再生速度。通常は 0.25 から 4.0。
instructionsstringいいえ対応するモデル向けのスタイルの指示(「落ち着いた温かいトーン」など)。

例

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」)で入力の文字数ごとに課金されます。100 万文字あたり $15 のモデルでは、1,000 文字の段落で $0.015 かかります。

音声合成モデルの一覧

curl "https://api14.com/api/v1/models?category=speech"

エラー

ステータスコード発生条件
400model_required / invalid_jsonmodel がない、またはボディの形式が正しくない。
402insufficient_balanceUSD 残高が $0。
403model_not_allowed / plan_requiredキーの許可リストまたはプランにモデルが含まれていない。
404model_not_foundモデル ID が不明、または無効化されている。
429rate_limited毎分のリクエスト数を超えた。

未対応の音声や形式は上流で拒否され、そのまま返されます。エラーを参照してください。