TTS API リファレンス
Shisa TTS API は 2 つのエンドポイントを公開しています。1 つは音声を生成するもの、もう 1 つは利用可能な音声を一覧取得するものです。どちらも標準のベアラートークンで認証します。
Authorization: Bearer YOUR_API_KEY
エンドポイント
音声生成
POST https://api.shisa.ai/tts
テキストを音声に変換します。リクエストされた形式のバイナリ音声データを返します。
音声一覧
GET https://api.shisa.ai/tts/voices
利用可能なすべての音声のメタデータ、対応形式、ストリーミング対応状況を含む JSON 配列を返します。カタログについては音声を参照してください。
リクエストパラメータ
POST /tts エンドポイントのパラメータ。JSON ボディとして送信します。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
voice_id | string | 必須 | 使用する音声の UUID。利用可能な ID は GET /tts/voices から取得します。 |
text | string | 必須 | 音声に変換するテキスト。 |
format | string | 必須 | 出力音声形式。選択した音声がサポートしている必要があります。mp3、wav、ogg、pcm、flac のいずれか。 |
stream | boolean | 任意 | true の場合、リアルタイム再生用にチャンク化されたストリームとして音声を返します。streaming: true の音声でのみ利用できます。デフォルトは false。 |
レスポンス
POST /tts — バイナリ音声
成功時、API は適切な Content-Type ヘッダー(例: audio/mp3)付きの生バイナリ音声データを返します。レスポンスボディをそのままファイルに保存してください。
# The response is binary audio data — save directly to file
curl -s -X POST "https://api.shisa.ai/tts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"voice_id": "c3abe79a-99b3-4a5f-8549-f5cb42985291", "format": "mp3", "text": "テスト"}' \
--output speech.mp3
GET /tts/voices — JSON
利用可能な音声オブジェクトの JSON 配列を返します。
[
{
"id": "c3abe79a-99b3-4a5f-8549-f5cb42985291",
"description": "Young male Japanese voice...",
"language": "Japanese & English",
"gender": "Male",
"formats": ["mp3", "ogg", "pcm"],
"streaming": true
}
]
音声オブジェクトのフィールド:
| フィールド | 型 | 説明 |
|---|---|---|
id | string (uuid) | リクエストで voice_id として使用する UUID。 |
description | string | 人間が読める音声の説明。 |
language | string | 対応言語。 |
gender | string | 音声の性別(Male、Female、Neutral)。 |
formats | array | 対応する出力音声形式。 |
streaming | boolean | 音声がリアルタイムストリーミングに対応しているかどうか。 |
エラーハンドリング
エラーは次の形式の JSON で返されます。
{
"context": ["..."],
"code": 104,
"name": "ErrAuthenticationFailed",
"error": "Authentication error: Invalid token"
}
エラーコード
| ステータス | 原因 | 対処方法 |
|---|---|---|
400 | パラメータの欠落または不正 | voice_id、text、format フィールドを確認してください。 |
400 | 音声に対応していない形式 | 音声の formats 配列に記載された形式を使用してください。 |
401 | API キーが無効または未設定 | Authorization: Bearer ヘッダーを確認してください。 |
429 | レート制限超過 | 指数バックオフで待機してリトライしてください。 |
500 | 内部サーバーエラー | リクエストをリトライするか、サポートに連絡してください。 |
警告
リクエストされた format が選択した音声の formats 配列に含まれていない場合も 400 が返されます。音声を生成する前に、GET /tts/voices で音声の対応形式を確認してください。