AI音色克隆与歌曲翻唱开源工具方案

152 阅读6分钟

RVC 一键翻唱教程

基于 RVC (Retrieval-based Voice Conversion) 的自动化翻唱流程:输入原曲 → 人声分离 → 音色转换 → 混音输出


一、项目结构

e:\audio\
├── input/                     # 输入:待翻唱的原歌曲 (.mp3/.wav/.flac)
├── out/                       # 输出:翻唱完成的歌曲 (.wav)
├── yinyuan/                   # 训练数据:151 首目标音色干声音频 (.mp3)
├── RVC/                       # RVC 引擎
│   ├── auto_cover.py          # ★ 一键翻唱脚本
│   ├── assets/weights/        # 模型权重 (e10 ~ e600,共 61 个检查点)
│   ├── assets/uvr5_weights/   # UVR5 人声分离模型权重
│   ├── assets/rmvpe/          # RMVPE 音高提取模型
└───└── logs/                  # FAISS 索引文件 (.index)


二、环境要求

组件版本/要求
Python3.10
PyTorch2.5.1+cu124
CUDA12.4
GPUNVIDIA RTX 4060 Ti (≥8GB VRAM)

核心依赖安装:

pip install torch-2.5.1+cu124-cp310-cp310-win_amd64.whl
pip install torchaudio-2.5.1+cu124-cp310-cp310-win_amd64.whl
pip install torchvision-0.20.1+cu124-cp310-cp310-win_amd64.whl
pip install librosa soundfile numpy scipy

三、使用方法

基本命令

# 单首翻唱
cd e:\audio\RVC
python auto_cover.py -i "../input/知我.mp3" -o "../out/知我.wav"

# 批量翻唱(整个目录)
cd e:\audio\RVC
python auto_cover.py -i "../input" -o "../out"

完整参数说明

参数                默认值          说明
──────────────────────────────────────────────────────────
-i, --input         (必填)          输入歌曲路径 或 目录(批量模式)
-o, --output        (自动)          输出路径 / 目录
-m, --model         yin_yuan.pth    RVC 模型文件
--uvr_model         HP2_all_vocals  UVR 分离模型
--agg               10              UVR 分离强度 (0-20)
-k, --key           0               变调(半音,+12 升八度)
--index_rate        0.30            索引混合率 (0-1)
--protect           0.50            清辅音保护率 (0-1)
--filter_radius     3               F0 中值滤波半径 (0-7)
--rms_mix_rate      0.90            音量包络混合率 (0-1)
--f0                rmvpe           F0 提取方法 (rmvpe/crepe/harvest/pm)
--vocal_vol         1.05            人声音量倍率
--ins_vol           0.8             伴奏音量倍率
--keep_temp         (保留中间文件)   调试用

四、处理流程

脚本内部自动执行三个步骤:

Step 1: UVR5 人声/伴奏分离
  ┌──────────┐    HP5_only_main_vocal    ┌──────────┐  ┌──────────┐
  │ 原歌曲    │ ─────────────────────────→│ 人声.wav  │  │ 伴奏.wav  │
  └──────────┘                           └──────────┘  └──────────┘

Step 2: RVC 音色转换
  ┌──────────┐    模型 + protect + index_rate    ┌──────────────┐
  │ 人声.wav  │ ─────────────────────────────────→ │ 翻唱人声.wav  │
  └──────────┘                                    └──────────────┘

Step 3: 混音合并
  ┌──────────────┐  ┌──────────┐    vocal_vol ×1.15    ┌──────────┐
  │ 翻唱人声.wav  │ + │ 伴奏.wav  │ ──────────────────→ │ 最终.wav  │
  └──────────────┘  └──────────┘   ins_vol ×0.8       └──────────┘

五、咬字清晰度优化(核心)

5.1 推荐参数配置(v2 优化版)

经过多轮对比测试,以下参数在音色相似度咬字清晰度之间取得最佳平衡:

参数旧值★ 推荐值原理
protect0.050.50保留原唱清辅音(s/sh/f/t/k),防止"四→是"糊音
index_rate0.950.30降低 FAISS 音色匹配强度,减少吞字吞音
rms_mix_rate0.250.90保留原唱音量起伏动态,咬字更自然
--uvr_modelHP2_all_vocalsHP5_only_main_vocal只抽主唱干声,不含和声干扰
--vocal_vol1.051.15人声略突出于伴奏,听感更清晰
--ins_vol0.80.80控制伴奏不过大,避免盖住人声

推荐命令行

cd e:\audio\RVC
python auto_cover.py -i "../input" -o "../out" \
    -m "yin_yuan_e450_s15300.pth" \
    --uvr_model HP5_only_main_vocal \
    --vocal_vol 1.15 --ins_vol 0.8

5.2 参数调优指南

🔑 protect(清辅音保护)— 最见效
场景推荐值效果
慢歌/抒情0.4 - 0.5保留气声、齿音细节
快歌/说唱0.5 - 0.7防止吞字
追求极致音色相似0.2 - 0.3像目标,但可能糊字

