音声 API ガイド
POST /v1/audio/speech でテキストを音声に変換します。JSON を送り、既定では音声バイト列を受け取ります。Chat メッセージ、JSON の URL、非同期タスクではありません。音声を理解して文章を得る場合は音声入力対応のテキストモデルを使います。
モデル・音色・形式
音声 API マッピングを持つモデルを選び、YOUR_MODEL_ID と REPLACE_WITH_SUPPORTED_VOICE を置き換えます。音色名は共通ではなく、対応する名前またはカスタム音色 ID が必要です。INONEAPI_API_KEY はサーバーに設定します。
| 項目 | 用法 |
|---|---|
model | 必須の公共モデル ID。 |
input | 必須の空でない文章。自動分割、切り詰め、SSML 変換はしません。 |
voice | 必須の音色名、または対応する {"id":"voice_123"}。 |
instructions | 対応モデル向けの任意の口調・感情指示。 |
response_format | 既定 mp3。モデルや固定形式マッピングに合わせます。 |
speed | 任意の 0.25–4。上流の範囲がより狭い場合があります。 |
stream_format | 既定 audio。sse は対応するネイティブ経路のみ。 |
生成と保存
Node.js 20+ の例は HTTP 状態を確認して一時ファイルに保存し、完了後に名前を変更します。失敗時は途中のファイルを削除します。単一タスク用の固定名なので、並行処理では各リクエストに固有の一時パスを使ってください。
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":"Welcome to InOneAPI.","voice":"REPLACE_WITH_SUPPORTED_VOICE","response_format":"mp3"}' \
--output speech.mp3cURL の --fail-with-body はエラー JSON を speech.mp3 に書く場合があります。再生前に終了コードを確認します。成功バイナリーに response.json() を使いません。長さとエンコーディングは実データで確認します。
出力形式
| 形式 | 一般的な MIME | 注意点 |
|---|---|---|
| mp3 | audio/mpeg | 既定、多くのプレイヤーで利用可能。 |
| opus | audio/ogg | Ogg Opus 対応を確認。 |
| aac | audio/aac | コンテナ互換性は上流とプレイヤー次第。 |
| flac | audio/flac | 可逆圧縮で大きくなる場合があります。 |
| wav | audio/wav | ヘッダー付き。実際のサンプリング条件を確認。 |
| pcm | application/octet-stream | 生データ。周波数、ビット深度、チャンネル、エンディアンが必要。 |
ゲートウェイは変換しません。PCM を WAV に改名してもヘッダーは付きません。固定形式 Base64 マッピングは指定された形式のみ受け付け、省略時は mp3 として検証します。
参照音声
明示的に対応するモデルとマッピングのみ利用可能です。アップロード後、同じキーで Speech を呼び出します。
{
"model": "YOUR_MODEL_ID",
"input": "Welcome to InOneAPI.",
"voice": "REPLACE_WITH_SUPPORTED_VOICE",
"response_format": "mp3",
"input_references": [
{
"type": "audio",
"role": "reference",
"source": {
"type": "file",
"file_id": "file_ioa_0123456789abcdef0123456789abcdef"
}
}
]
}
input_references は OpenAI 標準 Speech の項目ではありません。音声クローン、音色登録、文字起こしを自動提供しません。type は audio と一致し、role はマッピングが対応する必要があります。ファイルを署名 URL に変換し、role を保持します。input、voice、model は引き続き必須です。
ストリーミング配信
既定の stream_format: audio はバイト列です。HTTP 分割送信は SSE ではなく、即時のバイト単位転送も保証しません。保存例はこのモード向けです。
対応するネイティブ経路では stream_format: sse を利用できます。上流固有のイベントと音声断片を解析し、SSE テキスト自体を MP3 に保存しないでください。Chat の stream は送信しません。DSL 変換と Base64 抽出は SSE 未対応で、PROTOCOL_STREAM_UNSUPPORTED を返します。
制限とエラー
400 INVALID_REQUEST_BODY は必須項目、形式、speed、AUDIO_FORMAT_UNSUPPORTED は固定形式、502 PROTOCOL_RESPONSE_TRANSFORM_FAILED は上流 JSON/Base64 やバッファー上限を確認します。401/403 は権限、429 は Retry-After と並行数を確認します。
文字起こし、翻訳、Realtime、タスク照会、自動結合は提供しません。長文はアプリ側で分割し、音色の一貫性と結合を処理します。タイムアウト時も生成・課金済みの場合があるため無制限に再試行しません。X-Gateway-Trace-ID を記録し、機密文章のログを避け、AI 音声であることを利用者に示してください。