Skip to content

基于vits与softvc的歌声音色转换模型

License

Notifications You must be signed in to change notification settings

zwzheng45/so-vits-svc

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Colab用

Open In Colab

SoftVC VITS Singing Voice Conversion

English docs

英语资料

Update

据不完全统计,多说话人似乎会导致音色泄漏加重,不建议训练超过5人的模型,目前的建议是如果想炼出来更像目标音色,尽可能炼单说话人的
断音问题已解决,音质提升了不少
2.0版本已经移至 sovits_2.0分支
3.0版本使用FreeVC的代码结构,与旧版本不通用
DiffSVC 相比,在训练数据质量非常高时diffsvc有着更好的表现,对于质量差一些的数据集,本仓库可能会有更好的表现,此外,本仓库推理速度上比diffsvc快很多

模型简介

歌声音色转换模型,通过SoftVC内容编码器提取源音频语音特征,与F0同时输入VITS替换原本的文本输入达到歌声转换的效果。同时,更换声码器为 NSF HiFiGAN 解决断音问题

注意

  • 当前分支是32khz版本的分支,32khz模型推理更快,显存占用大幅减小,数据集所占硬盘空间也大幅降低,推荐训练该版本模型
  • 如果要训练48khz的模型请切换到main分支

预先下载的模型文件

  • soft vc hubert:hubert-soft-0d54a1f4.pt
    • 放在hubert目录下
  • 预训练底模文件 G_0.pthD_0.pth
    • 放在logs/32k 目录下
    • 预训练底模为必选项,因为据测试从零开始训练有概率不收敛,同时底模也能加快训练速度
    • 预训练底模训练数据集包含云灏 即霜 辉宇·星AI 派蒙 绫地宁宁,覆盖男女生常见音域,可以认为是相对通用的底模
    • 底模删除了optimizer speaker_embedding 等无关权重, 只可以用于初始化训练,无法用于推理
    • 该底模和48khz底模通用
# 一键下载
# hubert
wget -P hubert/ https://github.com/bshall/hubert/releases/download/v0.1/hubert-soft-0d54a1f4.pt
# G与D预训练模型
wget -P logs/32k/ https://huggingface.co/innnky/sovits_pretrained/resolve/main/G_0.pth
wget -P logs/32k/ https://huggingface.co/innnky/sovits_pretrained/resolve/main/D_0.pth

colab一键数据集制作、训练脚本

一键colab

数据集准备

仅需要以以下文件结构将数据集放入dataset_raw目录即可

dataset_raw
├───speaker0
│   ├───xxx1-xxx1.wav
│   ├───...
│   └───Lxx-0xx8.wav
└───speaker1
    ├───xx2-0xxx2.wav
    ├───...
    └───xxx7-xxx007.wav

数据预处理

  1. 重采样至 32khz
python resample.py
  1. 自动划分训练集 验证集 测试集 以及自动生成配置文件
python preprocess_flist_config.py
# 注意
# 自动生成的配置文件中,说话人数量n_speakers会自动按照数据集中的人数而定
# 为了给之后添加说话人留下一定空间,n_speakers自动设置为 当前数据集人数乘2
# 如果想多留一些空位可以在此步骤后 自行修改生成的config.json中n_speakers数量
# 一旦模型开始训练后此项不可再更改
  1. 生成hubert与f0
python preprocess_hubert_f0.py

执行完以上步骤后 dataset 目录便是预处理完成的数据,可以删除dataset_raw文件夹了

训练

python train.py -c configs/config.json -m 32k

推理

使用 inference_main.py

  • 更改model_path为你自己训练的最新模型记录点
  • 将待转换的音频放在raw文件夹下
  • clean_names 写待转换的音频名称
  • trans 填写变调半音数量
  • spk_list 填写合成的说话人名称

Onnx导出

使用 onnx_export.py

  • 新建文件夹:checkpoints 并打开
  • 在checkpoints文件夹中新建一个文件夹作为项目文件夹,文件夹名为你的项目名称
  • 将你的模型更名为model.pth,配置文件更名为config.json,并放置到刚才创建的文件夹下
  • onnx_export.py 中path = "NyaruTaffy" 的 "NyaruTaffy" 修改为你的项目名称
  • 运行 onnx_export.py
  • 等待执行完毕,在你的项目文件夹下会生成一个model.onnx,即为导出的模型
  • 注意:若想导出48K模型,请按照以下步骤修改文件
    • 请打开model_onnx.py,将其中最后一个class的hps中32000改为48000
    • 请打开nvSTFT,将其中所有32000改为48000

    Onnx模型支持的UI

Gradio(WebUI)

使用 sovits_gradio.py

  • 新建文件夹:checkpoints 并打开
  • 在checkpoints文件夹中新建一个文件夹作为项目文件夹,文件夹名为你的项目名称
  • 将你的模型更名为model.pth,配置文件更名为config.json,并放置到刚才创建的文件夹下
  • 运行 sovits_gradio.py

About

基于vits与softvc的歌声音色转换模型

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages

  • Jupyter Notebook 98.4%
  • Python 1.6%