以下文章作者为掘金:橙子三个半。
好消息,好消息,江南皮革。。
开个玩笑,大家好,我是橙子三个半。
今天为大家分享一个我最近开源的项目,基于 JS 逆向调用 suno.ai 接口生成音乐的网站。项目功能不复杂,仅有登录和生成音乐功能(后续考虑接入支付)的demo级产品。
技术栈:
前后端:NextJS、tailwindcss 登录:clerk 支付:正在申请 Lemon Squeezy (待接入) 部署:vercel => GCP (原因在后面有说明)
项目地址:
https://github.com/Alvin-Liu/suno-music-generator
为什么做这个项目?
ChatGPT 的火爆带动了整个 AI 领域的新一轮热潮,最近一个音乐生成网站 suno.ai 成功的带火了娱乐类 AI。Sora 没来, suno.ai 成功的吸引了一大波关注。然而由于官方没有开放 api,想要套壳一个音乐生成网站也不容易。等到官方出来 api,这波热度怕是赶不上了,鉴于身边有一些朋友有了套壳的想法,于是乎,搞点黑科技,周末卷一卷,一个音乐生成 AI 网站写好了。
网站地址:
实现原理
官方没有开放 api,但是官方网站通过 ajax 请求的接口我们可以很容易的获取到:
作为一个前端开发,看到这一堆请求,很容易去搞点事情。分析下请求的链路,大概逻辑如下:
通过 /v1/client?_clerk_js_version=4.70.5 获取 sid;
上一步获取的 sid 拼接路径生成 token 请求路径:/v1/client/sessions/${sid}/tokens/api?_clerk_js_version=4.70.5
执行生成音乐接口:/api/generate/v2/
由于生成音乐的时间较长,需要一直调用 /api/feed 接口解析 feed 信息,过程中可能出现 token 过期等情况,此时需要重新刷新 token 操作,直到获取到最终生成的音乐。
代码已开源,实现细节可访问 Github:
https://github.com/Alvin-Liu/suno-music-generator
部署
开始从狗爹买的域名,太过慢了... 迁移到 cloudflare 略有改善,国内访问还是有点慢,折腾了好久就这样吧
最开始部署在 vercel, 然而生成歌曲的接口较为耗时,流程没有进行优化导致 vercel Hobby 用户部署会报错,因为 maxDuration 最大只支持 10s。没有升级弃了,目前部署在服务器,后续优化,有兴趣部署玩玩的同学如果是vercel Hobby 用户注意这个坑
领取专属 10元无门槛券
私享最新 技术干货