RVC(Retrieval-based Voice Conversion,基于检索的语音转换)是花儿不哭大佬研发的低成本AI音色克隆软件。其核心原理是通过检索和匹配目标说话人的语音特征,实现高质量的声音转换。
RVC指南:
https://www.yuque.com/baicaigongchang1145haoyuangong/imh23d
本次教程主要是训练RVC模型。没有涉及到实时变声的教程。

进入RVC网页,我们需要对数据集进行处理,主要是提取主要人声、去除混响和回声。
点进伴奏人声分离&去混响&去回声页面中。
这里主要是使用UVR5模型对数据集进行处理。如果网页的UVR5用不了,可以去下载UVR5软件进行处理。
使用操作看相应的文字就能明白。导出格式推荐使用wav格式。

模型快速处理。
按照如下图所示,依次把音频文件按照步骤进行处理,如果没有model_bs的这个模型,那就使用HP5的哪个模型进行处理人声。

注意,换模型处理时,要更改输入音频文件路径,换成上一个模型处理过后的音频文件路径,让原音频进行三次处理(分离人声、去混响、去回声)

可以修改输出目录,但不建议,怕找不到。
在输出目录中,每次音频处理后,输出的名称会加上一些字符。如下:
Vocals是音频(人声+伴奏)分离后的人声
No Reverb是去混响后的音频
No Noise是去噪后的音频
instrument:伴奏
vocal:人声

小技巧:如果音频文件太多,又没整理好文件。那就看日期,最新的就是处理后的,再听一下就知道哪个是要用的人声了。

来到训练页面


实验名
实验名也是模型名,注意要用英文的,中文的可能会报错。
填写实验名,在软件根目录的logs文件夹下会自动创建实验名为路径的目录。这里会存放日志、实验配置、训练完成的模型文件。

目标采样率
变声完成后导出的音频文件的采样率,一般采样率选40k(48k有大概率炸炉,反正别选)
如果训练集用的是20k,用48k配置训练,音质也不会变得更好。

将音频文件导入au中,打开显示频谱频率显示器(Shift+D),就可以查看音频采样率的范围。

采样率是音频频率的捕捉范围,也就是能够被机器汲取到的范围。(不是响度dB,它的范围不会受到响度的影响)

模型是否带高音指导(唱歌一定要,语音可以不要)

音高引导的优缺点

什么时候开启音高引导?
如果推理目标是推理歌声。训练数据可以使用少量的歌声数据,或者是少量的语音数据,但是都需要开启音高引导。
如果推理目标是推理语音。训练集数据优先选择语音数据,或者是大量歌声数据,但如果是歌声数据需要开启音高引导。

版本
无脑选择最新版就行,因为越好的模型往往是最新的。

自动遍历训练文件夹下所有可解码成音频的文件并进行切片归一化, 在实验目录下生成2个wav文件夹; 暂时只支持单人训练。
翻译:一个自动化程序会扫描你指定的文件夹,找出所有能转换成音频的文件(如.mp3, .flac, .wav等),然后对这些音频进行切片(剪掉静音或无用部分)和归一化(统一音量大小),最后在项目目录下生成两个整理好的WAV文件夹,为后续的AI模型训练做准备。并且,当前程序版本只支持处理一个人的声音(即单人音色训练)。

输入训练文件夹路径
将被UVR5处理过后的音频文件放入一个文件夹中,填写这个文件夹路径。

指定说话人id
对于单人模型:此参数无效,保持默认值 0 即可。
对于多人模型:通过更改ID数值(如1, 2, 3...),可以选择模型输出的不同说话人的音色。
但是现阶段只支持单人训练,所以保持默认值0就行。

调整完后,点击处理数据就行,信息会在数据信息框中显示,没显示的话就没处理,有问题。

使用CPU提取音高,但需要模型自带音高。
使用GPU提取特征,需要选择显卡卡号。

显卡卡考和显卡信息
显卡信息框中回自动识别所有能用的显卡,并自动填写显卡序号。如果多张显卡性能都一样,直接用默认的配置,使用所有显卡。
卡号与显卡的映射关系,在显卡信息框中就能看到。

选择音高提取算法
pm:输入歌声,可用pm提速。
dio:高质量语音,但CPU差,可用dio提速。
harvest:质量好,但速度很慢。
rmvpe:效果最好,微吃CPU。
rmvpe_gpu:效果最好,微吃GPU。
追求速度选PM,平衡质量与资源选DIO或RMVPE,最高质量选Harvest或RMVPE系列,GPU设备优先选RMVPE_GPU。
不知道选什么,无脑选rmvpe就行。

