スピーチ(Speech)生成 API
インターフェースの説明
スピーチ(Speech)は、原稿または一言の説明から「話す/スピーチ」音声を生成します。背景音楽の有無を選べます。 スピーチ、挨拶、ナレーション、口播原稿、音声コンテンツなどの用途に向いています。
ご注意:本エンドポイントが生成するのは話し音声であり、歌ではありません(旋律も歌唱ボーカルもありません)。 歌が必要な場合はひらめきモード生成 API またはプロモード生成 APIをご利用ください。
エンドポイント: POST /api/music/speech
課金: 有料、現在は既定で 1 回 0.6 元。通常は 1 回につき 2 件の音声が返ります。実際の請求額は現在の管理画面の価格設定に従います。
Max Mode / Variety: 本エンドポイントは任意パラメータ max_mode と variety(0〜4)に対応しています。
max_mode を有効にするとこの 1 回は 2 倍の価格で課金され(0.6 → 1.2 元/回)、variety に追加課金は
ありません。両者の意味と書き方は新版 API 概要の「高度なパラメータ」の節をご覧ください。
待ち時間とタイムアウト(重要):本エンドポイントは同期インターフェースで、レスポンスが返った時点で初めて注文が受理され生成に投入されます。 実測では多くのリクエストは数秒(1〜10 秒)で返りますが、他の同期生成エンドポイントと同様、極端な場合はより長くかかることがあります。 クライアントのタイムアウトは 300 秒以上に設定してください。 レスポンスが無いことは未生成を意味せず、タイムアウト直後の再試行は注文の重複と二重課金につながります。 接続が切れた場合は少し後に
GET /api/music/songsで確認できます。詳しくは新版 API 概要の「待ち時間とタイムアウト設定」をご覧ください。
コンテンツの適合性:プラットフォームは原稿について著作権とコンテンツポリシーの検査を行います。著作権物(例:他人の歌詞の引用、著名作品の原文そのまま)と判定された場合、今回は生成に失敗し全額が自動返金されます。ご自身の表現に置き換えるか、引用を言い換えに変えてから再試行してください。
リクエストパラメータ
Headers
| パラメータ名 | 型 | 必須 | 説明 |
|---|---|---|---|
| Authorization | string | はい | Bearer YOUR_API_KEY |
| Content-Type | string | はい | application/json |
Body パラメータ
| パラメータ名 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
| script | string | はい | - | 原稿全文。最大 3000 文字(超過は 400 を返し、課金なし) |
| tone | string | いいえ | - | 語気/語速/感情/場面の描写。例「情熱的で力強く、語速は遅いところから速く;学校の講堂」。最大 1000 文字 |
| song_title | string | いいえ | - | タイトル。最大 100 文字 |
| gender | string | いいえ | 指定なし | 話者の性別:m、f(male、female も可)。同じ値を vocal_gender で渡すこともできます |
| backing_music | boolean | いいえ | true |
背景音楽を付けるか。false は人の声だけのスピーチ |
| model | string | いいえ | suno-v6 |
対客モデル名:suno-v6、suno-v6-wild、suno-v6-mini |
| wait_completion | boolean | いいえ | false |
生成完了を待ってから返すか |
| max_mode | boolean | いいえ | false |
有効にすると今回 2 倍価格で課金 |
| variety | integer | いいえ | - | スタイル変化の度合い 0-4。概要の「高度なパラメータ」を参照 |
本エンドポイントは
duration(長さパラメータ)に対応していません:渡すと HTTP 400 を返し、黙って無視することはしません。 スピーチの長さはscriptの内容量で決まります。
リクエスト例
最小リクエスト(原稿だけ)
curl -X POST https://www.suno-api.io/api/music/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--max-time 300 \
-d '{
"script": "先生の皆さん、生徒の皆さん、こんにちは!本日の私のスピーチのテーマは「時を無駄にせず、力強く前へ」です。"
}'
完全なリクエスト(語気・性別を指定し、背景音楽をオフ)
curl -X POST https://www.suno-api.io/api/music/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--max-time 300 \
-d '{
"script": "Good evening everyone, thank you all for coming to celebrate this special day with us.",
"tone": "warm and slow, wedding reception",
"song_title": "Wedding Toast",
"gender": "f",
"backing_music": false,
"model": "suno-v6"
}'
Python 例
import requests
response = requests.post(
'https://www.suno-api.io/api/music/speech',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'script': '皆さん、こんにちは。今週の進捗をご報告します。',
'tone': '落ち着いて明瞭に、会議報告',
'gender': 'male',
'backing_music': True,
},
timeout=300,
)
response.raise_for_status()
items = response.json() # 通常 2 件
for item in items:
print(item['song_id'], item['status'])
パラメータの説明
script(原稿、必須)
- 話したい内容をそのまま貼り付けてください。一言の説明を書いてモデルに原稿を書かせることもできます (例「20 点差で負けているチームへの中間激励、小声から全身全霊の叫びへ」)。
- 改行、段落、
[間]のような舞台指示もそのまま書けます。モデルはできるだけ従います。 - 上限は 3000 文字(Unicode 文字で数え、漢字 1 字は 1 文字)。超過は 400 を返し、課金されません。
tone(語気と場面、任意)
「何を話すか」ではなく「どう話すか」を描写します。語気、語速/リズム、感情、場面の 4 種類を含めるとよいです。
情熱的で力強く、語速は遅いところから速く、間をはっきりと;学校の講堂、全校の師弟に向けて
温かくやわらかく、語速はゆるやかに;結婚披露宴の会場
落ち着いて抑制的、一定の速さで明瞭に;取締役会での報告
上限は 1000 文字。入力しない場合、モデルが script の内容から判断します。
gender / vocal_gender(話者の性別、任意)
- 男性は
mまたはmale、女性はfまたはfemaleを渡します。サーバーはm/fに正規化します。 - どちらのフィールド名も使えます。どちらか一方で結構です:本エンドポイントの推奨は
genderです。すでに プロモードを使っている場合はvocal_genderをそのまま使っても構いません。 - **渡さない場合は「指定なし」**で、モデルが判断します。
backing_music(背景音楽、任意)
- 既定は
true(背景音楽あり)で、Suno ウェブ版の既定と同じです。 falseを渡すと人の声だけのスピーチになり、あとから自分で BGM やナレーションを載せたい場合に便利です。- JSON の真偽値
true/falseを使ってください。文字列"true"、"1"も受け付けますが、真偽値を推奨します。
model(モデル、任意)
3 つの対客モデルはすべて利用でき、価格は同じです(1 回 0.6 元)。スピーチは Suno v6 系のエンジンで生成され、入力しない場合は既定の
suno-v6 として処理されます。明確な希望がなければ通常このフィールドは不要です。
パラメータ検証とテキスト上限
以下は HTTP 400 を返し、いずれも課金前に止めるため費用は発生しません:
| 状況 | エラーメッセージ |
|---|---|
script が無い、または空白のみ |
script is required for speech |
gender が m/f/male/female 以外 |
gender must be one of m, f, male, female |
backing_music が真偽値でない |
backing_music must be a boolean |
未対応の duration を渡した |
duration is not supported on /api/music/speech |
テキストフィールドの上限
超過時も HTTP 400 を返し、生成に進まず、事前課金もありません。数え方は Unicode 文字(漢字 1 字は 1 文字)で、
先頭・末尾の空白も含みます:
| フィールド | 上限 |
|---|---|
script(原稿) |
3000 文字 |
tone(語気の描写) |
1000 文字 |
song_title(タイトル) |
100 文字 |
エラーメッセージは script must not exceed 3000 characters; received 4120 の形です。
最初の語が上限を超えたフィールド名で、末尾が実際の文字数なので、400 を受け取ったらこの 2 つの数字でそのまま切り詰められます。
レスポンス結果
レスポンスは他の生成エンドポイントと完全に同じ楽曲配列(通常 2 件)です。song_id を保存し、
楽曲照会 API で最終状態と音声アドレスを照会してください:
[
{
"song_id": "b7529174-b495-465b-8c5e-cd21bea2df8c",
"song_title": "時を無駄にせず",
"status": "pending",
"audio_url": "",
"cover_url": "",
"video_url": "",
"model_version": "suno-v6",
"generation_type": "generate",
"created_at": "2026-10-08T01:00:00Z"
}
]
| フィールド | 説明 |
|---|---|
song_id |
曲の ID。以降の照会・ダウンロードはこれを使います |
status |
pending(送信済み・生成中)、processing、completed(完了)、failed(失敗) |
song_title |
タイトル(song_title を渡していない場合はモデルが生成し、空になることもあります) |
audio_url |
音声アドレス。生成完了前は空で、完了後はそのまま再生・ダウンロードできます |
生成失敗と返金
生成に失敗した場合、今回の費用は自動で全額返金されます。カスタマーサポートへの連絡は不要です。失敗理由はレスポンス、または
楽曲照会 API の error_message で確認できます。
最も多い失敗原因はコンテンツが著作権物と判定されることです。例えば:
Your lyrics contain copyrighted material. Please change it and try again.
その場合は原稿をご自身の表現に置き換える(または引用を言い換えに変える)うえで再提出してください。
よくある質問
Q:なぜ「歌」ではなく「話し声」が生成されるのですか? A:本エンドポイントはスピーチ用で、出力は話し音声です。歌が必要な場合は生成/プロモードのエンドポイントをご利用ください。
Q:なぜ毎回 2 件返るのですか?
A:本プラットフォームの他の生成エンドポイントと同様、1 回の生成で 2 件の候補が出ます。song_id ごとに照会し、満足できる 1 件を選んでください。
Q:長さはどう制御しますか?
A:script の長さで決まります。本エンドポイントは duration パラメータを受け付けません。
Q:音色(例えば自分のクローン音声)を指定できますか?
A:現行版では未対応です。スピーチは固定の話者音色を使い、gender で男性/女性を指定できます。
自分の声が必要な場合はボイスプロフィール作成 API(推奨)の関連機能をご利用ください。
Q:tone を入力しないとどうなりますか?
A:モデルが script の内容から語気とリズムを判断します。あるスタイルを安定して再現したい場合は、語気・語速・場面を tone に書くことをおすすめします。
互換フィールド
| 推奨フィールド | 互換フィールド | 説明 |
|---|---|---|
gender |
vocal_gender |
どちらか一方を渡せばよく、m/f/male/female のいずれも可 |
新規の接続では snake_case に統一してください。その他のフィールド(script、tone、song_title、backing_music)に camelCase の別名はありません。
次のステップ
song_id を取得したら:
- 楽曲照会 API で生成状態と音声アドレスを照会する;
- 完了後、楽曲メディアのダウンロードと試聴 API でダウンロードまたは試聴する;
- まとめてダウンロード・転送したい場合は、ダウンロードセンターの関連エンドポイントをご覧ください。