ガイド
テキスト読み上げエンドポイント
テキスト読み上げのリクエストパラメータ、バイナリレスポンスとよくある問題
テキスト読み上げエンドポイント
プラットフォームは AI Platform 互換のテキスト読み上げエンドポイントを提供します。利用可否は現在の API keys のグループとモデルカタログによって決まります。
まず GET /v1/models で利用可能な音声モデルが存在することを確認してから、このエンドポイントを呼び出してください。
リクエスト
| 項目 | 値 |
|---|---|
| メソッド | POST |
| パス | /v1/audio/speech |
| 認証 | Authorization: Bearer <API_KEY> |
| リクエストヘッダー | Content-Type: application/json |
| レスポンス | バイナリ音声(JSON ではない) |
返されるのは バイナリ音声 であり、JSON ではありません。そのため --output(または -o)
でレスポンスをそのままファイルに書き出してください。JSON として解析すると、空のレスポンスボディになります。
voice の利用可能な値は現在のモデルによって決まり、すべてのモデルが alloy を受け付けるわけではありません。
リクエスト
curl -X POST "$LOCOPAL_BASE_URL/v1/audio/speech" \
-H "Authorization: Bearer $LOCOPAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "从 /v1/models 选择的音频模型 ID",
"input": "欢迎使用 LocoPal Ai。",
"voice": "alloy",
"response_format": "mp3"
}' \
--output speech.mp3リクエストパラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
model | string | 必須。GET /v1/models が返す音声モデルの data[].id。 |
input | string | 必須。合成するテキスト。長さの上限は実際のモデルに準じる。 |
voice | string | 音色名。利用可能な音色は現在のモデルによって決まります。モデルの詳細に準じてください。 |
response_format | string | 出力音声の形式(例:mp3)。対応形式は実際のモデルに準じる。 |
speed | number | 話速。サポートの有無と値の範囲は実際のモデルに準じる。 |
音色、形式、話速の利用可能な範囲はモデルによって異なります。すべてのモデルが
alloyやmp3に対応していると仮定しないでください。 また、特定のモデルの音色一覧をコードにハードコードしないでください。
レスポンス
成功時
成功レスポンスの本文はバイナリ音声データであり、JSON ではありません。そのままファイルに書き込むか、クライアントへストリーミング転送してください。
# 保存为文件
curl ... --output speech.mp3
# 检查确实是音频而不是 JSON
file speech.mp3失敗時
失敗時は error オブジェクトを伴う 2xx 以外のレスポンスを返します。構造はモデルのエンドポイントと同一です:
{
"error": {
"code": "invalid_parameter",
"message": "..."
}
}よくある失敗原因:
| 状況 | 挙動 | 対応 |
|---|---|---|
| グループに音声モデルがない | model_not_found またはモデル利用不可 | GET /v1/models で利用可能な音声モデルを確認する |
| 音色がそのモデルでサポートされていない | invalid_parameter | そのモデルがサポートする音色に変更する |
| 形式がそのモデルでサポートされていない | invalid_parameter | サポートされている response_format に変更する |
| リクエストが過多 | HTTP 429 | メッセージに従ってバックオフしリトライする |
サーバー側での実装の推奨事項
テキスト読み上げは同期エンドポイントで、レスポンスがそのまま音声データです。実装時は次に注意してください:
- JSON として解析しないでください。まず HTTP ステータスと
Content-Typeを判定し、 失敗時のみ JSON としてerrorを読み取ってください。 - 音声をそのままブラウザへ透過転送する際に
Content-Typeの設定を忘れないでください。 忘れるとブラウザがテキストとして処理してしまいます。 inputの長さを制御してください。非常に長いテキストは業務側で分割し、分割ごとに合成してから結合し、 1 回のリクエストで上限を超えないようにしてください。- 音声ファイルは自分のストレージへ転存することを推奨します。プラットフォームが返す一時的な結果に長期的に依存しないでください。
- 業務バックエンドでは高頻度で重複する合成結果をキャッシュし、二重課金を避けてください。
非同期音声タスク
この同期エンドポイントのほか、プラットフォームは非同期の音声生成機能(BGM、効果音など)も提供しています。 これらのタスクのステータスと成果物はコンソールの「タスクログ」で照会でき、扱い方は 動画タスクと同様です。 作成後はタスク ID を保存し、照会エンドポイントで終端状態までポーリングしてください。重複して作成しないでください。
課金
音声エンドポイントの課金方式はモデルマーケットのモデル詳細に準じ、Token 単位、回数単位、時間単位のいずれかで課金される場合があります。 課金と精算のルールは課金と請求を参照してください。