原理:protect 控制 hubert 特征中保留原唱信息的比例。过低(0.05)会导致清辅音被模型过度平滑抹掉;过高(>0.7)会导致音色转换效果减弱。

🎯 index_rate(索引混合率)
场景推荐值效果
咬字优先0.2 - 0.3清晰,可能音色稍淡
平衡0.3 - 0.5兼顾咬字和音色
音色优先0.5 - 0.7更像目标,但可能吞字

原理:index_rate 控制 FAISS 检索结果与模型输出的混合比例。过高(0.95)会强制匹配训练数据中的音色,导致吞字;过低(0)则只靠模型泛化,音色可能不稳定。

🎵 rms_mix_rate(音量包络)
场景推荐值效果
自然咬字0.8 - 1.0保留原唱抑扬顿挫
更平稳0.2 - 0.5音量均匀,但可能呆板

原理:控制翻唱人声使用原唱音量包络的比例。高值保留原唱的轻重缓急,让咬字更自然;低值使用生成器自带的音量,可能缺乏动态。

🎼 filter_radius(F0 中值滤波)
场景推荐值效果
保留细节1 - 2更细粒度的音高跟踪
平滑3 - 5减少音高抖动
极端平滑6 - 7适合音高极不稳定的输入

原理:对音高曲线做中值滤波的窗口半径。越小保留越多微妙的音高变化,越大越平滑但可能丢失细节。


六、模型选择

可用模型列表

训练了 61 个检查点(每 10 epoch 保存一次),位于 RVC/assets/weights/

yin_yuan_e10_s340.pth   ~  yin_yuan_e600_s20400.pth

如何选择最佳 epoch

epoch 范围特点适用场景
100 - 200泛化好,不过拟合一般推荐
200 - 350特征更丰富新歌曲适应性强
450当前最佳音色相似 + 咬字清晰
500+可能过拟合训练集内的歌效果好

当前最佳结果:yin_yuan_e450_s15300.pth(第 450 轮),经 9 首不同风格歌曲测试,咬字清晰度和音色还原度综合最佳。


七、训练数据

数据概况

  • 来源:银元原声唱歌/说话片段
  • 数量:151 个 .mp3 文件
  • 时长:每段约 25 秒
  • 格式:MP3,128kbps
  • 总时长:约 63 分钟

数据优化建议

如果咬字仍有问题,可考虑扩充训练数据:

方向说明
增加清辅音样本添加含 s/sh/f/t/k/ch 丰富的录音片段
提高数据质量使用 320kbps MP3 或无压缩 WAV/FLAC
添加语速变化慢速、快速、正常语速搭配
录制说话片段15 秒清晰朗读,辅助咬字算法

八、常见问题排查

问题可能原因解决方案
咬字模糊、吞字protect 太低 + index_rate 太高设 protect=0.5, index_rate=0.3
音色不像目标protect 太高降低 protect 到 0.3-0.4
人声被伴奏盖住vocal_vol 太小增大到 1.15-1.3
整体音量过大破音混音峰值 > 1.0脚本自动防削波,无需手动处理
音准不稳F0 检测不准--f0 crepe(更准但更慢)
背景有残留噪音UVR 分离不干净加大 --agg 15,或换其他 UVR 模型

九、技术架构

┌─────────────────────────────────────────────────────────┐
                    auto_cover.py                        
├─────────────────────────────────────────────────────────┤
  Step 1: UVR5 (Ultimate Vocal Remover 5)               
    - 模型: HP5_only_main_vocal (MDX-Net 架构)           
    - 输入: 任意格式音频                                  
    - 输出: 主唱人声 + 伴奏分离                           
├─────────────────────────────────────────────────────────┤
  Step 2: RVC (Retrieval-based Voice Conversion)         
    - HuBERT: 提取发音特征 (contentvec-500)               
    - FAISS: 检索最匹配音色特征                            
    - RMVPE: 提取音高 (F0)                               
    - Generator: HiFi-GAN 声码器合成音频                  
    - protect: 保留原唱 hubert 特征比例                   
    - index_rate: FAISS 索引混合比例                      
    - rms_mix_rate: 音量包络保留比例                       
    - filter_radius: F0 中值滤波半径                      
├─────────────────────────────────────────────────────────┤
  Step 3: Mixdown                                        
    - 人声归一化到 -1dB                                   
    - 统一采样率到 44100Hz                                
    - 人声 × vocal_vol + 伴奏 × ins_vol                   
    - 自动防削波                                          
└─────────────────────────────────────────────────────────┘

十、版本记录

版本日期参数调整效果
v1初始protect=0.05, index_rate=0.95, rms_mix_rate=0.25, HP2咬字模糊
v2优化protect=0.50, index_rate=0.30, rms_mix_rate=0.90, HP5咬字清晰 ✓

最后更新:2026-06-08
目标音色:银元 (yin_yuan)
当前最佳模型:e450_s15300
当前参数:protect=0.50 / index_rate=0.30 / rms_mix_rate=0.90 / HP5 / rmvpe