在选择rmvpe_gpu音高算法时,下面会出现rmvpe卡号配置。也就是让你分配显卡去处理。
rmvpe卡号配置

调整完后,点击特征提取,信息会在输出信息框中显示。


保存频率
总训练轮数÷保存频率=保存的模型文件数量
保存频率必须是总轮数的整除数。建议在10到50间调
总训练轮数
越高,效果越好;但训练时长会更久,同时越高,效果提升也越不明显。
数据集越大设置的越大。如果你的数据集30分钟,那么差不多200轮。
Batch Size(批次大小)
默认批次大小为4,显存需求4.2G,酌情调整。

是否仅保存最新的ckpt文件以节省硬盘空间
如果勾选,logs文件夹下只会保存一份迭代数统一为23333333的模型文件。

勾选后,只会保留一个最新的。
只能看到最新进度,看不到历史中间进度。(勾了省硬盘)

是否缓存所有训练集至显存。
10分钟一下的小数据可以缓存,用以加速训练。小数据缓存会炸显存,也加不了速。
不缓存训练集是因为大概率显存本来就没多少,除非你有80g显存。

是否在每次保存时间点将最终小模型保存至weights文件夹
保存的模型会被放在weights文件夹中,以便后续查找。

底模路径
会根据目标采样率参数勾选的采样率和音高配置,自动决定预置的底模。
如果你会改代码,可以手工指定训练的底模
G模型(生成器):作为声学合成核心,将语义信息转换为高质量的声学特征(如梅尔频谱),并生成最终语音波形,决定音色自然度与保真度。
D模型(判别器):通过对抗训练机制区分真实与合成语音,迫使生成器优化输出,提升语音真实感和自然度。

卡号同理

最后点击训练模型(训练主模型)
主模型训练完了再点击训练特征索引。
特征索引可以减小音色泄漏,使得模型训练出来更像目标的音色,但是单纯的特征索引会降低模型的咬字(炼了再说,可以不用,但不能没有)

一键训练
填写完参数后,直接点击一键训练,相当于依次进行了处理数据、特征提取、训练模型、训练特征索引。
但可能会有BUG,比如特征索引检索不出来,还是建议一个一个点击进行训练。

训练后的模型在RVC/assets/weights,文件后缀是.pth,索引在logs/xxx,模型名是啥就在哪个文件夹,以added开头的是索引文件,后缀是.index
训练后的模型文件:RVC/assets/weigths/实验名

RVC/logs/实验名(文件夹下)
存放ckpt文件、索引文件、特征提取文件、切分音频文件。

特征提取与编码:
使用预训练模型(如 HuBERT 或 ContentVec)从输入语音中提取声学特征(如音高、频谱、韵律),并将其编码为高维向量表示。
检索与匹配:
系统通过检索目标说话人的语音数据库,找到与输入特征最匹配的片段(即“相似片段”),作为音色转换的参考。
生成与重建:
基于生成对抗网络(GAN)或变分自编码器(VAE)结构,将输入语音的特征与目标音色特征融合,生成转换后的语音。生成器负责合成语音,判别器则确保输出语音的自然性和真实性。
后处理优化:
通过音高调整(如 F0 平移)和频谱细化,进一步优化输出语音的流畅度和自然度。

进入模型推理页面,这个页面就是用来转换音色的,它需要通过原音频,根据RVC模型的音色,进行转换。(不是TTS那种文本生成语音的那种,是音色转换)


推理音色
这里加载RVC模型,如果没有显示训练的RVC模型,可以点击旁边的刷新按钮。

RVC模型需要放在RVC\assets\weights文件夹下。

卸载音色省显存
每次换RVC音色模型时,需要点击卸载音色,减少显存占用,因为加载的RVC模型如果不卸载,会默认被显存运行,导致显存越来越大。

刷新音色列表和索引路径
字面意思,如果音色列表中没有出现训练的RVC模型,要么是没有训练好,要么是模型输出路径被更改了。
索引文件就是开头为added,后缀为index的文件。index就是索引,选择和模型对应的索引。

一般索引文件放在RVC\logs\实验名文件夹下。


变调
一般男变女要12,女变男要-12。越低就越沙哑,看情况调整。
如果是唱歌的话,升八度,降八度就是调整音高。

