Update README.md
Browse files
README.md
CHANGED
@@ -1,3 +1,155 @@
|
|
1 |
---
|
2 |
license: cc-by-nc-sa-4.0
|
|
|
|
|
3 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
---
|
2 |
license: cc-by-nc-sa-4.0
|
3 |
+
tags:
|
4 |
+
- so-vits-svc
|
5 |
---
|
6 |
+
# so-vits-svc4.1-Tim_Cook
|
7 |
+
|
8 |
+
## 官方项目地址:https://github.com/svc-develop-team/so-vits-svc
|
9 |
+
|
10 |
+
## 如何使用?How to use?
|
11 |
+
|
12 |
+
1. install requirements
|
13 |
+
2. download pretrain model [checkpoint_best_legacy_500.pt](https://ibm.box.com/s/z1wgl1stco8ffooyatzdwsqn2psd9lrr) and put it into `./pretrain`
|
14 |
+
3. put `Tim_Cook.pth`, `feature_and_index.pkl`, 'kmeans_10000.pt' into `./logs/44k`
|
15 |
+
4. put `config.json`into `./config`
|
16 |
+
5. enjoy!
|
17 |
+
|
18 |
+
## 以下引用官方文档
|
19 |
+
|
20 |
+
## 推理
|
21 |
+
|
22 |
+
使用 [inference_main.py](inference_main.py)
|
23 |
+
|
24 |
+
```shell
|
25 |
+
# 例
|
26 |
+
python inference_main.py -m "logs/44k/G_30400.pth" -c "configs/config.json" -n "君の知らない物語-src.wav" -t 0 -s "nen"
|
27 |
+
```
|
28 |
+
|
29 |
+
必填项部分:
|
30 |
+
|
31 |
+
+ `-m` | `--model_path`:模型路径
|
32 |
+
+ `-c` | `--config_path`:配置文件路径
|
33 |
+
+ `-n` | `--clean_names`:wav 文件名列表,放在 raw 文件夹下
|
34 |
+
+ `-t` | `--trans`:音高调整,支持正负(半音)
|
35 |
+
+ `-s` | `--spk_list`:合成目标说话人名称
|
36 |
+
+ `-cl` | `--clip`:音频强制切片,默认0为自动切片,单位为秒/s
|
37 |
+
|
38 |
+
可选项部分:部分具体见下一节
|
39 |
+
|
40 |
+
+ `-lg` | `--linear_gradient`:两段音频切片的交叉淡入长度,如果强制切片后出现人声不连贯可调整该数值,如果连贯建议采用默认值0,单位为秒
|
41 |
+
+ `-f0p` | `--f0_predictor`:选择F0预测器,可选择crepe,pm,dio,harvest,默认为pm(注意:crepe为原F0使用均值滤波器)
|
42 |
+
+ `-a` | `--auto_predict_f0`:语音转换自动预测音高,转换歌声时不要打开这个会严重跑调
|
43 |
+
+ `-cm` | `--cluster_model_path`:聚类模型或特征检索索引路径,如果没有训练聚类或特征检索则随便填
|
44 |
+
+ `-cr` | `--cluster_infer_ratio`:聚类方案或特征检索占比,范围0-1,若没有训练聚类模型或特征检索则默认0即可
|
45 |
+
+ `-eh` | `--enhance`:是否使用NSF_HIFIGAN增强器,该选项对部分训练集少的模型有一定的音质增强效果,但是对训练好的模型有反面效果,默认关闭
|
46 |
+
+ `-shd` | `--shallow_diffusion`:是否使用浅层扩散,使用后可解决一部分电音问题,默认关闭,该选项打开时,NSF_HIFIGAN增强器将会被禁止
|
47 |
+
+ `-usm` | `--use_spk_mix`:是否使用角色融合/动态声线融合
|
48 |
+
+ `-lea` | `--loudness_envelope_adjustment`:输入源响度包络替换输出响度包络融合比例,越靠近1越使用输出响度包络
|
49 |
+
+ `-fr` | `--feature_retrieval`:是否使用特征检索,如果使用聚类模型将被禁用,且cm与cr参数将会变成特征检索的索引路径与混合比例
|
50 |
+
|
51 |
+
浅扩散设置:
|
52 |
+
|
53 |
+
+ `-dm` | `--diffusion_model_path`:扩散模型路径
|
54 |
+
+ `-dc` | `--diffusion_config_path`:扩散模型配置文件路径
|
55 |
+
+ `-ks` | `--k_step`:扩散步数,越大越接近扩散模型的结果,默认100
|
56 |
+
+ `-od` | `--only_diffusion`:纯扩散模式,该模式不会加载sovits模型,以扩散模型推理
|
57 |
+
+ `-se` | `--second_encoding`:二次编码,浅扩散前会对原始音频进行二次编码,玄学选项,有时候效果好,有时候效果差
|
58 |
+
|
59 |
+
### 注意
|
60 |
+
|
61 |
+
如果使用`whisper-ppg` 声音编码器进行推理,需要将`--clip`设置为25,`-lg`设置为1。否则将无法正常推理。
|
62 |
+
|
63 |
+
## 🤔 可选项
|
64 |
+
|
65 |
+
如果前面的效果已经满意,或者没看明白下面在讲啥,那后面的内容都可以忽略,不影响模型使用(这些可选项影响比较小,可能在某些特定数据上有点效果,但大部分情况似乎都感知不太明显)
|
66 |
+
|
67 |
+
### 自动f0预测
|
68 |
+
|
69 |
+
4.0模型训练过程会训练一个f0预测器,对于语音转换可以开启自动音高预测,如果效果不好也可以使用手动的,但转换歌声时请不要启用此功能!!!会严重跑调!!
|
70 |
+
|
71 |
+
+ 在inference_main中设置auto_predict_f0为true即可
|
72 |
+
### 聚类音色泄漏控制
|
73 |
+
介绍:聚类方案可以减小音色泄漏,使得模型训练出来更像目标的音色(但其实不是特别明显),但是单纯的聚类方案会降低模型的咬字(会口齿不清)(这个很明显),本模型采用了融合的方式,可以线性控制聚类方案与非聚类方案的占比,也就是可以手动在"像目标音色" 和 "咬字清晰" 之间调整比例,找到合适的折中点
|
74 |
+
使用聚类前面的已有步骤不用进行任何的变动,只需要额外训练一个聚类模型,虽然效果比较有限,但训练成本也比较低
|
75 |
+
+ 训练过程:
|
76 |
+
+ 使用cpu性能较好的机器训练,据我的经验在腾讯云6核cpu训练每个speaker需要约4分钟即可完成训练
|
77 |
+
+ 执行`python cluster/train_cluster.py`,模型的输出会在`logs/44k/kmeans_10000.pt`
|
78 |
+
+ 聚类模型目前可以使用gpu进行训练,执行`python cluster/train_cluster.py --gpu`
|
79 |
+
+ 推理过程:
|
80 |
+
+ `inference_main.py`中指定`cluster_model_path`
|
81 |
+
+ `inference_main.py`中指定`cluster_infer_ratio`,`0`为完全不使用聚类,`1`为只使用聚类,通常设置`0.5`即可
|
82 |
+
|
83 |
+
### 特征检索
|
84 |
+
|
85 |
+
介绍:跟聚类方案一样可以减小音色泄漏,咬字比聚类稍好,但会降低推理速度,采用了融合的方式,可以线性控制特征检索与非特征检索的占比,
|
86 |
+
|
87 |
+
+ 训练过程:
|
88 |
+
首先需要在生成hubert与f0后执行:
|
89 |
+
|
90 |
+
```shell
|
91 |
+
python train_index.py -c configs/config.json
|
92 |
+
```
|
93 |
+
|
94 |
+
模型的输出会在`logs/44k/feature_and_index.pkl`
|
95 |
+
|
96 |
+
+ 推理过程:
|
97 |
+
+ 需要首先制定`--feature_retrieval`,此时聚类方案会自动切换到特征检索方案
|
98 |
+
+ `inference_main.py`中指定`cluster_model_path` 为模型输出文件
|
99 |
+
+ `inference_main.py`中指定`cluster_infer_ratio`,`0`为完全不使用特征检索,`1`为只使用特征检索,通常设置`0.5`即可
|
100 |
+
|
101 |
+
### 静态声线混合
|
102 |
+
|
103 |
+
**参考`webUI.py`文件中,小工具/实验室特性的静态声线融合。**
|
104 |
+
|
105 |
+
介绍:该功能可以将多个声音模型合成为一个声音模型(多个模型参数的凸组合或线性组合),从而制造出现实中不存在的声线
|
106 |
+
**注意:**
|
107 |
+
|
108 |
+
1. 该功能仅支持单说话人的模型
|
109 |
+
2. 如果强行使用多说话人模型,需要保证多个模型的说话人数量相同,这样可以混合同一个SpaekerID下的声音
|
110 |
+
3. 保证所有待混合模型的config.json中的model字段是相同的
|
111 |
+
4. 输出的混合模型可以使用待合成模型的任意一个config.json,但聚类模型将不能使用
|
112 |
+
5. 批量上传模型的时候最好把模型放到一个文件夹选中后一起上传
|
113 |
+
6. 混合比例调整建议大小在0-100之间,也可以调为其他数字,但在线性组合模式下会出现未知的效果
|
114 |
+
7. 混合完毕后,文件将会保存在项目根目录中,文件名为output.pth
|
115 |
+
8. 凸组合模式会将混合比例执行Softmax使混合比例相加为1,而线性组合模式不会
|
116 |
+
|
117 |
+
### 动态声线混合
|
118 |
+
|
119 |
+
**参考`spkmix.py`文件中关于动态声线混合的介绍**
|
120 |
+
|
121 |
+
角色混合轨道 编写规则:
|
122 |
+
|
123 |
+
角色ID : \[\[起始时间1, 终止时间1, 起始数值1, 起始数值1], [起始时间2, 终止时间2, 起始数值2, 起始数值2]]
|
124 |
+
|
125 |
+
起始时间和前一个的终止时间必须相同,第一个起始时间必须为0,最后一个终止时间必须为1 (时间的范围为0-1)
|
126 |
+
|
127 |
+
全部角色必须填写,不使用的角色填\[\[0., 1., 0., 0.]]即可
|
128 |
+
|
129 |
+
融合数值可以随便填,在指定的时间段内从起始数值线性变化为终止数值,内部会自动确保线性组合为1(凸组合条件),可以放心使用
|
130 |
+
|
131 |
+
推理的时候使用`--use_spk_mix`参数即可启用动态声线混合
|
132 |
+
|
133 |
+
## 📚 一些法律条例参考
|
134 |
+
|
135 |
+
#### 任何国家,地区,组织和个人使用此项目必须遵守以下法律
|
136 |
+
|
137 |
+
#### 《民法典》
|
138 |
+
|
139 |
+
##### 第一千零一十九条
|
140 |
+
|
141 |
+
任何组织或者个人不得以丑化、污损,或者利用信息技术手段伪造等方式侵害他人的肖像权。未经肖像权人同意,不得制作、使用、公开肖像权人的肖像,但是法律另有规定的除外。未经肖像权人同意,肖像作品权利人不得以发表、复制、发行、出租、展览等方式使用或者公开肖像权人的肖像。对自然人声音的保护,参照适用肖像权保护的有关规定。
|
142 |
+
|
143 |
+
##### 第一千零二十四条
|
144 |
+
|
145 |
+
【名誉权】民事主体享有名誉权。任何组织或者个人不得以侮辱、诽谤等方式侵害他人的名誉权。
|
146 |
+
|
147 |
+
##### 第一千零二十七条
|
148 |
+
|
149 |
+
【作品侵害名誉权】行为人发表的文学、艺术作品以真人真事或者特定人为描述对象,含有侮辱、诽谤内容,侵害他人名誉权的,受害人有权依法请求该行为人承担民事责任。行为人发表的文学、艺术作品不以特定人为描述对象,仅其中的情节与该特定人的情况相似的,不承担民事责任。
|
150 |
+
|
151 |
+
#### 《[中华人民共和国宪法](http://www.gov.cn/guoqing/2018-03/22/content_5276318.htm)》
|
152 |
+
|
153 |
+
#### 《[中华人民共和国刑法](http://gongbao.court.gov.cn/Details/f8e30d0689b23f57bfc782d21035c3.html?sw=中华人民共和国刑法)》
|
154 |
+
|
155 |
+
#### 《[中华人民共和国民法典](http://gongbao.court.gov.cn/Details/51eb6750b8361f79be8f90d09bc202.html)》
|