innnky / so-vits-svc

基于vits与softvc的歌声音色转换模型
GNU Affero General Public License v3.0
3.57k stars 1 forks source link

SoftVC VITS Singing Voice Conversion

SoVITS已停止更新并正式Archive

后续维护等工作的一些其他相关仓库:

声明

本项目为开源、离线的项目,SvcDevelopTeam 的所有成员与本项目的所有开发者以及维护者(以下简称贡献者)对本项目没有控制力。本项目的贡献者从未向任何组织或个人提供包括但不限于数据集提取、数据集加工、算力支持、训练支持、推理等一切形式的帮助;本项目的贡献者不知晓也无法知晓使用者使用该项目的用途。故一切基于本项目训练的 AI 模型和合成的音频都与本项目贡献者无关。一切由此造成的问题由使用者自行承担。

此项目完全离线运行,不能收集任何用户信息或获取用户输入数据。因此,这个项目的贡献者不知道所有的用户输入和模型,因此不负责任何用户输入。

本项目只是一个框架项目,本身并没有语音合成的功能,所有的功能都需要用户自己训练模型。同时,这个项目没有任何模型,任何二次分发的项目都与这个项目的贡献者无关。

📏 使用规约

Warning:请自行解决数据集授权问题,禁止使用非授权数据集进行训练!任何由于使用非授权数据集进行训练造成的问题,需自行承担全部责任和后果!与仓库、仓库维护者、svc develop team 无关!

  1. 本项目是基于学术交流目的建立,仅供交流与学习使用,并非为生产环境准备。
  2. 任何发布到视频平台的基于 sovits 制作的视频,都必须要在简介明确指明用于变声器转换的输入源歌声、音频,例如:使用他人发布的视频 / 音频,通过分离的人声作为输入源进行转换的,必须要给出明确的原视频、音乐链接;若使用是自己的人声,或是使用其他歌声合成引擎合成的声音作为输入源进行转换的,也必须在简介加以说明。
  3. 由输入源造成的侵权问题需自行承担全部责任和一切后果。使用其他商用歌声合成软件作为输入源时,请确保遵守该软件的使用条例,注意,许多歌声合成引擎使用条例中明确指明不可用于输入源进行转换!
  4. 禁止使用该项目从事违法行为与宗教、政治等活动,该项目维护者坚决抵制上述行为,不同意此条则禁止使用该项目。
  5. 继续使用视为已同意本仓库 README 所述相关条例,本仓库 README 已进行劝导义务,不对后续可能存在问题负责。
  6. 如果将此项目用于任何其他企划,请提前联系并告知本仓库作者,十分感谢。

English docs

Check here

Updates

诈尸一下,4.0-v2不少人炼出来效果很烂,那我就把这分支直接删了 \ 更新了4.0-v2模型,全部流程同4.0,在4.0-v2分支 这是sovits最后一次更新 \ 4.0模型及colab脚本已更新:在4.0分支 统一采样率使用44100hz(但推理显存占用比3.0的32khz还小),更换特征提取为contentvec, 目前稳定性还没有经过广泛测试

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

模型简介

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

注意

预先下载的模型文件


## colab一键数据集制作、训练脚本
[一键colab](https://colab.research.google.com/drive/1_-gh9i-wCPNlRZw6pYF-9UufetcVrGBX?usp=sharing)

## 数据集准备
仅需要以以下文件结构将数据集放入dataset_raw目录即可
```shell
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数量
    # 一旦模型开始训练后此项不可再更改
  2. 生成hubert与f0
    python preprocess_hubert_f0.py

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

训练

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

推理

使用 inference_main.py

Onnx导出

重要的事情说三遍:导出Onnx时,请重新克隆整个仓库!!!导出Onnx时,请重新克隆整个仓库!!!导出Onnx时,请重新克隆整个仓库!!!

使用 onnx_export.py

Gradio(WebUI)

使用 sovits_gradio.py

📚 一些法律条例参考

任何国家,地区,组织和个人使用此项目必须遵守以下法律

《民法典》

第一千零一十九条

任何组织或者个人不得以丑化、污损,或者利用信息技术手段伪造等方式侵害他人的肖像权。未经肖像权人同意,不得制作、使用、公开肖像权人的肖像,但是法律另有规定的除外。未经肖像权人同意,肖像作品权利人不得以发表、复制、发行、出租、展览等方式使用或者公开肖像权人的肖像。对自然人声音的保护,参照适用肖像权保护的有关规定。

第一千零二十四条

【名誉权】民事主体享有名誉权。任何组织或者个人不得以侮辱、诽谤等方式侵害他人的名誉权。

第一千零二十七条

【作品侵害名誉权】行为人发表的文学、艺术作品以真人真事或者特定人为描述对象,含有侮辱、诽谤内容,侵害他人名誉权的,受害人有权依法请求该行为人承担民事责任。行为人发表的文学、艺术作品不以特定人为描述对象,仅其中的情节与该特定人的情况相似的,不承担民事责任。

中华人民共和国宪法

中华人民共和国刑法

中华人民共和国民法典

中华人民共和国合同法