输入待处理音频文件路径
输入音频文件路径,必须是wav文件。注意是文件路径!不是文件夹路径!
如果音频是首歌的话,那么找纯清唱的干声作为输入音频最好。

特征检索库文件路径
跟下面自动检测index路径是一个意思,只不过从自动检测改成了使用他人分享的index特征检索库文件。
为空,则使用自动检测index路径。

在RVC\logs文件夹下就有默认他人分享的特征检索库文件。

自动检测index路径
index就是索引,选择和模型对应的索引

选择音高提取算法
无脑选择rmvpe就行。

后处理重采样至最终采样率
采样率转换(Sample Rate Conversion, SRC)
采样率是指每秒对声音信号采样的次数(单位:Hz),它决定了音频的频率范围(音高)。
常见的采样率有44.1kHz(CD标准)、48kHz(视频音频标准)等。
转换采样率是为了让生成的音频文件与目标平台或设备的规格相匹配。
你可以认为这是把输入音频的采样率转换成和训练模型用的相同的采样率。
0不进行重采样,相当于不改输入音频的采样率。

输入源音量包络替换输出音量包络融合比例 (RMS Mix Rate)
音量包络(Volume Envelope)描述的是声音音量随时间变化的轮廓,比如一个音符从响起(起音)、持续(延音)到消失(释音)的过程。
RMS(Root Mean Square)是衡量音频平均功率(通俗理解就是平均响度)的一个指标。
这个参数控制的是源音频(你的输入)和转换后音频(模型输出)两者音量动态之间的融合程度。
通俗解释与举例:这就像给一段视频调色。源音频是原片,转换后的音频是经过强烈风格化滤镜的画面。
越靠近0:越使用源音频的音量变化。适合想要保留原始演唱或说话情感起伏的情况。例如,你转换一首歌,希望它听起来像另一个人在唱,但气息、强弱变化还和原唱一样。
越靠近1:越使用模型输出的音量变化。适合想让输出声音更符合模型本身特征的情况。例如,你转换一段平静的说话声,但模型是用激昂的歌声训练的,拉高这个值会让输出也带一些激昂的起伏感。
通常建议设置在0.25或0.3,这样能在保留原曲动态的同时,融入一些模型的特性,听起来更自然。

保护清辅音和呼吸声
这是一个防止算法副作用(Artifact) 的参数。
清辅音(如汉语拼音中的s、sh、f)和呼吸声是声音中气流占主导、声带不振动的部分,能量较弱,频率特征不明显。
AI模型在处理这些微弱信号时容易出错,产生不自然的电音(Robotic Voice)、撕裂声(Glitches)或杂音。
通俗解释与举例:这就像给照片做人像美化时开启的“保护头发丝和睫毛”选项。AI修图时很容易把细节模糊掉。
拉满到0.5:相当于关闭保护功能。模型会全力进行特征转换,但可能导致“斯斯”声变成“滋滋”的电音,呼吸声变得奇怪。
调低(如0.33):加大保护力度。模型会更谨慎地处理这些细微声音,优先保证它们的自然度,但代价是可能会让转换效果在这些片段上不那么彻底(即“降低索引效果”)。如果转换后发现“s”“f”等音变得很怪,就应调低此值。

音高中值滤波半径 (F0 Median Filtering Radius)
需要在选择harvest音高算法时才能使用。
Harvest 是一种音高(F0)提取算法,用于判断每个时间点声音的音高是多少。
但它提取的结果可能存在一些微小的抖动或错误(哑音)。
中值滤波(Median Filtering) 是一种信号处理技术,它将一个数据点前后一定范围(半径)内的值进行排序,取中间值来替代该点,能有效平滑数据、去除孤立的噪声点。
通俗解释与举例:这就像用“防手抖”功能来描一条线。你徒手画出的线可能会有些歪歪扭扭的小锯齿(Harvest提取的原始音高),中值滤波就是帮你把这些小锯齿修平,让线条更光滑。
设为0或1:不滤波或轻微滤波,保留所有细节,但也包括错误。
>=3(如3):开启并设置滤波强度。数值越大,平滑效果越强,能有效削弱哑音和不自然的音高跳动,让歌声更流畅。
但如果设得太大,可能会把一些故意的、快速的滑音(装饰音)也平滑掉。通常从3开始尝试。

