Suno API: 开启 AI 音乐创作新纪元
在人工智能飞速发展的今天,AI 在音乐创作领域也展现出了惊人的潜力。Suno.ai 作为一款杰出的 AI 音乐服务,其强大的音乐生成能力令人瞩目。然而,官方 API 尚未推出,这让许多开发者感到遗憾。为了满足开发社区的需求,gcui-art 团队开发了 Suno API 这个开源项目,让开发者能够方便地调用 Suno.ai 的音乐生成 AI,并轻松地将其集成到各种应用中。
项目亮点
Suno API 具有以下几个突出特点:
-
完美实现: 该项目完美实现了 app.suno.ai 的创作 API,确保了与原始服务的高度一致性。
-
自动保活: 系统会自动保持账户处于活跃状态,无需用户手动操作。
-
兼容性强: 兼容 OpenAI 的
/v1/chat/completions
API 格式,便于开发者快速集成。 -
支持自定义模式: 允许用户设置歌词、音乐风格、标题等参数,提供更灵活的创作选项。
-
一键部署: 支持一键部署到 Vercel 平台,大大简化了部署流程。
-
广泛适配: 除标准 API 外,还适配了 GPTs 和 Coze 等 Agent 平台的 API Schema,可作为 LLM 的工具/插件/Action 使用。
-
开源许可: 采用宽松的开源许可证,允许用户自由集成和修改。
快速上手
要开始使用 Suno API,您需要按照以下步骤操作:
-
获取 Cookie: 首先,您需要从 app.suno.ai 获取您账户的 Cookie。具体步骤如下:
- 使用浏览器访问 app.suno.ai
- 打开浏览器控制台(按 F12 或访问开发者工具)
- 切换到"网络"标签页
- 刷新页面
- 找到包含关键词
client?_clerk_js_version
的请求 - 点击该请求并切换到"标头"标签
- 找到"Cookie"部分,复制 Cookie 的值
-
部署项目: 您可以选择以下两种部署方式之一:
-
配置 Suno API:
- 如果使用 Vercel 部署,请在 Vercel 仪表板中添加环境变量
SUNO_COOKIE
,值为第一步获取的 Cookie。 - 如果本地运行,请在
.env
文件中添加以下内容:SUNO_COOKIE=<your-cookie>
- 如果使用 Vercel 部署,请在 Vercel 仪表板中添加环境变量
-
运行 Suno API:
- Vercel 部署:点击 Vercel 仪表板中的"Deploy"按钮,等待部署完成。
- 本地运行:执行
npm run dev
命令。
-
测试 API: 访问
/api/get_limit
接口进行测试。如果返回类似以下结果,说明程序运行正常:{ "credits_left": 50, "period": "day", "monthly_limit": 50, "monthly_usage": 50 }
API 参考
Suno API 目前主要实现了以下几个 API:
/api/generate
: 生成音乐/v1/chat/completions
: 以兼容 OpenAI API 格式的方式生成音乐/api/custom_generate
: 自定义模式生成音乐(支持设置歌词、音乐风格、标题等)/api/generate_lyrics
: 基于提示生成歌词/api/get
: 获取音乐信息/api/get_limit
: 获取配额信息/api/extend_audio
: 延长音频长度/api/clip
: 获取片段信息/api/concat
: 从扩展生成完整歌曲
更详细的 API 文档可以在 suno.gcui.ai/docs 查看。
集成示例
Suno API 提供了 Python 和 JavaScript 的集成示例代码,方便开发者快速上手。以下是一个简单的 Python 示例:
import time
import requests
base_url = 'http://localhost:3000'
def generate_audio_by_prompt(payload):
url = f"{base_url}/api/generate"
response = requests.post(url, json=payload, headers={'Content-Type': 'application/json'})
return response.json()
if __name__ == '__main__':
data = generate_audio_by_prompt({
"prompt": "A popular heavy metal song about war, sung by a deep-voiced male singer, slowly and melodiously. The lyrics depict the sorrow of people after the war.",
"make_instrumental": False,
"wait_audio": False
})
ids = f"{data[0]['id']},{data[1]['id']}"
print(f"ids: {ids}")
for _ in range(60):
data = get_audio_information(ids)
if data[0]["status"] == 'streaming':
print(f"{data[0]['id']} ==> {data[0]['audio_url']}")
print(f"{data[1]['id']} ==> {data[1]['audio_url']}")
break
time.sleep(5)
社区贡献
Suno API 是一个开源项目,欢迎社区成员以多种方式支持和贡献:
- Fork 项目并提交 Pull Requests
- 提出合理的建议和 bug 报告
- 通过 Sponsor 按钮赞助项目
- 向他人推荐项目,为仓库加星,或在使用后添加反向链接
结语
Suno API 作为一个非官方的开源项目,为开发者提供了一个强大而灵活的 AI 音乐生成工具。它不仅完美实现了 Suno.ai 的创作 API,还提供了多种部署和集成选项,使得将 AI 音乐创作能力融入各种应用变得前所未有的简单。
随着项目的不断发展和完善,我们期待看到更多基于 Suno API 的创新应用涌现。无论您是想要为您的应用添加 AI 音乐创作功能,还是对 AI 音乐生成技术感兴趣,Suno API 都是一个值得关注和尝试的项目。
让我们一起探索 AI 音乐创作的无限可能,用科技的力量谱写新的音乐篇章!