做了个 AI 音频分离站,从模型选型到部署的一些踩坑

5 小时 41 分钟前
 codeugar

背景

之前自己练琴想扒一首歌的贝斯线,市面上的工具要么只能分 4 轨 ( vocals/drums/bass/other ),要么订阅一个月用两次就忘了取消。 看到 Meta AI 的 htdemucs_6s 模型能分 6 轨(多了 guitar 和 piano ), 就花了几个月做了个站。

技术上踩了一些坑,分享出来给可能也想做类似东西的同学参考。

一、模型选型:为什么是 htdemucs

主流开源音频分离模型:

对比测了 spleeter / htdemucs / BS-RoFormer:

如果是离线批处理或专业制作,BS-RoFormer 应该是更好的选择。

二、推理平台:为什么是 Replicate

最早自己开了 RunPod 4090 实例跑,跑通没问题,但有几个问题:

  1. 没人用的时候 GPU 还在烧钱,每小时 $0.40 起步
  2. 自己得维护容器、模型权重、队列、错误重试一整套
  3. 流量高峰时单实例扛不住,要做多实例 + 负载均衡

后来转去 Replicate ,按秒计费,没人用就 0 成本。 htdemucs 一首 3 分钟的歌大概 25-40 秒推理时间, 按 A40 GPU 计费下来单首 GPU 成本大概 2-3 美分。 对于一个早期阶段、流量不稳定的产品,按需付费比固定 GPU 划算太多。

对比过的几家:

三、几个非模型层面的坑

  1. YouTube 链接处理:用户贴 URL 比让他下载文件转格式 UX 好太多。 yt-dlp 是必备,但要处理大量 edge case (年龄限制、地区限制、live 流), 还得加超时和文件大小限制防滥用。

  2. 多轨同步播放器:6 个 stem 同时播放还要支持 mute/solo/seek , 一开始用 howler.js 单实例切换完全不行( latency 差几十 ms 听得出来), 最后用 Web Audio API 自己写了个共享 AudioContext 的播放器。

  3. 格式转换:用户上传可能是 MP3/WAV/FLAC/M4A/OGG/WEBM 各种格式, htdemucs 只吃 WAV 。前置 ffmpeg 转码层是必须的, 但 ffmpeg 在 Replicate 容器里跑得慢, 后来改成在自己服务器转码完再丢给 Replicate ,整体延迟降了 30%。

  4. BPM/key 检测:用 librosa 自己算的,但 librosa 的 key detection 在电子乐上准确率一般,准备后续接入 essentia 重做。

四、成品

站点:aistemsplitter.org

有免费额度,够分两三首歌看看质量。如果想多跑几首, V2EX 的同学可以在结账页用 v2ex 这个码,我加了点额度——主要是 想多收一些技术圈的反馈,特别是中文歌的分离效果。

主要想问几个问题:

  1. 有没有人在生产环境用过 BS-RoFormer 跑 C 端?延迟是怎么解的?
  2. Replicate 之外有没有更便宜的 GPU serverless 平台值得试? (需要支持自定义模型权重)
  3. 中文歌(特别是有混响/自动调音的)分离效果一般, 有没有什么改进思路?是该等更好的开源模型,还是有 预处理/后处理的方法可以缓解?

谢谢各位,欢迎拍砖。

244 次点击
所在节点    分享创造
3 条回复
yanhuqing666
3 小时 44 分钟前
订阅问题“Replicate 之外有没有更便宜的 GPU serverless 平台值得试?”结论
LuliYanng
2 小时 33 分钟前
我之前也搞过 不过那时候好像这些 GPU serverless 还不成熟,我还是租国内云 GPU 厂商的 7 天特惠 T4 GPU 玩的。至于你说的分离效果,有能力你当然可以自己改进模型😝 不过感觉近些年好像也没什么进展了 当时还想着有没有模型能够强大到把节奏吉他和主奏吉他给分离出来的,不过等了两三年了,似乎没什么消息,估计已经发展到头了吧(至少对于这个领域的需求来说)
AuYuHui
2 小时 31 分钟前

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1209191

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX