はじめに
読み上げるテキストと、任意で 30 種類の声のいずれか、アクセント、スタイル、ペース、シーン、読み方の短いメモを送ります。会話にする場合は、text の代わりに dialogue と speakers を送ります。タスクは、その声で台本を読み上げた WAV ファイル (24 kHz、16 ビット、モノラル) を 1 つ返します。会話なら最大 2 人の声になります。台本の中の [whispering]、[sighs]、[laughing] のような角括弧の指示は読み上げずに演じられ、句読点が間を決めます。SpicyAPI はコンテンツフィルターを一切適用せず、公式アプリでは通らないスクリプトも書かれたとおりに読み上げられます。課金は返された音声の秒数ごとです。
| 項目 | 値 |
|---|---|
| 入力 | テキスト |
| 出力 | 音声 |
| 必須フィールド | text (1〜5,000 文字) または dialogue (最大 20 行) |
| オプションフィールド |
|
| 結果 | WAV ファイル 1 つ (24 kHz、16 ビット、モノラル) |
| 最長クリップ | 16,384 音声トークン |
| 課金対象の数量 | 返された音声の秒数 (ファイルから計測) |
| 保存期間 | 生成された音声は 14 日間保存されます |
リクエストパラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
text | いいえ | 実際に話す言葉を、書いたとおりに指定します。[whispering] や [sighs] のような角括弧付きの指示は読み上げられるのではなく演じられます。 1 文字以上 · 5000 文字以内 |
dialogue | いいえ | text の代わりに使う、最大 2 人の声による台本付きの会話です。最大 20 行で、各行に speaker (speakers にある名前) と 250 文字以内の text を指定します。 1 件以上 · 20 件以内 |
speakers | いいえ | dialogue の配役です。1 人か 2 人分を指定し、それぞれに行から参照される name と |
voice_id | いいえ | 固定のキャラクターを持つ 30 種類の既定音声のいずれかを指定します。既定値は Kore です。 |
style | いいえ | 全体の話し方です。空欄にすると、そのボイス本来の話し方で読みます。 |
pace | いいえ | 読み上げのリズムです。natural、 |
accent | いいえ | 読み上げに使う英語のアクセントです。省略すると声本来のアクセントのままです。 |
instructions | いいえ | 読み方の自由記述の指示です。速さ、気分、マイクとの距離、聞き手などを書きます。 1000 文字以内 |
scene | いいえ | どこで誰に向けて話すかの説明です (例:「真夜中過ぎの静かなホテルの部屋」)。演じ方に反映され、読み上げられません。 500 文字以内 |
temperature | いいえ | テイク間のバリエーションを 0 から 2 の範囲で指定します。値を大きくするほど演じ方が予測しにくくなります。 |
料金
$0.00032 / 秒
返された音声の秒数に応じて課金されます。タスクの実行中は 660 秒分に相当する金額が保留され、音声が計測され次第、未使用分は解放されます。
ユースケース
オーディオブックと長尺ナレーション
章、就寝前の物語、連載フィクションを、安定したナレーターの声で読み上げます。一度音声を選んだらそのまま使い続けられ、章をまたいでも同じ声が一貫して聞こえます。
キャラクターやコンパニオンの声
チャットキャラクターに専用の声を与えられます。[whispering] の指示と話し言葉風の短い文を組み合わせると、ただのテキストが 1 人のリスナーに向けたセリフのように聞こえます。
無検閲のオーディオストーリー
規制のないスクリプトは書かれたとおりに読み上げられます。当社のテストでは、送った独白とナレーションの一語一語をモデルが読み上げ、[sighs] や [gasps] のような角括弧付きの指示は、読まれずに演じられました。
動画用の音声トラック
ここでセリフを生成し、その WAV をトーキングアバターやリップシンクのモデルに渡せば、顔がそれを演じます。音声の長さが後続のクリップの長さを決めます。
プロンプトガイドと実践のヒント
台本をテキストで送信する
ポーズ用の句読点も含め、実際に話してほしいとおりに書きます。最大 5,000 文字まで対応します。
音声を選ぶ
voice_idの既定値は Kore です。30 種類の音声にはそれぞれ固定のキャラクターがあるため、一度選んだらシリーズ全体で使い続けてください。演出を台本内に書き込む
[whispering]、[sighs]、[laughing]、[gasping] のような指示を、演じてほしい箇所に角括弧で書き込みます。これらは読み上げられるのではなく、演じられます。
返される内容
タスクごとに WAV ファイルを 1 つ返します: 24 kHz、16 ビット、モノラル PCM。ファイルは SpicyAPI のストレージにコピーされ、14 日間保存されます。結果に単語単位のタイミング情報や字幕は含まれません。
音声を選ぶ
voice_id には 30 種類の既定音声のいずれかを指定でき、既定値は Kore です。各音声には固定のキャラクターがあり、たとえば Kore は力強く、Charon は説明的、Puck は明るく、Enceladus はささやくよう、Achernar は柔らかく、Algenib はしゃがれた声、Sulafat は温かく、Gacrux は落ち着いた大人の声です。音声は台本の言語によって変わりません。
読み上げの演出を制御する
text と voice_id のほかに、次の設定で読み方を形作れます。
style、accent、paceで話し方、英語のアクセント、リズムを決めます。省略すると、声本来のものが使われます。instructionsには読み方を自由に書き、sceneにはどこで誰に向けて話すかを書きます。どちらも読み上げられません。temperature(0〜2) で、テイク間で読み方がどれだけ変わるかを決めます。
text の中では、次のように指示します。
[whispering]、[sighs]、[laughing]、[gasping]のような角括弧付きの指示は、読み上げられるのではなく演じられます。- カンマ、三点リーダー、句点でポーズが決まります。
このモデルでは、1 人の声に対して送った演出指示がクリップの冒頭で読み上げられることがあります。そのため、1 人の声のリクエストに style・accent・pace・instructions・scene が含まれる場合、SpicyAPI はモデルの 2 人用の形式に切り替え、何も話さない 2 人目を加えて送ります。これで指示は音声に入りません。課金は変わらず、返された秒数分だけです。
1 つのクリップに 2 人の声
会話にする場合は、text の代わりに dialogue を送り、配役を speakers に入れます。1 人か 2 人分を指定し、それぞれに name、voice_id、任意で accent、style、pace、profile (話し手の短い説明。読み上げられません) を設定します。dialogue の各行は {speaker, text} で、speaker にはこれらの名前のいずれかを書きます。行は順番どおりに演じられ、1 行 250 文字までで最大 20 行です。話し手が省いた設定には、最上位の accent、style、pace が使われます。会話全体は 1 つの WAV ファイルで返り、ほかのリクエストと同じく秒単位で課金されます。
長さとタイミング
text は最大 5,000 文字まで対応します。テストでは、270 文字の段落が 20〜24 秒の音声になりました。モデルは 1 クリップあたり 16,384 音声トークンで停止します。ほとんどのタスクは 1 分以内に完了します。
課金
返された音声の秒数に応じて課金され、ファイルから計測されます。タスクの実行中は 660 秒分に相当する金額が残高から保留され、タスクが確定した時点で未使用分が解放されます。失敗したリクエストには課金されません。
コンテンツ
SpicyAPI はコンテンツフィルターを一切追加していません。テストでは、規制のないスクリプトが一語一語そのまま読み上げられ、[sighs] や [gasps] のような角括弧付きの指示は、読まれずに演じられました。
SpicyAPI はコンテンツフィルターを追加せず、スクリプトは書かれたとおりに、一切和らげずに読み上げます。送信する台本と、生成された音声の使い方 (実在の人物の発言であるかのように見せないことを含む) についての責任はユーザーにあります。
API クイックスタート
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "google/gemini-3.8-flash-tts/text-to-speech",
"input": {
"text": "Welcome back. Your files finished rendering a minute ago and are ready to download.",
"voice_id": "Kore"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
認証、完全なスキーマ、ポーリング、エラー処理は API リファレンスを参照してください。







