Merge pull request #283 from svc-develop-team/huanlinoto-docs-pangu-format

docs(readme.md): pangu format
This commit is contained in:
多玩幻灵qwq 2023-07-10 17:15:07 +08:00 committed by GitHub
commit 78911374f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 84 additions and 85 deletions

View File

@ -2,13 +2,13 @@
[**English**](./README.md) | [**中文简体**](./README_zh_CN.md)
#### ✨ 带有F0曲线编辑器角色混合时间轴编辑器的推理端 (Onnx模型的用途) : [MoeVoiceStudio](https://github.com/NaruseMioShirakana/MoeVoiceStudio)
#### ✨ 带有 F0 曲线编辑器,角色混合时间轴编辑器的推理端 (Onnx 模型的用途) : [MoeVoiceStudio](https://github.com/NaruseMioShirakana/MoeVoiceStudio)
#### ✨ 改善了交互的一个分支推荐:[34j/so-vits-svc-fork](https://github.com/34j/so-vits-svc-fork)
#### ✨ 支持实时转换的一个客户端:[w-okada/voice-changer](https://github.com/w-okada/voice-changer)
**本项目与Vits有着根本上的不同。Vits是TTS本项目是SVC。本项目无法实现TTSVits也无法实现SVC这两个项目的模型是完全不通用的。**
**本项目与 Vits 有着根本上的不同。Vits TTS本项目是 SVC。本项目无法实现 TTSVits 也无法实现 SVC这两个项目的模型是完全不通用的。**
## 重要通知
@ -16,7 +16,7 @@
## 声明
本项目为开源、离线的项目SvcDevelopTeam的所有成员与本项目的所有开发者以及维护者以下简称贡献者对本项目没有控制力。本项目的贡献者从未向任何组织或个人提供包括但不限于数据集提取、数据集加工、算力支持、训练支持、推理等一切形式的帮助本项目的贡献者不知晓也无法知晓使用者使用该项目的用途。故一切基于本项目训练的AI模型和合成的音频都与本项目贡献者无关。一切由此造成的问题由使用者自行承担。
本项目为开源、离线的项目SvcDevelopTeam 的所有成员与本项目的所有开发者以及维护者(以下简称贡献者)对本项目没有控制力。本项目的贡献者从未向任何组织或个人提供包括但不限于数据集提取、数据集加工、算力支持、训练支持、推理等一切形式的帮助;本项目的贡献者不知晓也无法知晓使用者使用该项目的用途。故一切基于本项目训练的 AI 模型和合成的音频都与本项目贡献者无关。一切由此造成的问题由使用者自行承担。
此项目完全离线运行,不能收集任何用户信息或获取用户输入数据。因此,这个项目的贡献者不知道所有的用户输入和模型,因此不负责任何用户输入。
@ -35,20 +35,20 @@
## 📝 模型简介
歌声音色转换模型通过SoftVC内容编码器提取源音频语音特征与F0同时输入VITS替换原本的文本输入达到歌声转换的效果。同时更换声码器为 [NSF HiFiGAN](https://github.com/openvpi/DiffSinger/tree/refactor/modules/nsf_hifigan)解决断音问题。
歌声音色转换模型,通过 SoftVC 内容编码器提取源音频语音特征,与 F0 同时输入 VITS 替换原本的文本输入达到歌声转换的效果。同时,更换声码器为 [NSF HiFiGAN](https://github.com/openvpi/DiffSinger/tree/refactor/modules/nsf_hifigan) 解决断音问题。
### 🆕 4.1-Stable 版本更新内容
+ 特征输入更换为 [Content Vec](https://github.com/auspicious3000/contentvec) 的第12层Transformer输出并兼容4.0分支
+ 特征输入更换为 [Content Vec](https://github.com/auspicious3000/contentvec) 的第 12 Transformer 输出,并兼容 4.0 分支
+ 更新浅层扩散,可以使用浅层扩散模型提升音质
+ 增加whisper语音编码器的支持
+ 增加 whisper 语音编码器的支持
+ 增加静态/动态声线融合
+ 增加响度嵌入
+ 增加特征检索,来自于[RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)
+ 增加特征检索,来自于 [RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)
### 🆕 关于兼容4.0模型的问题
### 🆕 关于兼容 4.0 模型的问题
+ 可通过修改4.0模型的config.json对4.0的模型进行支持需要在config.json的model字段中添加speech_encoder字段具体见下
+ 可通过修改 4.0 模型的 config.json 4.0 的模型进行支持,需要在 config.json model 字段中添加 speech_encoder 字段,具体见下
```
"model": {
@ -72,45 +72,45 @@
**以下编码器需要选择一个使用**
##### **1. 若使用contentvec作为声音编码器推荐**
##### **1. 若使用 contentvec 作为声音编码器(推荐)**
`vec768l12`与`vec256l9` 需要该编码器
+ contentvec [checkpoint_best_legacy_500.pt](https://ibm.box.com/s/z1wgl1stco8ffooyatzdwsqn2psd9lrr)
+ 放在`pretrain`目录下
或者下载下面的ContentVec大小只有199MB但效果相同:
或者下载下面的 ContentVec大小只有 199MB但效果相同
+ contentvec [hubert_base.pt](https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/hubert_base.pt)
+ 将文件名改为`checkpoint_best_legacy_500.pt`后,放在`pretrain`目录下
```shell
# contentvec
wget -P pretrain/ https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/main/hubert_base.pt -O checkpoint_best_legacy_500.pt
# 也可手动下载放在pretrain目录
# 也可手动下载放在 pretrain 目录
```
##### **2. 若使用hubertsoft作为声音编码器**
##### **2. 若使用 hubertsoft 作为声音编码器**
+ soft vc hubert[hubert-soft-0d54a1f4.pt](https://github.com/bshall/hubert/releases/download/v0.1/hubert-soft-0d54a1f4.pt)
+ 放在`pretrain`目录下
##### **3. 若使用Whisper-ppg作为声音编码器**
##### **3. 若使用 Whisper-ppg 作为声音编码器**
+ 下载模型 [medium.pt](https://openaipublic.azureedge.net/main/whisper/models/345ae4da62f9b3d59415adc60127b97c714f32e89e936602e85993674d08dcb1/medium.pt), 该模型适配`whisper-ppg`
+ 下载模型 [large-v2.pt](https://openaipublic.azureedge.net/main/whisper/models/81f7c96c852ee8fc832187b0132e569d6c3065a3252ed18e56effd0b6a73e524/large-v2.pt), 该模型适配`whisper-ppg-large`
+ 放在`pretrain`目录下
##### **4. 若使用cnhubertlarge作为声音编码器**
##### **4. 若使用 cnhubertlarge 作为声音编码器**
+ 下载模型 [chinese-hubert-large-fairseq-ckpt.pt](https://huggingface.co/TencentGameMate/chinese-hubert-large/resolve/main/chinese-hubert-large-fairseq-ckpt.pt)
+ 放在`pretrain`目录下
##### **5. 若使用dphubert作为声音编码器**
##### **5. 若使用 dphubert 作为声音编码器**
+ 下载模型 [DPHuBERT-sp0.75.pth](https://huggingface.co/pyf98/DPHuBERT/resolve/main/DPHuBERT-sp0.75.pth)
+ 放在`pretrain`目录下
##### **6. 若使用WavLM作为声音编码器**
##### **6. 若使用 WavLM 作为声音编码器**
+ 下载模型 [WavLM-Base+.pt](https://valle.blob.core.windows.net/share/wavlm/WavLM-Base+.pt?sv=2020-08-04&st=2023-03-01T07%3A51%3A05Z&se=2033-03-02T07%3A51%3A00Z&sr=c&sp=rl&sig=QJXmSJG9DbMKf48UDIU1MfzIro8HQOf3sqlNXiflY1I%3D), 该模型适配`wavlmbase+`
+ 放在`pretrain`目录下
##### **7. 若使用OnnxHubert/ContentVec作为声音编码器**
##### **7. 若使用 OnnxHubert/ContentVec 作为声音编码器**
+ 下载模型 [MoeSS-SUBModel](https://huggingface.co/NaruseMioShirakana/MoeSS-SUBModel/tree/main)
+ 放在`pretrain`目录下
@ -129,7 +129,7 @@ wget -P pretrain/ https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/mai
- "whisper-ppg-large"
- "wavlmbase+"
#### **可选项(强烈建议使用)**
#### **可选项(强烈建议使用)**
+ 预训练底模文件: `G_0.pth` `D_0.pth`
+ 放在`logs/44k`目录下
@ -137,30 +137,30 @@ wget -P pretrain/ https://huggingface.co/lj1995/VoiceConversionWebUI/resolve/mai
+ 扩散模型预训练底模文件: `model_0.pt `
+ 放在`logs/44k/diffusion`目录下
svc-develop-team(待定)或任何其他地方获取Sovits底模
svc-develop-team待定或任何其他地方获取 Sovits 底模
扩散模型引用了[Diffusion-SVC](https://github.com/CNChTu/Diffusion-SVC)的Diffusion Model底模与[Diffusion-SVC](https://github.com/CNChTu/Diffusion-SVC)的扩散模型底模通用,可以去[Diffusion-SVC](https://github.com/CNChTu/Diffusion-SVC)获取扩散模型的底模
扩散模型引用了 [Diffusion-SVC](https://github.com/CNChTu/Diffusion-SVC) Diffusion Model底模与 [Diffusion-SVC](https://github.com/CNChTu/Diffusion-SVC) 的扩散模型底模通用,可以去 [Diffusion-SVC](https://github.com/CNChTu/Diffusion-SVC) 获取扩散模型的底模
虽然底模一般不会引起什么版权问题,但还是请注意一下,比如事先询问作者,又或者作者在模型描述中明确写明了可行的用途
#### **可选项(根据情况选择)**
#### **可选项(根据情况选择)**
如果使用`NSF-HIFIGAN增强器`或`浅层扩散`的话需要下载预训练的NSF-HIFIGAN模型如果不需要可以不下载
如果使用`NSF-HIFIGAN 增强器`或`浅层扩散`的话,需要下载预训练的 NSF-HIFIGAN 模型,如果不需要可以不下载
+ 预训练的NSF-HIFIGAN声码器 [nsf_hifigan_20221211.zip](https://github.com/openvpi/vocoders/releases/download/nsf-hifigan-v1/nsf_hifigan_20221211.zip)
+ 预训练的 NSF-HIFIGAN 声码器 [nsf_hifigan_20221211.zip](https://github.com/openvpi/vocoders/releases/download/nsf-hifigan-v1/nsf_hifigan_20221211.zip)
+ 解压后,将四个文件放在`pretrain/nsf_hifigan`目录下
```shell
# nsf_hifigan
wget -P pretrain/ https://github.com/openvpi/vocoders/releases/download/nsf-hifigan-v1/nsf_hifigan_20221211.zip
unzip -od pretrain/nsf_hifigan pretrain/nsf_hifigan_20221211.zip
# 也可手动下载放在pretrain/nsf_hifigan目录
# 也可手动下载放在 pretrain/nsf_hifigan 目录
# 地址https://github.com/openvpi/vocoders/releases/tag/nsf-hifigan-v1
```
## 📊 数据集准备
仅需要以以下文件结构将数据集放入dataset_raw目录即可
仅需要以以下文件结构将数据集放入 dataset_raw 目录即可
```
dataset_raw
@ -190,15 +190,15 @@ dataset_raw
将音频切片至`5s - 15s`, 稍微长点也无伤大雅,实在太长可能会导致训练中途甚至预处理就爆显存
可以使用[audio-slicer-GUI](https://github.com/flutydeer/audio-slicer)、[audio-slicer-CLI](https://github.com/openvpi/audio-slicer)
可以使用 [audio-slicer-GUI](https://github.com/flutydeer/audio-slicer)、[audio-slicer-CLI](https://github.com/openvpi/audio-slicer)
一般情况下只需调整其中的`Minimum Interval`,普通陈述素材通常保持默认即可,歌唱素材可以调整至`100`甚至`50`
切完之后手动删除过长过短的音频
**如果你使用Whisper-ppg声音编码器进行训练所有的切片长度必须小于30s**
**如果你使用 Whisper-ppg 声音编码器进行训练,所有的切片长度必须小于 30s**
### 1. 重采样至44100Hz单声道
### 1. 重采样至 44100Hz 单声道
```shell
python resample.py
@ -206,7 +206,7 @@ python resample.py
#### 注意
虽然本项目拥有重采样、转换单声道与响度匹配的脚本resample.py但是默认的响度匹配是匹配到0db。这可能会造成音质的受损。而python的响度匹配包pyloudnorm无法对电平进行压限这会导致爆音。所以建议可以考虑使用专业声音处理软件如`adobe audition`等软件做响度匹配处理。若已经使用其他软件做响度匹配,可以在运行上述命令时添加`--skip_loudnorm`跳过响度匹配步骤。如:
虽然本项目拥有重采样、转换单声道与响度匹配的脚本 resample.py但是默认的响度匹配是匹配到 0db。这可能会造成音质的受损。而 python 的响度匹配包 pyloudnorm 无法对电平进行压限,这会导致爆音。所以建议可以考虑使用专业声音处理软件如`adobe audition`等软件做响度匹配处理。若已经使用其他软件做响度匹配,可以在运行上述命令时添加`--skip_loudnorm`跳过响度匹配步骤。如:
```shell
python resample.py --skip_loudnorm
@ -218,7 +218,7 @@ python resample.py --skip_loudnorm
python preprocess_flist_config.py --speech_encoder vec768l12
```
speech_encoder拥有以下选择
speech_encoder 拥有以下选择
```
vec768l12
@ -231,7 +231,7 @@ dphubert
wavlmbase+
```
如果省略speech_encoder参数默认值为vec768l12
如果省略 speech_encoder 参数,默认值为 vec768l12
**使用响度嵌入**
@ -243,29 +243,29 @@ python preprocess_flist_config.py --speech_encoder vec768l12 --vol_aug
使用后训练出的模型将匹配到输入源响度,否则为训练集响度。
#### 此时可以在生成的config.json与diffusion.yaml修改部分参数
#### 此时可以在生成的 config.json diffusion.yaml 修改部分参数
##### config.json
* `keep_ckpts`:训练时保留最后几个模型,`0`为保留所有,默认只保留最后`3`个
* `all_in_mem`加载所有数据集到内存中某些平台的硬盘IO过于低下、同时内存容量 **远大于** 数据集体积时可以启用
* `all_in_mem`:加载所有数据集到内存中,某些平台的硬盘 IO 过于低下、同时内存容量 **远大于** 数据集体积时可以启用
* `batch_size`单次训练加载到GPU的数据量调整到低于显存容量的大小即可
* `batch_size`:单次训练加载到 GPU 的数据量,调整到低于显存容量的大小即可
* `vocoder_name` : 选择一种声码器,默认为`nsf-hifigan`.
##### diffusion.yaml
* `cache_all_data`加载所有数据集到内存中某些平台的硬盘IO过于低下、同时内存容量 **远大于** 数据集体积时可以启用
* `cache_all_data`:加载所有数据集到内存中,某些平台的硬盘 IO 过于低下、同时内存容量 **远大于** 数据集体积时可以启用
* `duration`:训练时音频切片时长,可根据显存大小调整,**注意,该值必须小于训练集内音频的最短时间!**
* `batch_size`单次训练加载到GPU的数据量调整到低于显存容量的大小即可
* `batch_size`:单次训练加载到 GPU 的数据量,调整到低于显存容量的大小即可
* `timesteps` : 扩散模型总步数默认为1000.
* `timesteps` : 扩散模型总步数,默认为 1000.
* `k_step_max` : 训练时可仅训练`k_step_max`步扩散以节约训练时间,注意,该值必须小于`timesteps`0为训练整个扩散模型**注意,如果不训练整个扩散模型将无法使用仅扩散模型推理!**
* `k_step_max` : 训练时可仅训练`k_step_max`步扩散以节约训练时间,注意,该值必须小于`timesteps`0 为训练整个扩散模型,**注意,如果不训练整个扩散模型将无法使用仅扩散模型推理**
##### **声码器列表**
@ -274,13 +274,13 @@ nsf-hifigan
nsf-snake-hifigan
```
### 3. 生成hubert与f0
### 3. 生成 hubert f0
```shell
python preprocess_hubert_f0.py --f0_predictor dio
```
f0_predictor拥有四个选择
f0_predictor 拥有四个选择
```
crepe
@ -289,11 +289,11 @@ pm
harvest
```
如果训练集过于嘈杂请使用crepe处理f0
如果训练集过于嘈杂,请使用 crepe 处理 f0
如果省略f0_predictor参数默认值为dio
如果省略 f0_predictor 参数,默认值为 dio
尚若需要浅扩散功能(可选),需要增加--use_diff参数比如
尚若需要浅扩散功能(可选),需要增加--use_diff 参数,比如
```shell
python preprocess_hubert_f0.py --f0_predictor dio --use_diff
@ -311,7 +311,7 @@ python train.py -c configs/config.json -m 44k
### 扩散模型(可选)
尚若需要浅扩散功能,需要训练扩散模型,扩散模型训练方法为:
尚若需要浅扩散功能,需要训练扩散模型,扩散模型训练方法为
```shell
python train_diff.py -c configs/diffusion.yaml
@ -334,39 +334,39 @@ python inference_main.py -m "logs/44k/G_30400.pth" -c "configs/config.json" -n "
+ `-n` | `--clean_names`wav 文件名列表,放在 raw 文件夹下
+ `-t` | `--trans`:音高调整,支持正负(半音)
+ `-s` | `--spk_list`:合成目标说话人名称
+ `-cl` | `--clip`音频强制切片默认0为自动切片单位为秒/s
+ `-cl` | `--clip`:音频强制切片,默认 0 为自动切片,单位为秒/s
可选项部分:部分具体见下一节
+ `-lg` | `--linear_gradient`两段音频切片的交叉淡入长度如果强制切片后出现人声不连贯可调整该数值如果连贯建议采用默认值0单位为秒
+ `-f0p` | `--f0_predictor`:选择F0预测器,可选择crepe,pm,dio,harvest,默认为pm(注意crepe为原F0使用均值滤波器)
+ `-lg` | `--linear_gradient`:两段音频切片的交叉淡入长度,如果强制切片后出现人声不连贯可调整该数值,如果连贯建议采用默认值 0单位为秒
+ `-f0p` | `--f0_predictor`:选择 F0 预测器,可选择 crepe,pm,dio,harvest, 默认为 pm注意crepe 为原 F0 使用均值滤波器)
+ `-a` | `--auto_predict_f0`:语音转换自动预测音高,转换歌声时不要打开这个会严重跑调
+ `-cm` | `--cluster_model_path`:聚类模型或特征检索索引路径,留空则自动设为各方案模型的默认路径,如果没有训练聚类或特征检索则随便填
+ `-cr` | `--cluster_infer_ratio`聚类方案或特征检索占比范围0-1若没有训练聚类模型或特征检索则默认0即可
+ `-eh` | `--enhance`:是否使用NSF_HIFIGAN增强器,该选项对部分训练集少的模型有一定的音质增强效果,但是对训练好的模型有反面效果,默认关闭
+ `-shd` | `--shallow_diffusion`是否使用浅层扩散使用后可解决一部分电音问题默认关闭该选项打开时NSF_HIFIGAN增强器将会被禁止
+ `-cr` | `--cluster_infer_ratio`:聚类方案或特征检索占比,范围 0-1若没有训练聚类模型或特征检索则默认 0 即可
+ `-eh` | `--enhance`:是否使用 NSF_HIFIGAN 增强器,该选项对部分训练集少的模型有一定的音质增强效果,但是对训练好的模型有反面效果,默认关闭
+ `-shd` | `--shallow_diffusion`是否使用浅层扩散使用后可解决一部分电音问题默认关闭该选项打开时NSF_HIFIGAN 增强器将会被禁止
+ `-usm` | `--use_spk_mix`:是否使用角色融合/动态声线融合
+ `-lea` | `--loudness_envelope_adjustment`输入源响度包络替换输出响度包络融合比例越靠近1越使用输出响度包络
+ `-fr` | `--feature_retrieval`是否使用特征检索如果使用聚类模型将被禁用且cm与cr参数将会变成特征检索的索引路径与混合比例
+ `-lea` | `--loudness_envelope_adjustment`:输入源响度包络替换输出响度包络融合比例,越靠近 1 越使用输出响度包络
+ `-fr` | `--feature_retrieval`:是否使用特征检索,如果使用聚类模型将被禁用,且 cm cr 参数将会变成特征检索的索引路径与混合比例
浅扩散设置:
+ `-dm` | `--diffusion_model_path`:扩散模型路径
+ `-dc` | `--diffusion_config_path`:扩散模型配置文件路径
+ `-ks` | `--k_step`扩散步数越大越接近扩散模型的结果默认100
+ `-od` | `--only_diffusion`纯扩散模式该模式不会加载sovits模型以扩散模型推理
+ `-ks` | `--k_step`:扩散步数,越大越接近扩散模型的结果,默认 100
+ `-od` | `--only_diffusion`:纯扩散模式,该模式不会加载 sovits 模型,以扩散模型推理
+ `-se` | `--second_encoding`:二次编码,浅扩散前会对原始音频进行二次编码,玄学选项,有时候效果好,有时候效果差
### 注意!
如果使用`whisper-ppg` 声音编码器进行推理,需要将`--clip`设置为25`-lg`设置为1。否则将无法正常推理。
如果使用`whisper-ppg` 声音编码器进行推理,需要将`--clip`设置为 25`-lg`设置为 1。否则将无法正常推理。
## 🤔 可选项
如果前面的效果已经满意,或者没看明白下面在讲啥,那后面的内容都可以忽略,不影响模型使用(这些可选项影响比较小,可能在某些特定数据上有点效果,但大部分情况似乎都感知不太明显)
如果前面的效果已经满意,或者没看明白下面在讲啥,那后面的内容都可以忽略,不影响模型使用这些可选项影响比较小,可能在某些特定数据上有点效果,但大部分情况似乎都感知不太明显
### 自动f0预测
### 自动 f0 预测
4.0模型训练过程会训练一个f0预测器对于语音转换可以开启自动音高预测如果效果不好也可以使用手动的但转换歌声时请不要启用此功能会严重跑调
+ 在inference_main中设置auto_predict_f0为true即可
4.0 模型训练过程会训练一个 f0 预测器,对于语音转换可以开启自动音高预测,如果效果不好也可以使用手动的,但转换歌声时请不要启用此功能!!!会严重跑调!!
+ 在 inference_main 中设置 auto_predict_f0 true 即可
### 聚类音色泄漏控制
@ -375,11 +375,11 @@ python inference_main.py -m "logs/44k/G_30400.pth" -c "configs/config.json" -n "
使用聚类前面的已有步骤不用进行任何的变动,只需要额外训练一个聚类模型,虽然效果比较有限,但训练成本也比较低
+ 训练过程:
+ 使用cpu性能较好的机器训练据我的经验在腾讯云6核cpu训练每个speaker需要约4分钟即可完成训练
+ 使用 cpu 性能较好的机器训练,据我的经验在腾讯云 6 cpu 训练每个 speaker 需要约 4 分钟即可完成训练
+ 执行`python cluster/train_cluster.py`,模型的输出会在`logs/44k/kmeans_10000.pt`
+ 聚类模型目前可以使用gpu进行训练执行`python cluster/train_cluster.py --gpu`
+ 聚类模型目前可以使用 gpu 进行训练,执行`python cluster/train_cluster.py --gpu`
+ 推理过程:
+ `inference_main.py`中指定`cluster_model_path` 为模型输出文件, 留空则默认为`logs/44k/kmeans_10000.pt`
+ `inference_main.py`中指定`cluster_model_path` 为模型输出文件留空则默认为`logs/44k/kmeans_10000.pt`
+ `inference_main.py`中指定`cluster_infer_ratio``0`为完全不使用聚类,`1`为只使用聚类,通常设置`0.5`即可
### 特征检索
@ -387,7 +387,7 @@ python inference_main.py -m "logs/44k/G_30400.pth" -c "configs/config.json" -n "
介绍:跟聚类方案一样可以减小音色泄漏,咬字比聚类稍好,但会降低推理速度,采用了融合的方式,可以线性控制特征检索与非特征检索的占比,
+ 训练过程:
首先需要在生成hubert与f0后执行
首先需要在生成 hubert f0 后执行:
```shell
python train_index.py -c configs/config.json
@ -397,7 +397,7 @@ python train_index.py -c configs/config.json
+ 推理过程:
+ 需要首先指定`--feature_retrieval`,此时聚类方案会自动切换到特征检索方案
+ `inference_main.py`中指定`cluster_model_path` 为模型输出文件, 留空则默认为`logs/44k/feature_and_index.pkl`
+ `inference_main.py`中指定`cluster_model_path` 为模型输出文件留空则默认为`logs/44k/feature_and_index.pkl`
+ `inference_main.py`中指定`cluster_infer_ratio``0`为完全不使用特征检索,`1`为只使用特征检索,通常设置`0.5`即可
### [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/svc-develop-team/so-vits-svc/blob/4.1-Stable/sovits4_for_colab.ipynb) [sovits4_for_colab.ipynb](https://colab.research.google.com/github/svc-develop-team/so-vits-svc/blob/4.1-Stable/sovits4_for_colab.ipynb)
@ -419,17 +419,17 @@ python compress_model.py -c="configs/config.json" -i="logs/44k/G_30400.pth" -o="
**参考`webUI.py`文件中,小工具/实验室特性的静态声线融合。**
介绍:该功能可以将多个声音模型合成为一个声音模型(多个模型参数的凸组合或线性组合),从而制造出现实中不存在的声线
介绍:该功能可以将多个声音模型合成为一个声音模型(多个模型参数的凸组合或线性组合),从而制造出现实中不存在的声线
**注意:**
1. 该功能仅支持单说话人的模型
2. 如果强行使用多说话人模型需要保证多个模型的说话人数量相同这样可以混合同一个SpaekerID下的声音
3. 保证所有待混合模型的config.json中的model字段是相同的
4. 输出的混合模型可以使用待合成模型的任意一个config.json但聚类模型将不能使用
2. 如果强行使用多说话人模型,需要保证多个模型的说话人数量相同,这样可以混合同一个 SpaekerID 下的声音
3. 保证所有待混合模型的 config.json 中的 model 字段是相同的
4. 输出的混合模型可以使用待合成模型的任意一个 config.json但聚类模型将不能使用
5. 批量上传模型的时候最好把模型放到一个文件夹选中后一起上传
6. 混合比例调整建议大小在0-100之间也可以调为其他数字但在线性组合模式下会出现未知的效果
7. 混合完毕后文件将会保存在项目根目录中文件名为output.pth
8. 凸组合模式会将混合比例执行Softmax使混合比例相加为1而线性组合模式不会
6. 混合比例调整建议大小在 0-100 之间,也可以调为其他数字,但在线性组合模式下会出现未知的效果
7. 混合完毕后,文件将会保存在项目根目录中,文件名为 output.pth
8. 凸组合模式会将混合比例执行 Softmax 使混合比例相加为 1而线性组合模式不会
### 动态声线混合
@ -437,29 +437,28 @@ python compress_model.py -c="configs/config.json" -i="logs/44k/G_30400.pth" -o="
角色混合轨道 编写规则:
角色ID : \[\[起始时间1, 终止时间1, 起始数值1, 起始数值1], [起始时间2, 终止时间2, 起始数值2, 起始数值2]]
角色 ID : \[\[起始时间 1, 终止时间 1, 起始数值 1, 起始数值 1], [起始时间 2, 终止时间 2, 起始数值 2, 起始数值 2]]
起始时间和前一个的终止时间必须相同第一个起始时间必须为0最后一个终止时间必须为1 时间的范围为0-1
起始时间和前一个的终止时间必须相同,第一个起始时间必须为 0最后一个终止时间必须为 1 (时间的范围为 0-1
全部角色必须填写,不使用的角色填\[\[0., 1., 0., 0.]]即可
全部角色必须填写,不使用的角色填、[\[0., 1., 0., 0.]] 即可
融合数值可以随便填在指定的时间段内从起始数值线性变化为终止数值内部会自动确保线性组合为1凸组合条件可以放心使用
融合数值可以随便填,在指定的时间段内从起始数值线性变化为终止数值,内部会自动确保线性组合为 1凸组合条件可以放心使用
推理的时候使用`--use_spk_mix`参数即可启用动态声线混合
## 📤 Onnx导出
## 📤 Onnx 导出
使用 [onnx_export.py](onnx_export.py)
+ 新建文件夹:`checkpoints` 并打开
+ 在`checkpoints`文件夹中新建一个文件夹作为项目文件夹,文件夹名为你的项目名称,比如`aziplayer`
+ 将你的模型更名为`model.pth`,配置文件更名为`config.json`,并放置到刚才创建的`aziplayer`文件夹下
+ 将 [onnx_export.py](onnx_export.py) 中`path = "NyaruTaffy"` 的 `"NyaruTaffy"` 修改为你的项目名称,`path = "aziplayer" (onnx_export_speaker_mix为支持角色混合的onnx导出)`
+ 将 [onnx_export.py](onnx_export.py) 中`path = "NyaruTaffy"` 的 `"NyaruTaffy"` 修改为你的项目名称,`path = "aziplayer" (onnx_export_speaker_mix为支持角色混合的 onnx 导出)`
+ 运行 [onnx_export.py](onnx_export.py)
+ 等待执行完毕,在你的项目文件夹下会生成一个`model.onnx`,即为导出的模型
注意Hubert Onnx模型请使用MoeSS提供的模型目前无法自行导出fairseq中Hubert有不少onnx不支持的算子和涉及到常量的东西在导出时会报错或者导出的模型输入输出shape和结果都有问题
注意Hubert Onnx 模型请使用 MoeSS 提供的模型目前无法自行导出fairseq 中 Hubert 有不少 onnx 不支持的算子和涉及到常量的东西,在导出时会报错或者导出的模型输入输出 shape 和结果都有问题)
## 📎 引用及论文
@ -484,7 +483,7 @@ python compress_model.py -c="configs/config.json" -i="logs/44k/G_30400.pth" -o="
## ☀️ 旧贡献者
因为某些原因原作者进行了删库处理本仓库重建之初由于组织成员疏忽直接重新上传了所有文件导致以前的contributors全部木大现在在README里重新添加一个旧贡献者列表
因为某些原因原作者进行了删库处理,本仓库重建之初由于组织成员疏忽直接重新上传了所有文件导致以前的 contributors 全部木大,现在在 README 里重新添加一个旧贡献者列表
*某些成员已根据其个人意愿不将其列出*
@ -495,7 +494,7 @@ python compress_model.py -c="configs/config.json" -i="logs/44k/G_30400.pth" -o="
<td align="center"><a href="https://github.com/ForsakenRei"><img src="https://avatars.githubusercontent.com/u/23041178?v=4" width="100px;" alt=""/><br /><sub><b>しぐれ</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/TomoGaSukunai"><img src="https://avatars.githubusercontent.com/u/25863522?v=4" width="100px;" alt=""/><br /><sub><b>TomoGaSukunai</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/Plachtaa"><img src="https://avatars.githubusercontent.com/u/112609742?v=4" width="100px;" alt=""/><br /><sub><b>Plachtaa</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/zdxiaoda"><img src="https://avatars.githubusercontent.com/u/45501959?v=4" width="100px;" alt=""/><br /><sub><b>zd小达</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/zdxiaoda"><img src="https://avatars.githubusercontent.com/u/45501959?v=4" width="100px;" alt=""/><br /><sub><b>zd 小达</b></sub></a><br /></td>
<td align="center"><a href="https://github.com/Archivoice"><img src="https://avatars.githubusercontent.com/u/107520869?v=4" width="100px;" alt=""/><br /><sub><b>凍聲響世</b></sub></a><br /></td>
</tr>
</table>