直接答案:调用
POST /api/music/speech,把全文放进script,用tone描述语气、语速和场景,再按需要设置gender与backing_music。每次通常返回 2 条说话音频,保存song_id后继续查询和下载。
Speech 和音乐生成不是一回事
| 用途 | 接口 | 输出 |
|---|---|---|
| 演讲、致辞、旁白、口播 | /api/music/speech | 说话音频,可带背景音乐 |
| 有旋律的歌曲 | /api/music/create | 唱歌音频 |
| 自定义歌词与风格 | /api/music/create/custom | 专业模式歌曲 |
如果你要的是“说”,而不是“唱”,Speech 才是正确入口。
最小请求
curl -X POST "https://www.suno-api.io/api/music/speech" -H "Authorization: Bearer $SUNO_API_KEY" -H "Content-Type: application/json" --max-time 300 -d '{
"script": "各位老师、各位同学,大家好。今天我分享的主题是坚持与成长。"
}'
接口当前默认 0.6 元/次,通常返回 2 条候选。返回结构与其他生成接口一致,保存每条结果的 song_id。
控制语气、声音和背景音乐
{
"script": "Good evening everyone. Thank you for celebrating this day with us.",
"tone": "温暖柔和,语速平缓;婚礼宴会现场",
"song_title": "Wedding Toast",
"gender": "f",
"backing_music": false,
"model": "suno-v6"
}
| 字段 | 作用 | 建议 |
|---|---|---|
script | 演讲稿全文 | v6 最多 5000,必须提供 |
tone | 语气、语速、情绪和场景 | 最多 1000 字 |
gender | 男声 / 女声 | m / f |
backing_music | 是否配背景音乐 | 默认 true,纯口播传 false |
song_title | 标题 | 最多 100 字 |
Python 示例
import requests
response = requests.post(
"https://www.suno-api.io/api/music/speech",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"script": "各位同事,下午好。下面汇报本周的项目进展。",
"tone": "平稳清晰,会议汇报,重点处稍作停顿",
"gender": "m",
"backing_music": False,
"model": "suno-v6",
},
timeout=300,
)
response.raise_for_status()
for item in response.json():
print(item["song_id"], item["status"])
从生成到下载
- 保存返回的
song_id。 - 轮询
POST /api/music/query,直到 completed/playable。 - 调用
/api/music/download-url或/api/music/download-file。 - 需要长期使用时,把文件转存到自己的对象存储。
常见校验错误
| 错误 | 原因 | 处理 |
|---|---|---|
script is required for speech | 没有正文 | 传入非空 script |
duration is not supported | 传了时长参数 | 删除 duration,用稿件长度控制 |
| 400 字数超限 | script / tone / title 过长 | 按错误中的实际字数裁剪 |
| 版权内容失败 | 稿件包含受限原文 | 改用自有表述或转述;失败自动退款 |
常见问题
Speech API 会生成歌曲吗?
不会。它只生成说话音频,可选背景音乐;唱歌需要使用音乐生成接口。
演讲时长怎么控制?
由 script 内容长度决定,接口不接受 duration 参数。
支持克隆自己的声音吗?
当前不支持,只能用 gender 选择男声或女声;克隆音色请走对应的音色接口。
接口文档:Speech 生成 API;继续阅读 歌词时间轴、返回字段说明、歌曲查询。


