音声生成

ファイルを入力する場合は ファイル API でアップロードし、返された file_id を参照します。ゲートウェイは変換を担当し、入力への対応可否は上流が判断します。

input_references: [{"type":"audio","role":"reference","source":{"type":"file","file_id":"..."}}] で素材を参照します。type は実ファイルの image/audio/video に一致させます。ゲートウェイがファイルを読み取り、プロバイダーの API が受け入れる形で引き渡し、role はそのまま保たれます。既存の必須項目は引き続き必要です。Images・Video・Speech の input_references は InOneAPI 拡張です。

POST /v1/audio/speech は OpenAI Speech JSON 形式に従い、JSON ではなく音声バイト列を返します。

必須は model、input、voice。任意は instructions、response_format(mp3、opus、aac、flac、wav、pcm)、speed(0.25–4)、stream_format(audio または sse)です。Chat 形式の stream は送信しません。

最小リクエスト

YOUR_MODEL_ID をモデル詳細の正確な ID に置き換え、接頭辞は追加しないでください。任意パラメーターと音色はモデルの対応範囲に従い、アプリヘッダーはコメントのままで利用できます。

# -H "X-APP-NAME: Your App Name"
# -H "X-APP-URL: https://your-app.example.com"
curl "https://api.inoneapi.com/v1/audio/speech" \
  -H "Authorization: Bearer $INONEAPI_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "YOUR_MODEL_ID",
  "input": "Hello from InOneAPI",
  "voice": "REPLACE_WITH_SUPPORTED_VOICE",
  "response_format": "mp3"
}' \
  --output speech.mp3

パラメーター詳細

フィールド型説明
modelstring必須の公開モデル ID。転送時にプラットフォームが実際のプロバイダーのモデル ID に置き換えます。例のモデル名は管理画面で利用可能なものに変更してください。
inputstring必須の空でないテキスト。長さ制限は上流によります。自動分割、切り詰め、結合、SSML 変換はありません。
voicestring/object必須の音色名、または対応するカスタム音色 {"id":"voice_123"}。音色名と権限はプロバイダー固有です。
instructionsstring任意の感情・話し方の指示。対応モデルのみで有効で、input の代わりではありません。
response_formatstring既定は mp3。出力形式が固定のモデルはその形式のみ受け付けます。url、base64、json ではありません。
speednumber0.25–4。省略時は上流の既定値。上流の制限がより厳しい場合があります。
stream_formatstring既定は audio。SSE は対応モデルのみ。音声の分割転送は SSE ではありません。

キーはサーバー側に保持し、利用者に AI 音声であることを明示してください。文字起こし、翻訳、Realtime、音声学習はこの API の対象外です。

クライアント例

curl  https://api.inoneapi.com/v1/audio/speech \
  -H "Authorization: Bearer $INONEAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "YOUR_MODEL_ID","input": "こんにちは。","voice": "REPLACE_WITH_SUPPORTED_VOICE","response_format": "mp3"}' \
  --output speech.mp3

cURL の終了コードを確認してください。--fail-with-body はエラー JSON も speech.mp3 に保存する場合があります。成功した音声応答には response.json() を使いません。JavaScript と TypeScript は全体をメモリに保持します。大きな音声にはストリームを使用してください。Python は分割保存でき、HTTP エラーは HTTPError になります。

音声形式とストリーミング

形式MIME と注意点
mp3audio/mpeg。既定形式。
opusaudio/ogg。プロバイダーが実際に Ogg Opus を返す必要があり、形式変換はしません。
aacaudio/aac。実際の格納形式と再生環境を確認してください。
flacaudio/flac。可逆圧縮で大きくなる場合があります。
wavaudio/wav。コンテナーヘッダーあり。サンプル仕様は上流によります。
pcmapplication/octet-stream。ヘッダーなし。サンプルレート、ビット深度、チャンネル、エンディアンを確認してください。拡張子変更だけでは WAV になりません。

プロバイダーが返した MIME とバイト列をそのまま保持します。Base64 で返る音声は MIME を指定するだけで、再エンコードやコーデック検証はしません。非 SSE 経路は最初にバッファリングする場合があり、即時のバイト単位転送を保証しません。

curl -N https://api.inoneapi.com/v1/audio/speech \
  -H "Authorization: Bearer $INONEAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"YOUR_MODEL_ID","input":"Hello!","voice":"REPLACE_WITH_SUPPORTED_VOICE","stream_format":"sse"}'

SSE は text/event-stream です。上流イベントと音声断片を解析し、SSE テキスト全体を MP3 として保存しないでください。SSE 非対応のモデルは 400 PROTOCOL_STREAM_UNSUPPORTED を返します。

エラー詳細

エラー対応
400 INVALID_REQUEST_BODY必須値、型、speed、列挙値を確認し、stream を削除します。
400 PROTOCOL_TRANSFORM_FAILEDモデルが受け付けないパラメーター、または未設定の必須項目です。
400 AUDIO_FORMAT_UNSUPPORTED固定形式との不一致。形式省略時は mp3。
401/403キー、権限、モデル制限を確認します。
429Retry-After、レート制限、予算に従います。
502 PROTOCOL_RESPONSE_TRANSFORM_FAILEDプロバイダーの音声が不正、またはレスポンスがサイズ上限を超えました。

失敗したリクエストは音声を生成しません。タイムアウト時でも生成・課金済みの場合があるため、無制限に再試行しません。秘密や機密テキストではなく X-Gateway-Trace-ID を保存してください。URL 取得、再エンコード、タスク照会は非対応です。

成功時の MIME は通常 audio/mpeg、audio/ogg、audio/aac、audio/flac、audio/wav、PCM の application/octet-stream です。SSE 対応のモデルでは stream_format=sse を利用できます。400 は入力または形式、429 は Retry-After、502 はプロバイダーのレスポンスを解析できないかサイズ上限超過です。

オンライン体験

Playground とモデル詳細の「今すぐ試す」では音声出力、ボイス、MP3/WAV/Opus/AAC/FLAC を選択し、結果を再生・保存できます。モデルが選択したボイスと形式に対応している必要があります。出力形式が固定のモデルには同じ形式を指定してください。未加工 PCM の再生には対応せず、音声レスポンスは Chat JSON ではなく音声バイトとして扱います。