微信扫码
添加专属顾问
一文详解AI翻唱全链路:从工具使用到Mac实操,附完整成果与避坑指南。 核心内容: 1. AI翻唱核心概念澄清(非TTS,实为Singing Voice Conversion) 2. 完整五步技术链路拆解(授权→分离→声纹转换→混音→导出) 3. 工具与环境准备及实操流程(Mac配置、工具安装、项目搭建与问题解决)
从人声分离、声纹转换到最终混音,用 Demucs、Seed-VC 和 FFmpeg 在 Apple Silicon Mac 上完成一次真实的 AI 翻唱。
这篇文章不只是介绍几个工具。我会从一个空目录开始,把整条链路完整跑一遍,并把我真实遇到的 macOS 问题一起讲清楚。
完成后,你将得到:
**重要前提:**只处理你有权使用的歌曲、录音和人声。本文不鼓励冒充他人,也不代表获得了原曲或伴奏的发布权。
先澄清一个最容易误解的地方:
AI 翻唱不是让 TTS 照着歌词读一遍。
TTS 擅长的是“把文字变成说话”,而翻唱还需要保留原唱的旋律、音高、节奏、咬字和情感。这类任务更准确的名称是 Singing Voice Conversion,歌声转换。
整条链路可以压缩成五步:
授权歌曲
-> Demucs 分离原唱和伴奏
-> Seed-VC 读取原唱的演唱信息
-> Seed-VC 读取目标参考声的声纹
-> 生成新歌声,再与伴奏混合
各个工具的分工如下:
Seed-VC 内部还会调用几个重要模块:
本文以 Apple Silicon Mac 为例。我的实际环境是 Python 3.10.18、PyTorch 2.13.0、Demucs 4.1.0 和 FFmpeg 8.0.1。
你需要:
首次运行会下载约 2.3 GB 模型,再加上 Python 环境和中间 WAV,整个项目占用 4–5 GB 很正常。
brew install ffmpeg git python@3.10
确认安装成功:
ffmpeg -version
git --version
python3.10 --version
mkdir ai-cover-demo
cd ai-cover-demo
mkdir -p input reference stems converted final tools
python3.10 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
如果终端行首出现 (.venv),说明虚拟环境已经启用。
pip install demucs
git clone https://github.com/Plachtaa/seed-vc.git tools/seed-vc
git -C tools/seed-vc checkout 51383efd921027683c89e5348211d93ff12ac2a8
pip install -r tools/seed-vc/requirements-mac.txt
本文锁定到我已经实际验证的 commit,避免“同一条命令,换一天就不能跑”。Seed-VC 仓库[1] 已经进入只读归档状态,因此固定版本尤其重要。
本文使用的两个核心项目目前都处于 GitHub 只读归档状态:
“归档”不等于模型失效,也不等于已经安装的 Python 包会立即停止工作。它表示上游仓库已经只读,不会再正常合并 PR、修复新依赖兼容问题或持续提供安全更新。
这也是本文固定 Seed-VC commit、Python 版本和实际参数的原因。本次项目已经在 2026 年 8 月 31 日跑通完整歌曲,但未来的 PyTorch、Transformers、TorchCodec 或 macOS 更新仍可能破坏这套环境。适合实践的原则是:
把本地歌曲放到:
input/source.m4a
如果你的文件是 MP3、FLAC 或 WAV,只需要在后面的命令中替换文件名。
先统一转为 44.1 kHz / 16-bit / stereo WAV:
ffmpeg -y \
-i input/source.m4a \
-ar 44100 \
-ac 2 \
-c:a pcm_s16le \
input/source.wav
检查输出:
ffprobe -v error \
-show_entries stream=codec_name,sample_rate,channels \
-show_entries format=duration \
-of json \
input/source.wav
成功时应看到:
codec_namepcm_s16le。sample_rate44100。channels2。这是最影响音色的素材。
对于大多数读者,最简单的方法是:录制自己的声音。
用手机或 Mac 录制 15–30 秒自然说话,保持:
豆包声音复刻 2.0 的官方最佳实践也建议使用清晰、单人、无噪声的 14–30 秒 WAV 参考音频。如果你已经拥有经过授权的克隆音色,也可以通过豆包声音复刻[4]生成这段参考声。
对外分享教程时,不要公开真实 Voice ID、API Key 或任何账号凭证。
把录音放到:
reference/voice-raw.wav
标准化为单声道 WAV:
ffmpeg -y \
-i reference/voice-raw.wav \
-af "highpass=f=60,loudnorm=I=-18:TP=-2:LRA=7" \
-ar 44100 \
-ac 1 \
-c:a pcm_s16le \
reference/voice.wav
先播放一遍 reference/voice.wav。如果还能听到音乐、回声、风噪或第二个人的声音,先重新录制,不要指望后面的模型帮你修复。
执行:
python -m demucs \
--two-stems=vocals \
-n htdemucs \
input/source.wav \
-o stems
首次运行会自动下载 Demucs 模型。完成后应出现:
stems/htdemucs/source/vocals.wav
stems/htdemucs/source/no_vocals.wav
先不要急着进入下一步,把两个文件都听一遍:
vocals.wavno_vocals.wav轻微串音很常见。但如果人声轨中还有非常明显的鼓点、合成器或和声,转换后往往会出现金属感和沙哑噪声。
Demucs 官方仓库说明了 htdemucs 以及 two-stem 模式的使用方法,可以参考 facebookresearch/demucs[5]。
从项目根目录进入 Seed-VC:
cd tools/seed-vc
执行完整转换:
HF_HUB_DISABLE_XET=1 ../../.venv/bin/python inference.py \
--source ../../stems/htdemucs/source/vocals.wav \
--target ../../reference/voice.wav \
--output ../../converted \
--diffusion-steps 30 \
--length-adjust 1.0 \
--inference-cfg-rate 0.7 \
--f0-condition True \
--auto-f0-adjust True \
--semi-tone-shift 0 \
--fp16 False
这条命令中,初学者最需要理解的是三个参数:
diffusion-steps | 30 | |
f0-condition | True | |
auto-f0-adjust | True |
不要一开始就追求 50 或 100 步。干声不干净时,增加扩散步数几乎不会解决根本问题。30 步更适合第一次验证。
首次运行会下载 Seed-VC、Whisper-small、RMVPE、CAMPPlus 和 BigVGAN 等模型,可能要等待几分钟。
完成后,converted/ 中会出现一个以 vc_ 开头的 WAV 文件。把它复制成更好记的名称:
cd ../..
VC_OUTPUT=$(find converted -type f -name 'vc_*.wav' | head -1)
cp "$VC_OUTPUT" converted/ai-vocals.wav
检查它与伴奏时长是否一致:
for file in \
converted/ai-vocals.wav \
stems/htdemucs/source/no_vocals.wav
do
printf '%s: ' "$file"
ffprobe -v error \
-show_entries format=duration \
-of default=nw=1:nk=1 \
"$file"
done
如果两者差了好几秒,先不要混音。检查是否选错了文件,或 Seed-VC 是否在中途报错。
现在我们有了:
converted/ai-vocals.wavstems/htdemucs/source/no_vocals.wav执行:
ffmpeg -y \
-i converted/ai-vocals.wav \
-i stems/htdemucs/source/no_vocals.wav \
-filter_complex "\
[0:a]highpass=f=70,lowpass=f=15000,volume=1.10,\
pan=stereo|c0=c0|c1=c0[v];\
[1:a]volume=0.84[m];\
[v][m]amix=inputs=2:duration=longest:\
dropout_transition=0:normalize=0,\
alimiter=limit=0.89:level=false[out]" \
-map "[out]" \
-ar 44100 \
-ac 2 \
-c:a pcm_s16le \
final/ai-cover.wav
这里做了四件事:
-1 dB,避免转码时爆音。FFmpeg 对 amix 和 alimiter 的官方说明可以在 FFmpeg Filters Documentation[6] 中查到。
再生成一份容量更小的 M4A:
ffmpeg -y \
-i final/ai-cover.wav \
-c:a aac \
-b:a 256k \
final/ai-cover.m4a
“命令运行成功”不等于“翻唱已经可用”。
先检查编码、时长和声道:
ffprobe -v error \
-show_entries stream=codec_name,sample_rate,channels,bit_rate \
-show_entries format=duration,size,bit_rate \
-of json \
final/ai-cover.m4a
再检查音量:
ffmpeg \
-i final/ai-cover.wav \
-af volumedetect \
-f null -
我的实际成品数据是:
242.509 秒。2.43×。44.1 kHz。-1.0 dB。最后,请用耳机从头到尾听一遍,重点检查:
如果你也在 Apple Silicon Mac 上实践,下面三个问题很可能会遇到。
报错:
Cannot convert a MPS Tensor to float64 dtype
原因是 RMVPE 返回的 F0 数组可能是 float64,而 Apple MPS 不支持这种精度。
在 tools/seed-vc/inference.py 中找到:
F0_ori = torch.from_numpy(F0_ori).to(device)[None]
F0_alt = torch.from_numpy(F0_alt).to(device)[None]
改成:
F0_ori = torch.from_numpy(F0_ori).float().to(device)[None]
F0_alt = torch.from_numpy(F0_alt).float().to(device)[None]
报错:
TorchCodec is required for save_with_torchcodec
可以安装 TorchCodec,也可以直接用已在依赖中的 SoundFile 保存。
在 inference.py 开头加入:
import soundfile as sf
把最后的 torchaudio.save(...) 替换为:
output_path = os.path.join(
args.output,
f"vc_{source_name}_{target_name}_{length_adjust}_{diffusion_steps}_{inference_cfg_rate}.wav",
)
sf.write(output_path, vc_wave.squeeze(0).cpu().numpy(), sr)
.incomplete如果模型下载文件长时间不增长,尝试在命令前增加:
HF_HUB_DISABLE_XET=1
它会让 Hugging Face 改用普通 HTTP 下载。
如果只记住一件事,请记住:
AI 翻唱的上限,首先由素材决定,不是由扩散步数决定。
按影响大小排序:
如果效果不理想,按这个顺序调整,而不是一上来就把 diffusion-steps 调到 100。
这套流程的优点是:
它也有明显局限:
虽然本文给出了全曲流程,但第一次实践时,我强烈建议先裁剪 20 秒副歌:
ffmpeg -y \
-ss 60 \
-t 20 \
-i input/source.wav \
-c:a pcm_s16le \
input/test-20s.wav
先用这 20 秒验证:
确认方向正确以后,再处理 3–5 分钟的全曲。这会节省大量时间,也更容易判断问题出在哪一环。
本文的 Seed-VC + Demucs 是本机完整验证过的基线。下面这些项目代表更近期的路线,但除特别说明外,还没有在本文这首歌上做同条件听感对比,因此应把它们当作下一步实验候选,而不是无条件替换。
audio-separator 的 Roformer 模型做 A/B 对比。demucs-infer,确认同一模型、同一音频的输出没有明显退化,再迁移。最值得优化的通常不是一次性把所有模型换新,而是把链路拆开测试:先比较人声分离,再比较音色转换,最后比较混音。否则成片变好或变差时,你很难知道究竟是哪一环造成的。
如果你已经跑到这里,你已经完成了一条真正的本地 AI 翻唱链路:不是在网页上点一个按钮,而是知道每一条音轨怎么来、每个模型在做什么,以及效果不好时该从哪里查。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-10-06
huashu-art-motion发布!可能是最有审美的动画skill。
2026-09-29
AI 语音一直“正在连接”?用 RUM 排查 WebSocket 建连问题
2026-09-28
Codex这次更新,想把你的工作台搬进去
2026-09-28
AI改图,终于懂点「用户心理学」了
2026-09-28
AI会议转写真正的难点,不是识别内容而是认出谁在说话
2026-09-27
ASR 没听错,Voice Agent 的 Transcript 也可能是错的
2026-09-26
微软出手!VibeVoice:90分钟4人对话TTS+60分钟长音频ASR,语音AI天花板开源了
2026-09-18
千问上线 Qwen3.8-Omni-Flash:1M 上下文,音频输入价格降幅超98%
2026-07-27
2026-07-15
2026-07-22
2026-08-04
2026-07-31
2026-08-04
2026-08-26
2026-08-05
2026-07-15
2026-07-23
2026-07-15
2026-07-08
2026-03-12
2025-12-31
2025-08-04
2025-05-26
2025-05-13
2025-04-08
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。