术语
- Speaker encoder:说话人编码器,提取指定说话人语音的特征向量
- Synthesizer:合成器,用文本结合上面的特征向量,产生将指定说话人特征融入指定文本对应的语音的频谱
- Vocoder:声码器,用频谱生成语音
准备
硬件环境准备
- 显卡:建议8G显存以上, 支持CUDA的NVIDIA显卡,小显存或CPU需要按 问题3 修改训练参数否则会报错。
- 硬盘:建议500GB可用空间以上的硬盘,语音数据集相当庞大,并且理论上数据集越大最后模型效果更好。
软件环境准备
本教程主要面向Windows 10使用者,一方面是用户群体较大,另一方面是我只有Windows 10囧,linux系统理论上只需要针对一些警告与报错修复也是可行的,但其他机器例如M1需要特殊考虑。
确保训练用的机器已经成功装好以下程序:
- Python 3.9.6 (或其他高于3.7的版本)
- CUDA Toolkit,版本 10.2 或 11.1 (可能需要显卡驱动升级后支持)
- 【强烈推荐】Anaconda 用清华Tuna源
- PyTorch 选择对应的平台和版本后复制命令运行安装,示例见下图
- ffmpeg 并设置环境变量
- 在项目源代码根目录下运行
pip install -r requirements.txt
来安装剩余的必要包。 - 安装 webrtcvad
pip install webrtcvad-wheels
。
下载数据集
在有500GB可用空间以上的分区,准备一个语音数据目录(下称 <datasets_root>
),根据要训练的模型进行数据集选择:
Encoder
训练与否对最终效果影响较小 参考:https://zhuanlan.zhihu.com/p/415926999
- TODO
Synthesizer & Vocoder
aidatatang_200zh (推荐)
下载后为tar.gz格式,需要先解压两次得到文件夹<datasets_root>\aidatatang_200zh
后,再把aidatatang_200zh\corpus\train
下的全选再次解压,得到以下文件结构:
<datasets_root>├─aidatatang_200zh│ └─corpus│ └─train│ ├─G4180
│ ├─...更多语音文件夹
magicdata
下载后为tar.gz格式,需要先解压两次得到文件夹train
,在<datasets_root>
下新建名为 magicdata
的文件夹,转移文件夹train
到magicdata
文件夹中,得到以下文件结构:
<datasets_root>├─magicdata│ └─train│ ├─5_541
│ ├─...更多语音文件夹
aishell3
下载后为tar.gz格式,需要先解压两次得到文件夹<datasets_root>\aishell3
后,得到以下文件结构:
<datasets_root>├─aishell3│ └─train
│ └─wav
│ ├─SSB0005
│ ├─...更多语音文件夹
开始训练
Encoder
- TODO
Synthesizer & Vocoder
进行音频和梅尔频谱图预处理: python pre.py <datasets_root>
可以传入参数 –dataset {dataset}
支持 aidatatang_200zh, magicdata, aishell3
训练合成器: python synthesizer_train.py mandarin <datasets_root>/SV2TTS/synthesizer
训练结束
是不存在的,炼丹姿势千千万,大功告成别希望。每天换换数据集和参数组合,跑着跑着就发现效果更好了,持续在知乎专栏更新技巧。
训练工作可以观察到 <synthesizer>\saved_models\<id>
多了以下几个文件夹:
Mel-spectrograms, wavs
训练过程自动保存的测试记录Metas
基本模型参数Plots
训练过程自动保存的阶段结果截图
在练的过程中,至少要等到Plots
里面的attention图出现收敛(Convergence),才能正常发出人声,如下图出现一条明显斜线,否则就是一团奇怪噪音,对于loss数字就多寡随意,丰俭由人了。
其他
微调 fine tune: CNN入门讲解:什么是微调(Fine Tune)?
2022年12月25日 14:21
,某些资源具有时效性,若有错误或已失效,请联系知计修复。
暂无评论内容