检索特征占比
这是RVC模型核心的检索式转换(Retrieval-based Conversion) 的关键参数。模型在转换时,会从一个庞大的“声音特征库”(你训练好的模型文件)中搜索与当前输入声音最相似的片段,然后混合这些片段的特征来生成输出。这个参数控制搜索到的特征在最终输出中所占的权重。
通俗解释与举例:这就像做菜时的“加料比例”。你的训练模型是一碗浓缩高汤(声音特征库),输入的声音是食材本身。
越靠近0:几乎不使用高汤,主要靠模型的基础能力来转换。结果更稳定,但可能缺少你训练声音的独特“风味”(音色)。
越靠近1:猛加高汤,极力追求输出声音与训练目标的相似度。但如果特征库质量不高或输入声音不匹配,容易产生怪声(Artifact)。
通常设置在0.5-0.75之间,在保证相似度的同时兼顾稳定性。如果转换后声音不像,可以调高;如果声音不自然,可以调低。

上述参数调整好后,就可以点击转换了。

如果想对很多音频文件进行转换音色,可以使用此功能。

大部分参数设置与单次推理一样。
只是对了下面这些设置。
指定输出文件夹
默认输入文件夹为opt文件夹。

一般在RVC\opt文件夹下。

导出文件格式
……不想解释了

输入待处理音频文件夹路径
加载音频文件夹路径
也可以批量输入音频文件,但优先读取文件夹。(二选一)

其余设置都一样。

可用于测试音色融合。
将两种不同的音色模型融合起来,达到新的音色效果。

仅支持weights文件夹下提取的小模型文件

仅支持weights文件夹下提取的小模型文件

(输入logs文件夹下大文件模型路径),适用于训一半不想训了,模型没有自动提取保存小文件模型,或者想测试中间模型的情况。


ONNX:一种开放的模型格式标准,让不同框架(如PyTorch、TensorFlow)训练的AI模型能跨平台通用。
ONNX导出就是将某个特定框架的“方言”模型,转换成AI领域的“普通话”标准格式,目的是为了让它能在更多不同的环境和设备上更高效、更方便地被使用。
RVC模型是放在assets\weights文件夹下,后缀为.pth,大小约为60MB的文件。
不是放在logs里面的.pth文件。

在logs\实验名文件夹下的.pth文件是为了存储实验状态供复现,以及继续训练用的。
这个文件是为了防止训练中断,想恢复训练就需要用到这个文件。

分享模型需要分享RVC模型和RVC索引文件两个。
也就是weighs文件夹下的.pth文件和logs\实验名文件夹下的开头为added,后缀为index的索引文件。
需要把这两个文件合并打包成zip或其他压缩格式。用压缩包进行分享。
如果训练集音质差、底噪大,20~30轮足够了,调太高,底模音质无法带高你的低音质训练集。
如果训练集音质高、底噪低、时长长,可以调高,200是ok的(同样显卡要求也得提高)
推荐10min至50min
保证音质高、底噪低的情况下,如果有个人特色的音色统一,则多多益善。
高水平的训练集(精简+音色有特色),5min至10min也是ok的,仓库作者本人就经常这么玩。
也有人拿1min至2min的数据来训练并且训练成功的,但是成功经验是其他人不可复现的,不太具备参考价值。这要求训练集音色特色非常明显(比如说高频气声较明显的萝莉少女音),且音质高;
1min以下时长数据目前没见有人尝试(成功)过。不建议进行这种鬼畜行为。
如果底模和推理源的音质高于训练集的音质,使用index rate可以带高推理结果的音质,但代价可能是音色往底模/推理源的音色靠,这种现象叫做"音色泄露"
音色泄露(Timbre Leakage),有时也称为音色污染(Timbre Contamination),是指在语音转换(Voice Conversion, VC)或歌声合成(Singing Voice Synthesis, SVS)任务中,源说话人(Source Speaker)的音色特征没有被完全剥离,并残留在了最终的输出结果中的现象。
音色泄露就是“没转换干净”,源声音的影子还留在结果里。

index rate用来削减/解决音色泄露问题。调到1,则理论上不存在推理源的音色泄露问题,但音质更倾向于训练集。如果训练集音质比推理源低,则index rate调高可能降低音质。调到0,则不具备利用检索混合来保护训练集音色的效果;
如果训练集优质时长多,可调高total_epoch,此时模型本身不太会引用推理源和底模的音色,很少存在"音色泄露"问题,此时index_rate不重要,你甚至可以不建立/分享index索引文件。
现阶段只能关闭WebUI控制台双击go-web.bat重启程序。网页参数也要刷新重新填写;
继续训练:相同网页参数点训练模型,就会接着上次的checkpoint继续训练。