Spaces:
Running on Zero
Running on Zero
|
Download README.md from ef6676/LXH_RVC_Transform: direct link, hf CLI and curl.
- Browser
- Download file 6.69 kB
-
https://huggingface.co/spaces/ef6676/LXH_RVC_Transform/resolve/main/README.md
- Command line
-
hf download hf://spaces/ef6676/LXH_RVC_Transform/README.md
-
curl -L -o README.md https://huggingface.co/spaces/ef6676/LXH_RVC_Transform/resolve/main/README.md
6.69 kB
A newer version of the Gradio SDK is available: 6.30.0
metadata
title: RVC 翻唱工作站
emoji: 🎤
colorFrom: purple
colorTo: indigo
sdk: gradio
sdk_version: 6.26.0
python_version: '3.10'
app_file: app.py
pinned: false
license: mit
short_description: PyMSS 三板斧分离 + RVC 变声翻唱
hardware: zero-a10g
RVC 翻唱工作站(PyMSS 分离 + RVC 变声,ZeroGPU)
上传一首歌,自动完成「人声分离 → 去混响 → RVC 变声 → 成品混音」,输出 5 路音频。
工作流
| 步骤 | 模型 | 输入来源 | 输出音轨 |
|---|---|---|---|
| 1 | big_beta6x |
原始输入 | vocals / other(伴奏) |
| 2 | mel_band_karaoke_fusion_standard |
步骤1 vocals |
Vocals / Instrumental(和声) |
| 3 | dereverb_mel_band_roformer_anvuew_sdr_19.1729 |
步骤2 Vocals |
noreverb / reverb |
noreverb→ RVC 变声,作为主人声Instrumental→ 和声,默认原样混入;可选「和声处理」也过 RVC;可选「移除和声」整条丢弃
页面输出(5 个音频框)
- 伴奏(
other) - 变声后的主人声(
noreverb) - 和声(
Instrumental,可能已被 RVC 处理;勾选「移除和声」时为空) - 混响(
reverb) - 合并成品 = ①+②+③+④,对齐时长叠加后做峰值归一化
两个选项默认都不勾选:移除和声、和声处理。
部署步骤
1. 创建 Space
- SDK 选 Gradio,硬件在 Settings → Space Hardware 里选 ZeroGPU
(README 里已写
hardware: zero-a10g,这是 ZeroGPU 的标识符) - 建议设为 Private,因为要往里配私有音色的读取权限
2. 分离模型:什么都不用传
Space 仓库的 Git/LFS 存储上限只有约 1 GB(那个「50 GB」是运行时的临时磁盘,不是仓库),所以三个分离模型(合计约 3.3 GB)不可能塞进仓库。
app.py 会在启动时用 snapshot_download 从 pymss 官方仓库
baicai1145/pymss 拉取到容器临时盘 /tmp/pymss_models,再交给 pymss 加载。这些是公开模型,不需要任何 token。
想换模型(比如换更小的 big_beta7,约 0.9 GB,能明显缩短冷启动),改 config.yaml 里对应的 ckpt / config 相对路径即可,路径以官方仓库里的实际结构为准。
3. 配置两个私有 RVC 音色
编辑 config.yaml,把 voices 里的 repo_id 换成你的私有模型仓库:
voices:
- id: voice_a
label: 音色 A
repo_id: your-name/my-voice-a
model_file: model.pth
index_file: model.index
- id: voice_b
label: 音色 B
repo_id: your-name/my-voice-b
model_file: model.pth
index_file: model.index
然后在 Space 的 Settings → Variables and secrets 里添加 Secret:
HF_TOKEN= 有权读取这两个私有仓库的 Hugging Face Access Token
(Private Space 会自动注入一个 HF_TOKEN,但它只有本条 Space 仓库的权限;音色放在别的私有仓库时,需要手动加一个有读权限的覆盖掉。)
音色同样下载到容器临时盘 /tmp/pymss_models/rvc/,不会进仓库。
4. 常见需要调的参数
config.yaml → runtime:
| 字段 | 默认 | 说明 |
|---|---|---|
output_sr |
44100 | 输出采样率(三个分离模型都是 44100) |
gpu_declared_seconds |
60 | 固定声明给 @spaces.GPU 的秒数,实际预占 = 该值 × gpu_duration_factor(= 90s)。它同时是运行时限,长音频要往上调 |
gpu_duration_factor |
1.5 | ZeroGPU 硬件系数(spaces/zero/configs.json),换硬件时会变 |
mix_peak |
0.97 | 合并轨峰值归一化目标 |
pitch_algo |
rmvpe+ | 音高提取算法,rmvpe+ 质量最好 |
model_cache_dir |
/tmp/pymss_models |
分离模型 + 音色下载缓存(临时盘) |
work_dir |
/tmp/rvc_cover |
每次请求的中间文件目录,1 小时后自动清理 |
注意事项
- Python 版本必须是 3.10,别改:
infer_rvc_python依赖的faiss-cpu(以及 1.3.x 的pyworld)在 Python 3.12 上没有任何可用 wheel,pip 会直接ResolutionImpossible。原因和版本对应关系写在requirements.txt顶部。 infer_rvc_python是 vendored 的,不在requirements.txt里:它死锁torchcrepe==0.0.20→librosa==0.9.1,而pymss要求librosa>=0.10.2,两者不相容、pip 无解。所以整个包放在vendor/infer_rvc_python/,由app.py用sys.path引入,它的运行期依赖在requirements.txt里显式列出。**别把vendor/加进.gitignore,也别再往requirements.txt里写infer_rvc_python**。- 构建阶段要现编译 pyworld:Linux 上 pyworld 官方没有 wheel(只有 Windows wheel + sdist),只能从源码编译(需要 gcc / Cython),所以首次构建会稍慢,这一步报错就是编译环境问题。
- 冷启动会下载约 3.3 GB 模型:容器临时盘每次重启都会被清空,Space 睡醒后会重新下载,第一次访问会慢几分钟。介意的话可以在 Space 设置里加购 persistent storage,或把
vocal_split换成体积更小的模型。 - ZeroGPU 的额度按「实际耗时」扣,不是按声明值扣。实测:204.1s 音频实际耗时约 38~40s,配额计量显示
0.7/5 min(≈42s);多次测量基本与音频长度成固定比例,约 0.19 秒 GPU 时间 / 秒音频,跟音频是无损还是低品质无关(解码开销相比模型推理可忽略)。 - 但调度门槛按「声明值」预检查:
剩余配额 < 声明值 × 硬件系数会直接被拒(quota exceeded),与实际跑多久无关。所以声明值固定在 60(→ 预占 90s)最省事。 - 硬件系数 1.5:SDK 把声明值乘上硬件系数再交给调度器(
spaces/zero/configs.json里 RTX PRO 6000 Blackwell = 1.5,H200 = 1.0);这个系数同时也是函数真正可用的运行时间 —— 声明 60 意味着约 90s 跑道。 - 声明值同时是运行时限,别为省额度调太小:一旦实际跑超,ZeroGPU 会 abort 任务(
GPU task aborted),配额照样扣、结果也拿不到。60(90s 跑道)按实测速度够跑约 7 分钟以内的音频;更长的歌按0.19s / 秒音频往上调gpu_declared_seconds。 - 首次调用偏慢:RVC 音色模型是在第一次请求时才真正加载进显存的(
infer_rvc_python的惰性加载),之后会复用。 - 并发:页面请求会串行执行(内部有锁),避免多个任务互抢显存和中间文件。
- 仅供学习与研究使用,请勿用于侵权或未授权的声音克隆。