7月28日更新日志:
- 为了稳定性,撤销了SQL更改,现在使用csv
- 修复了合并检查点的错误
7月26日更新日志:
- 修复了命令行推理的回溯问题
- 实施了用于格式化训练停止的SQL数据库
- Gradio浏览器标签重命名为"Mangio-RVC-Web 💻"
- 移除了"infer-web.py"中的基础功能
- 格式化现在接受任何FFmpeg支持的音频格式
7月25日更新日志:
- 改进了MacOS安装脚本。对于推理,只需从解压缩的文件夹中运行"run.sh",它将自动为您安装Python 3.8、Homebrew和其他依赖项。M1 Mac原生支持GPU加速,如果选择下载预训练模型,训练也应该可以正常工作。
7月23日更新日志:
- Fp16检测现在与上一个RVC测试版之前的工作方式相同;与之前相比,不再出现训练速度减慢的情况
- TensorBoard上的日志记录现在按每个epoch进行。它在一个epoch中每X步记录一次;因此图表上的每个点现在代表每个epoch
- 更新了UI,包括占位符
- 某些滑块现在只在需要时出现
- 如果禁用音高引导,步骤2b(特征提取)将被隐藏
- 不必要的单选按钮已替换为复选框
7月22日更新日志:
- 使用StftPitchShift实现了实验性的共振峰移位(尝试使用praat和praatio但未成功)
- 训练时添加了"停止训练"按钮,不再需要每次想停止模型训练时都重启RVC!
- 自动检测所选模型的索引路径 + 自动检测路径,不再有默认值如"E:\codes\py39\vits_vc_gpu_train\logs\mi-test-1key\total_fea.npy",我们使用以下代码获取根目录和子文件夹:
os.path.abspath(os.getcwd())
- 通过自动检测"/audios/"文件夹中的文件来显示音频文件下拉列表
- 更稳定的Gradio版本(3.34.0),支持主题
- 移除了"训练"标签中的"一键训练"按钮,因为它存在故障并使许多用户感到困惑
- 更改了默认训练设置,使其对新用户更加优化
- 执行"tensor-launch.py"时自动打开TensorBoard本地主机URL
- 在推理和训练中实施了RMVPE
支持v2的Mangio-RVC-Fork!💻
这是一个基于VITS的易用SVC框架的分支,具有top1检索功能💯。总的来说,这个分支还提供了CLI界面。它还为您提供了更多的f0方法,以及使用nanmedian的个性化"混合"f0估计方法。!! 功能实现已推迟 -- 正在进行其他相关改进 !!
我正在独自开发。通过捐赠来支持我快速开发开源A.I深度神经网络音频工具和框架。捐赠意味着您对改进音频A.I整体做出承诺。您应该捐赠是因为您只想"支持"我,而不是因为您期望得到一个成品。没有任何保证。谢谢
💓 请支持原始RVC仓库。显然,没有它,这个分支就不可能存在。Mangio-RVC-Fork旨在以我自己的方式基本上增强原始RVC仓库的功能。请注意,这个分支不稳定,分叉的目的是为了实验。不要认为这个分支是原始仓库的"更好"版本。把它看作是原始仓库的另一个"版本"。请注意,这没有Google Colab。如果您想使用Google Colab,请前往原始仓库。目前,这个分支旨在与Paperspace和本地机器一起使用。
现在支持版本2预训练模型!
在Discord上添加我:Funky Town#2048
我能够在这里与您进行交流。
特别感谢Discord用户@kalomaze#2983为这个分支创建了一个临时的Colab笔记本。最终,一个官方的、更稳定的笔记本将包含在这个分支中。如果可能的话,请使用Paperspace,因为它更加稳定。
原始RVC演示视频在这里!
使用RVC的实时语音转换软件:w-okada/voice-changer
预训练模型的数据集使用了近50小时的高质量VCTK开源数据集。 高质量的授权歌曲数据集将陆续添加到训练集中供您使用,无需担心版权侵权问题。
摘要 📘
本分支(Mangio-RVC-Fork)相比原始仓库的特性 ☑️
- f0推理算法全面改进: 🌟
- 新增pyworld dio f0方法。
- 新增另一种计算crepe f0的方法(mangio-crepe)。
- 新增torchcrepe crepe-tiny模型(推理速度更快,但质量可能低于普通的完整crepe)。
- 可通过web界面和命令行修改crepe算法的crepe_hop_length参数。
- 训练时使用f0 Crepe音高提取。🌟 (实验性功能)在Paperspace机器上可用,但在本地Mac/Windows机器上不可用。可能存在内存泄漏风险,请注意。
- Paperspace集成 🌟
- infer-web.py增加Paperspace参数(--paperspace),用于共享gradio链接
- 为Paperspace用户提供Makefile
- 通过Makefile访问Tensorboard(make tensorboard)
- 训练的总轮数滑块上限从1000增加到10,000。
- 新增命令行功能
- 在infer-web.py中添加--is_cli标志以使用命令行系统。
- f0混合(中位数)估计方法,通过计算指定f0方法数组的nanmedian,获得所有指定f0方法的最佳效果。目前仅适用于命令行,soon将实现到图形界面 🌟
- f0特征提取(训练)时的f0混合(中位数)估计方法。(非常实验性,可能存在严重bug)。使用混合方法进行特征提取将花费更长时间。
本仓库还具有以下特性:
- 通过将源特征替换为训练集特征(使用top1检索)来减少音色泄漏;
- 训练简单快速,即使在相对较差的显卡上也能实现;
- 即使使用少量数据也能获得相对较好的结果(建议使用>=10分钟的低噪音语音);
- 支持模型融合以改变音色(使用ckpt处理选项卡->ckpt合并);
- 易于使用的Webui界面;
- 使用UVR5模型快速分离人声和乐器。
计划在分支开发过程中添加的功能 ▶️
- 推理批处理脚本。改进建议:
- 据多位GitHub用户反馈,每次推理30秒的样本既可以提高质量,又可以防止harvest内存错误。
- 改进GUI(更加便利)。
- 自动删除旧的生成结果以节省空间。
- 在Paperspace机器上进行更优化的训练
关于本分支在推理时的f0混合特性
目前,混合f0方法仅在命令行中可用,尚未在GUI中实现。但基本上在推理过程中,我们可以指定一个f0方法数组,例如["pm", "harvest", "crepe"],获取所有方法的f0计算结果,然后用nanmedian"组合"它们,得到一个混合f0信号,以获得所有提供的f0方法的"最佳效果"。
以下是如何在命令行中使用混合f0方法进行推理:
MyModel.pth saudio/Source.wav Output.wav logs/mi-test/added.index 0 -2 hybrid[pm+crepe] 128 3 0 1 0.95 0.33
注意,方法是"hybrid[pm+crepe]"而不是单一方法如"harvest"。
hybrid[pm+harvest+crepe]
# crepe计算将在计算堆栈的"末端"。
# parselmouth计算将在计算堆栈的"开始"。
# "hybrid"方法将计算pm、harvest和crepe的nanmedian
可以使用多种f0方法。但需要用'+'字符分隔。请注意,由于我们需要计算X倍的f0,推理时间会大大延长。
关于原始仓库的crepe方法与本分支的crepe方法(mangio-crepe)的比较
原始仓库的crepe f0计算方法与我的略有不同。可以说在某些方面,我的crepe实现在某些部分听起来更稳定。然而,原始仓库的crepe实现在消除噪音和伪音方面效果更好。在这个分支中,我自己的crepe实现(mangio-crepe)在GUI和CLI上都使用了可自定义的crepe_hop_length功能,而原始crepe没有这个功能。请注意,每种实现的声音略有不同,没有明确的"更好"或"更差"之分。这完全取决于具体情况!
如果必须选择一个,我强烈建议使用原始的crepe实现(而不是这个分支的),因为RVC的开发者对修复问题有更多的控制权。
关于本分支的f0训练附加功能
Crepe f0特征提取
Crepe训练仍然非常不稳定,有报告称存在内存泄漏。这将在未来修复,但在Paperspace机器上运行得相当好。请注意,crepe训练与harvest训练的模型相比会有一些差异。Crepe在某些部分听起来更清晰,但在某些部分也更像机器人。我认为两者都同样适合训练,但我仍然认为在推理时使用crepe不仅更快,而且音高更稳定(尤其是对于多层人声)。目前,使用harvest模型训练并用crepe进行推理是相当稳定的。但是,如果您使用crepe进行训练(f0特征提取),请确保您的数据集尽可能干净,以减少伪音和不需要的谐波,因为我认为crepe音高估计更容易受到混响的影响。
混合f0特征提取
仅适用于命令行(尚未在GUI中实现)。基本上与本自述文件中描述的推理时f0混合使用方法相同。在f0特征提取页面的参数中,您可以使用"hybrid[harvest+dio+pm+crepe]"代替"harvest"。这种f0 nanmedian混合方法在特征提取过程中会花费很长时间。如果您愿意使用混合f0,请耐心等待。
如果在使用crepe训练或pm和harvest等方法时遇到CUDA问题
这是由于进程数(n_p)过高造成的。请确保减少线程数。请在特征提取GUI上降低"使用的CPU线程数"滑块的值。
版本说明
欢迎使用RVC版本2!
请注意,版本2的预训练模型仅支持40k模型采样率。如果您想使用32k或48k,请使用版本1的预训练模型。
安装依赖 🖥️
使用pip(python3.9.8与此分支稳定兼容)
Paperspace用户:
cd Mangio-RVC-Fork
make install # 每次启动Paperspace机器时都需要执行此操作
Windows/MacOS
注意:faiss 1.7.2
在MacOS
下会引发Segmentation Fault: 11错误,如果您使用pip手动安装,请使用pip install faiss-cpu==1.7.0
。在MacOS
下可以通过brew
安装Swig
brew install swig
安装依赖:
pip install -r requirements.txt
如果遇到httpx无效端口错误,请安装httpx==0.23.0
准备其他预训练模型 ⬇️
Paperspace用户:
cd Mangio-RVC-Fork
# 克隆此分支后只需执行一次(除非hugging face上的预训练模型发生变化,否则无需再次执行)
make basev1
# 或者如果使用版本2的预训练模型
make basev2
本地用户
RVC需要其他预训练模型来进行推理和训练。 您需要从我们的Huggingface空间下载它们。
以下是RVC需要的预训练模型和其他文件列表:
hubert_base.pt
./pretrained
./uvr5_weights
如果您想测试v2版本模型(v2版本模型将特征从9层hubert+final_proj的256维输入更改为12层hubert的768维输入,并添加了3个循环判别器),需要额外下载
./pretrained_v2
#如果您使用Windows,可能需要此文件,如果已安装ffmpeg和ffprobe则可以跳过;ubuntu/debian用户可以通过apt install ffmpeg安装这两个库
./ffmpeg
./ffprobe
运行Web GUI进行推理和训练 💪
Paperspace用户:
cd Mangio-RVC-Fork
make run-ui
然后点击它提供的gradio链接。
或手动运行
# 在云端系统上使用 --paperspace 或 --colab 参数
python infer-web.py --pycmd python --port 3000
使用命令行界面进行推理和训练 💪 🔠
Paperspace 用户
cd Mangio-RVC-Fork
make run-cli
或手动执行
python infer-web.py --pycmd python --is_cli
使用方法
Mangio-RVC-Fork v2 命令行应用!
欢迎使用 RVC 的命令行版本。请阅读 https://github.com/Mangio621/Mangio-RVC-Fork (README.MD) 上的文档以了解如何使用此应用。
您当前在"首页":
go home : 返回带有导航列表的首页。
go infer : 进入推理命令执行页面。
go pre-process : 进入训练步骤1)预处理命令执行页面。
go extract-feature : 进入训练步骤2)特征提取命令执行页面。
go train : 进入训练步骤3)开始或继续训练命令执行页面。
go train-feature : 进入训练特征索引命令执行页面。
go extract-model : 进入提取小模型命令执行页面。
首页:
例如,输入"go infer"将带您进入推理页面,您可以在那里输入您希望用于该特定页面的参数。例如,输入"go infer"将带您到这里:
首页: go infer
您当前在"推理":
参数 1) ./weights 中带 .pth 的模型名称: mi-test.pth
参数 2) 源音频路径: myFolder\MySource.wav
参数 3) 要放置在 './audio-outputs' 中的输出文件名: MyTest.wav
参数 4) 特征索引文件路径: logs/mi-test/added_IVF3042_Flat_nprobe_1.index
参数 5) 说话人 ID: 0
参数 6) 转调: 0
参数 7) f0 方法: harvest (pm, harvest, crepe, crepe-tiny)
参数 8) crepe 跳跃长度: 160
参数 9) harvest 中值滤波半径: 3 (0-7)
参数 10) 后重采样率: 0
参数 11) 混音音量包络: 1
参数 12) 特征索引比率: 0.78 (0-1)
参数 13) 无声辅音保护 (减少伪音): 0.33 (数字越小 = 保护越多。0.50 表示不使用。)
示例: mi-test.pth saudio/Sidney.wav myTest.wav logs/mi-test/added_index.index 0 -2 harvest 160 3 0 1 0.95 0.33
推理: <在此处插入参数或复制粘贴示例>
运行 Tensorboard 📉
cd Mangio-RVC-Fork
make tensorboard
然后点击它提供的 tensorboard 链接并刷新数据。
更改 Gradio 主题:
-
[可选] 更改 Gradio 的主题:
- 用任何代码/文本编辑软件(如
notepad++
、notepad
、vscode
等)打开infer-web.py
2a. 按 Ctrl+F 搜索
with gr.Blocks(
,选择未被完全注释的那个2b. 转到第
1842
行,你会看到with gr.Blocks(theme='HaleyCH/HaleyCH_Theme') as app:
- 访问 Gradio 主题库:
3.1 选择你喜欢的任何主题(例如这个)
3.2 查看页面顶部
3.3 复制主题变量(在这个例子中,是
theme='freddyaboulton/dracula_revamped'
)- 在
infer-web.py
中用 Gradio 主题库 中任何主题的值替换theme='HaleyCH/HaleyCH_Theme'
- 用任何代码/文本编辑软件(如
共振峰移位说明
-
每次更改推理值时都要点击"应用"按钮。
-
顾名思义,目前你只能使用
wav
文件,而且处理速度很慢,请耐心等待。 -
如果你在
\formantshiftcfg\
文件夹中添加了新的preset.txt
,请点击带有刷新表情的按钮 -
如果你选择的预设被编辑过,点击刷新表情按钮将从文件中获取更新的值
其他
如果你使用 Windows,你可以下载并解压 RVC-beta.7z
以直接使用 RVC,并使用 go-web.bat
启动网页界面。
还有一个中文版的 RVC 教程,如有需要可以查看。