メインコンテンツまでスキップ

音声合成API

音声合成APIは、テキストとvoice_idを受け取り、MP3またはWAV音声を 返します。Base URLはhttps://api.kitschlabs.comで、公開APIへのリクエストは xi-api-keyヘッダーで認証します。

API概要

項目
Base URLhttps://api.kitschlabs.com
認証xi-api-key: <API_KEY>
デフォルト出力mp3_44100_128 (audio/mpeg)
追加出力wav_24000 (audio/wav)

language_codeスキーマはenkojazhを受け付けます。利用できる 言語と音声はアカウントによって異なる場合があるため、GET /v1/voicesの レスポンスから選択してください。

どのエンドポイントを使用しますか?

MethodEndpoint用途
GET/v1/voices利用可能な音声を取得
POST/v1/text-to-speech/{voice_id}完成した音声ファイルを生成

どのように認証しますか?

すべての公開エンドポイントにxi-api-keyを送信します。例の<API_KEY>を 発行されたキーに置き換え、実際のキーをコードやログに残さないでください。

xi-api-key: <API_KEY>

音声一覧を取得するには?

curl "https://api.kitschlabs.com/v1/voices" \
--header "xi-api-key: <API_KEY>"

音声合成には/v1/voicesレスポンスのvoice_idを使用します。表示名は変更される 可能性があるため、表示名ではなくvoice_idを保存してください。

音声を生成するには?

POST /v1/text-to-speech/{voice_id}にJSONを送信し、レスポンスボディを ファイルに保存します。

curl --request POST \
"https://api.kitschlabs.com/v1/text-to-speech/<VOICE_ID>?output_format=mp3_44100_128" \
--header "xi-api-key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{
"text": "今日も良い一日をお過ごしください。",
"language_code": "ja"
}' \
--output speech.mp3

どのフィールドを送信しますか?

フィールド必須説明
textstringはい合成するテキスト。空文字列は不可
language_codestringいいえenkojazhのいずれか
instructstringいいえ話し方に関する自然言語の指示
speednumberいいえ発話速度。0.25から4
voice_settings.emotion_codestringいいえ利用可能な感情を選択

対応しているテキストタグ

textには[laughter][sigh][en][wa][hnn]タグを含めることが できます。その他の角括弧タグはリクエストエラーとして拒否されます。

{
"text": "本当ですか? [laughter] 私もまったく予想していませんでした。"
}

エラーにはどのように対応しますか?

エラーレスポンスには通常、detail.statusdetail.messagedetail.request_idが含まれます。

{
"detail": {
"status": "rate_limited",
"message": "Rate limit exceeded. Please retry later.",
"request_id": "<REQUEST_ID>"
}
}
ステータス意味推奨対応
400·422リクエスト値が不正body、tag、範囲を修正
401APIキーがない、または無効キーとxi-api-keyヘッダーを確認
402利用可能なcreditが不足請求の状態を確認
404音声が見つからない、またはアクセス不可voice_idとアカウントの権限を確認
429アカウントのリクエスト上限を超過Retry-Afterに従いbackoffを適用
5xx一時的なサーバーエラーrequest IDを記録し、回数を制限して再試行

成功時とエラー時のレスポンスヘッダーに含まれるx-kitsch-request-idを ログに残すと、サポートへの問い合わせや障害追跡に利用できます。