跳到主要内容

语音转换 / 声音克隆

Seed-VC 本地部署:1~30 秒参考音频,零训练克隆一把嗓子

v1 三个模型分别是 25M、98M、200M,v2 是 CFM 67M + AR 90M 的双塔结构。真正吃显存的从来不是 DiT 主干,而是它背后挂的那一串上游编码器。

Seed-VC 出自 Songting Liu 的论文《Zero-shot Voice Conversion with Diffusion Transformers》(arXiv:2411.09943),用扩散 Transformer 做零样本语音转换,训练时引入一个外部音色扰动器(external timbre shifter)来压制音色泄漏,推理时把整段参考语音作为上下文喂进去做 in-context learning。给它 1~30 秒的参考音频,不训练也能克隆音色。官方 EVAL 在 LibriTTS-test-clean 上跑了 100 条:Seed-VC 的说话人相似度 SECS 0.8676、WER 11.99、CER 2.92,同题对比 OpenVoice 是 0.7547 / 15.46 / 4.73,CosyVoice 是 0.8440 / 18.98 / 7.29。

项目主页是 GitHub 上的 Plachtaa/seed-vc,协议 GPL-3.0,接近 4k star。代码最后一次更新停在 2025 年 4 月 20 日,仓库已于 2025 年 11 月 21 日归档转为只读;作者随后把精力放到了 StreamVoiceAnon(ICASSP'26,Apache-2.0,实时流式语音匿名化与转换)。归档不代表不能用 —— 权重仍然挂在 Hugging Face 的 Plachta/Seed-VC 下,而且 requirements.txt 把 torch==2.4.0、transformers==4.46.3、numpy==1.26.4 全部 pin 死了,环境反而比一堆还在动的项目更好复现。CHANGELOG 里 V2 那一条写成「2024-04-16」是笔误,实际发布在 2025 年 4 月。

部署 Seed-VC 前必须搞清楚一件事:模型表里的 25M、98M、200M 只是 DiT 主干的参数量,不是显存占用。实际跑起来还要常驻内容编码器(tiny 档是 facebook/wav2vec2-xls-r-300m 取第 12 层,离线档和歌声档是 openai/whisper-small,v2 是 facebook/hubert-large-ll60k 取第 18 层)、声码器(HIFT 或 nvidia/bigvgan_v2_22khz_80band_256x)、CAMPPlus 说话人编码器,以及训练期音色扰动用的 OpenVoice se_db.pt(102MB)。把这些加总,一档模型的全栈权重在 1.5~2.5GB 之间。这就是为什么「25M 的模型」不等于「25M 的显存」。

01 —

四个官方模型,各管一件事

参数量、隐藏层维度、层数取自官方模型表;权重体积取自 Hugging Face Plachta/Seed-VC 的文件清单。

版本参数量显存上下文说明
seed-uvit-tat-xlsr-tiny(v1.0)25M(hidden 384 / 9 层)DiT_uvit_tat_xlsr_ema.pth 142MB + XLSR-large 编码器 ~1.2GB + hift.pt 82MB ≈ 1.5GB 权重;FP16 推理 6GB 卡就有余量22050 Hz,参考音频 1~30 秒唯一为实时变声调优的一档。内容编码器是 wav2vec2-xls-r-300m,声码器换成轻量的 HIFT,real-time-gui.py 默认拉的就是它。
seed-uvit-whisper-small-wavenet(v1.0)98M(hidden 512 / 13 层)DiT_seed_v2_uvit_whisper_small_wavenet_bigvgan_pruned.pth 440MB + Whisper-small 编码器 + BigVGAN ≈ 1.5GB 权重;建议 ≥ 8GB 显存22050 Hz,参考音频 1~30 秒离线转换的默认档,质量比 tiny 好、推理稍慢。inference.py 在 --f0-condition False 时会自动下载这一个。
seed-uvit-whisper-base(v1.0,f0-44k)200M(hidden 768 / 17 层)DiT_..._whisper_base_f0_44k_bigvgan_pruned_ft_ema.pth 821MB + Whisper-small + 44.1kHz BigVGAN ≈ 2.5GB 权重;长音频分块推理建议 ≥ 16GB44100 Hz,参考音频 1~30 秒歌声转换(SVC)专用,带 f0 条件。必须 --f0-condition True,扩散步数官方建议提到 30~50,男女互换时配合 --semi-tone-shift ±12。
hubert-bsqvae-small(v2.0)67M(CFM)+ 90M(AR)cfm_small.pth 353MB + ar_base.pth 359MB + hubert-large-ll60k ~1.2GB + BigVGAN ≈ 2.3GB 权重;开 --compile 后建议 ≥ 12GB22050 Hz,参考音频 1~30 秒内容侧换成 ASTRAL-Quantization 的球面二值量化器(窄码本 32 / 宽码本 2048),官方评价是「最能压制源说话人特征」。多了口音与情感转换,也支持 --anonymization-only 把声音匿名成一把平均嗓。
StreamVoiceAnon(作者后继项目)官方未公布参数量权重需从 Hugging Face Plachta/StreamVoiceAnon 下载;官方只给了 RTF < 1.0 的指标,未公布显存数字实时流式,延迟按帧可配seed-vc 归档后作者的接棒项目,ICASSP'26 论文,协议放宽到 Apache-2.0。做实时语音匿名化与转换,Windows 下同样需要 triton-windows 才能压到 RTF < 1.0。

02 —

选哪张卡:按你的实际场景对号入座

Seed-VC 不是显存怪兽,所以选卡的依据是延迟、并发和采样率,而不是「装不装得下」。

  • 零样本效果验证 / 批量离线转换(whisper-small-wavenet)

    RTX 3090 24GB$0.193/卡·时

    全栈权重才 1.5GB 左右,24GB 显存留给长音频分块和多进程并发,这是能租到的最便宜的 24GB 卡。

  • 实时变声:直播、会议、游戏语音(xlsr-tiny)

    RTX 4090 24GB$0.540/卡·时

    官方在 RTX 3060 Laptop 上就跑到每块 150ms、总延迟 430ms,4090 的余量足够把扩散步数从 10 提到 25,或者同机开多路而不越过 0.18s 的 block time。

  • 单说话人 / 多说话人微调(train.py,batch-size 2)

    Tesla T4 16GB$0.298/卡·时

    README 给的基准就是这张卡 ——「最少 100 步,在 T4 上 2 分钟」,照着官方数字算成本不用猜。

  • 44.1kHz 歌声转换批量出片 / v2 开 --compile 加速 AR

    RTX A6000 48GB$0.817/卡·时

    44k BigVGAN 解码长曲目最吃激活显存,48GB 可以同时跑四五路歌声转换,还能顺手把 v2 的 AR 编译缓存留在同一张卡上。

03 —

四步把 Seed-VC 跑起来

官方推荐 Python 3.10。requirements.txt 有个坑,第一步就得处理掉。

  1. 01

    开实例,先修 requirements.txt 再装依赖

    requirements.txt 前三行指向 PyTorch cu126 nightly 源,但第 5~7 行又把 torch/torchvision/torchaudio 死死 pin 在 2.4.0/0.19.0/2.4.0。直接 pip install 会让 pip 在 nightly 轮子和固定版本之间来回折腾,装完还可能拿到一个对不上的 CUDA 版本。删掉那三行再装,环境干净得多。NexGPU 的 PyTorch 预置镜像已经带好驱动和 CUDA,SSH 进去就能开工。

    git clone https://github.com/Plachtaa/seed-vc && cd seed-vc && sed -i '1,3d' requirements.txt && pip install -r requirements.txt
  2. 02

    跑第一条零样本转换,权重自动下载

    首次推理时检查点会自动从 Hugging Face 拉取,不指定 --checkpoint 就默认用 seed-uvit-whisper-small-wavenet。国内节点走 hf-mirror 镜像更稳。--fp16 默认为 True;--diffusion-steps 25 是质量与速度的平衡点,想快就压到 4~10,想好就提到 30~50。

    HF_ENDPOINT=https://hf-mirror.com python inference.py --source examples/source/source_s1.wav --target examples/reference/s1p1.wav --output ./out --diffusion-steps 25 --length-adjust 1.0 --inference-cfg-rate 0.7 --fp16 True
  3. 03

    按场景切模式:歌声转换、实时变声、或 v2 口音转换

    歌声转换要开 f0 条件并换成 44k 模型;实时变声用 real-time-gui.py,官方在 RTX 3060 Laptop 上的推荐参数是扩散步数 10、block time 0.18s、crossfade 0.04s、左侧额外上下文 2.5s、右侧 0.02s,算法延迟约等于 block time × 2 + 右侧上下文。v2 的 AR 模型加 --compile 大约有 6 倍加速,Linux 上装好 triton 即可,Windows 需要 triton-windows==3.2.0.post13。

    python inference.py --source song.wav --target singer_ref.wav --output ./out --diffusion-steps 40 --f0-condition True --semi-tone-shift 0   # 或:python app_vc_v2.py --compile
  4. 04

    用自己的数据微调,把相似度再拉一档

    音频每条 1~30 秒,超出范围会被直接忽略;支持 wav/flac/mp3/m4a/opus/ogg,不需要说话人标签,但每个说话人至少一条。从 configs/presets/ 里挑一个和推理目标一致的 preset:tiny 对应实时、whisper-small-wavenet 对应离线、whisper-base-f0-44k 对应歌声。产物落在 runs/<run-name>/ft_model.pth,推理时照样要给参考音频。v2 用 accelerate launch train_v2.py,支持多卡。

    python train.py --config ./configs/presets/config_dit_mel_seed_uvit_xlsr_tiny.yml --dataset-dir ./my_data --run-name my_speaker --batch-size 2 --max-steps 1000 --save-every 500 --num-workers 0

一次完整的验证 + 微调 + 上线,到底多少钱

按 NexGPU 列表价一条条算。第一阶段做零样本验证,选 Tesla T4 16GB,$0.298/卡·时:拉权重(离线档 440MB + hift.pt 82MB + se_db.pt 102MB + Whisper 与 BigVGAN,落盘约 3GB)加上 200 条 10 秒素材按 diffusion-steps 25 跑完,连下载带推理 40 分钟 —— 0.667 × $0.298 = $0.20。第二阶段微调一个说话人,README 的原话是「最少 100 步,在 T4 上 2 分钟」,跑满 1,000 步约 20 分钟 —— 0.333 × $0.298 = $0.10。也就是说,从零验证到拿到 ft_model.pth,总共 $0.30,比一杯咖啡便宜两个数量级。上线阶段换卡:实时变声用 RTX 4090 24GB,$0.540/卡·时,一场 8 小时直播是 8 × $0.540 = $4.32;44.1kHz 歌声转换批量出片用 RTX A6000 48GB,$0.817/卡·时,四路并发跑 3 小时是 3 × $0.817 = $2.45。存储单独计费:3GB 权重按 $0.414/GB·月 的中位价是 3 × $0.414 = $1.24/月 —— 注意计算费在实例停止时就停了,存储费会一直算到你把它销毁。出网几乎可以忽略:1,000 条 22kHz wav 大约 0.44GB,0.44 × $0.0081 ≈ $0.004。计费按秒计量、按小时计价,没有起租时长、没有开通费、不用提配额申请。

04 —

常见问题

Seed-VC 本地部署到底需要多大显存?8GB 的卡够吗?

够,而且富余。别被官方模型表里的 25M/98M/200M 误导 —— 那只是 DiT 主干。真实占用要把内容编码器(XLSR-large 或 Whisper-small 或 HuBERT-large)、声码器(HIFT / BigVGAN)、CAMPPlus 说话人编码器一起算进去,全栈权重落在 1.5~2.5GB 之间,FP16 推理时 6~8GB 显存跑单路完全没问题。真正需要更大显存的是 44.1kHz 歌声转换的长音频分块,和你想在一张卡上开多路并发的时候。所以在 NexGPU 上验证阶段直接开 RTX 3090 24GB($0.193/卡·时)就好,效果确认了再决定要不要往上换卡。

GitHub 仓库已经归档了,Seed-VC 还值得部署吗?

值得,但要知道自己在接手什么。仓库在 2025 年 11 月 21 日转为只读,代码停在 2025 年 4 月 20 日,不会再有新功能和 bug 修复;好消息是依赖版本全部 pin 死(torch 2.4.0、transformers 4.46.3、numpy 1.26.4、gradio 5.23.0),权重也还挂在 Hugging Face 上,复现性反而比很多活跃项目更好。如果你需要持续维护的实时方案,可以看作者的接棒项目 StreamVoiceAnon(Apache-2.0)。两条路都可以在 NexGPU 上各开一台实例平行试,按秒计费,选错了也就损失几毛钱。

Seed-VC 和 RVC、So-VITS-SVC 比,零样本真的能打过专门训练的模型吗?

官方 EVAL 给了直接数据。歌声转换在 M4Singer 上对比逐说话人训练的 RVCv2-f0-48k:Seed-VC 的 SECS 0.7405 对 0.7264、CER 19.70 对 28.46,说话人相似度和可懂度都赢;但音质指标 DNSMOS OVRL 是 3.06 对 3.12,略输一点,官方自己也承认了。语音转换侧对比 So-VITS-4.0 的三个角色,Seed-VC 在 SECS 和 WER 上全面领先。结论是:零样本省掉了每个音色单独训练的成本,代价是音质稍逊。想两边都试一遍,在 NexGPU 上开一台 RTX 4090 24GB 把 RVC 和 Seed-VC 装在同一台机器上 A/B,$0.540/卡·时。

实时变声的 430ms 延迟是怎么算出来的,我这边能复现吗?

官方测试环境是 NVIDIA RTX 3060 Laptop GPU 跑 seed-uvit-xlsr-tiny:扩散步数 10、CFG rate 0.7、最大提示长度 3.0s、block time 0.18s、crossfade 0.04s、左侧额外上下文 2.5s、右侧 0.02s,测得每块推理 150ms、端到端 430ms。算法延迟约等于 block time × 2 + 右侧上下文,设备侧再加约 100ms。只要每块推理时间小于 block time,音频流就不会断。把 CFG rate 设为 0.0 还能再快约 1.5 倍。在 NexGPU 的 RTX 4090 24GB 上你会有远比 3060 Laptop 更大的余量 —— 要么把延迟压得更低,要么把扩散步数提上去换音质。

微调 Seed-VC 需要准备多少数据?训练要跑多久?

数据门槛低到有点反直觉:每个说话人最少一条语音就能跑,每条音频 1~30 秒,格式 wav/flac/mp3/m4a/opus/ogg 都行,不需要说话人标签,但素材要干净,带 BGM 或噪声会明显拖后腿。速度上官方原话是「最少 100 步,在 T4 上 2 分钟」,默认 batch-size 2,跑 1,000 步通常够一个说话人用了。官方也承认微调会显著提升说话人相似度,但可能让 WER 略微上升。NexGPU 的 Tesla T4 16GB 就是 README 里那张基准卡,$0.298/卡·时,微调整套流程连一毛五都花不到。

Seed-VC 是 GPL-3.0,商业项目用它有什么要注意的?

GPL-3.0 是传染性协议:把 Seed-VC 的代码合并进你自己的程序并对外分发,衍生作品通常也要以 GPL-3.0 开源。常见的规避方式是把它当作独立进程或独立服务调用、只取输出音频,但边界要请你们法务确认,别照网上的说法拍脑袋。另外上游依赖各有各的协议 —— NVIDIA 的 BigVGAN、OpenVoice 的音色转换检查点、CAMPPlus 说话人编码器都要单独看。还有一层不是法律而是伦理:声音克隆必须拿到本人授权。在 NexGPU 上租卡跑推理不改变你的任何协议义务,但按秒计费意味着你可以在法务给出结论之前,先花几毛钱把技术效果验证完。

同类模型 · 声音克隆 / 声音转换

全部模型部署指南

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。