Fish Diffusion一键包&使用教程 V1.0
请自行解决数据集授权问题,禁止使用非授权数据集进行训练!任何由于使用非授权数据集进行训练造成的问题,需自行承担全部责任和后果!严禁损害他人名誉权以及肖像权!

仓库链接:https://github.com/fishaudio/fish-diffusion
wiki链接(英文):https://fishaudio.github.io/fish-diffusion/
配置要求:一张NVIDIA显卡(CPU也可以训练,但是速度惨不忍睹,A卡需要安装ROCm,目前已知最低能在GTX1650 4G显卡上成功训练)
充足的硬盘空间(不少于50G)
CPU和内存的要求不高,基本上不会拖慢训练速度
软件要求:建议安装一个编辑器,例如Sublime Text,VS Code等等,并且将.py文件的默认打开方式设置为编辑器,方便修改文件。
数据集要求:不低于2小时的高质量干声,并且所有音频文件已经裁切至5-15秒,删除了过重的呼吸声。(无需标注,少那么十几分钟也没啥问题)
不适用的数据集:时长短(比如只有30分钟),人声是用Demucs,MDX-Net这类AI算法分离出来的
本教程不保证多人可以正常训练,请使用单人训练
第1步:下载解压一键包
百度网盘:https://pan.baidu.com/s/1taq3cCl3A3tbkhqGTk663Q?pwd=wiyn
阿里云盘:https://www.aliyundrive.com/s/pewzzWMoZ5Q 提取码: zd20
文件结构:
checkpoints:存放声码器模型
configs:预处理和训练所用到的配置文件
configs_backup:配置文件的备份,玩坏了直接覆盖configs文件夹即可
dataset:存放数据集
dictionaries:字典(功能未知?)
env:python3.10以及依赖库文件
fish_diffusion:项目主体
logs:存放tensorboard的训练日志以及模型文件
tests:测试(功能未知?)
tools:各种工具
然后运行 “ 0.复制缓存文件.bat ” ,复制模型文件。
第2步:存放数据集
如果只需要训练一位说话人,如图1中的格式存放数据集
train文件夹是训练集,存放你的音频文件。(必须是同一个人的声音)
valid文件夹是验证集,在训练集里面随机选择5-10条音频放入即可。(不要塞太多,否则会加长验证时间)

如果需要训练多位说话人,如图2中的格式存放数据集
train文件夹是训练集,一位说话人对应一个文件夹。(speaker_0,speaker_1这些文件夹的名字可以更换,但是要记得正确填入配置文件中)
valid文件夹是验证集,在训练集里面随机选择一位说话人的5-10条音频放入即可。(不要塞太多,否则会加长验证时间。如果你有能力修改配置文件,可以选择多位说话人作为验证集)

第三步:预处理
单人训练:运行 “ 1.单人-预处理.bat ” ,耐心等待进度条跑完即可。
多人训练:1.运行 “ 1a.多人-配置文件.bat ” ,打开配置文件,对照注释修改成适合自己数据集的配置文件

2.确认配置文件修改完成后再运行 “ 1b.多人-预处理.bat ” ,耐心等待进度条跑完即可。
第四步:调整训练参数
运行 “ 2a.调整训练参数.bat “ ,对照注释修改配置文件
文件位于.\configs\_base_\datasets\naive_svc.py

运行 “ 2b.调整模型参数.bat “ ,对照注释修改配置文件
文件位于.\configs\_base_\trainers\base.py

第五步:训练
运行 ” 3a.开始训练.bat “ 开始训练。
运行 “ 3c.Tensorboard.bat ”,输入Version_n的序号来打开启动服务,然后在浏览器内输入http://localhost:6006/打开可视化界面。(如果命令报错运行一下 “ 3d.修复Tensorboard.bat ” 即可)
如果中途退出训练,则需要运行 " 3b.继续训练.bat " 输入Version_n的序号,并且指定要从哪个模型继续训练。
模型文件位于.\logs\DiffSVC\version_n\checkpoints\
训练过程中要注意train_loss和valid_loss曲线:
Train_loss和valid_loss都在下降,并趋近于收敛:这通常是好的表现,表明模型在训练集和验证集上都有良好的性能表现,并且没有出现过拟合或欠拟合现象。
Train_loss下降,但valid_loss没有下降或开始上升:这表明模型在训练集上表现得很好,但在验证集上可能存在过拟合现象。需要进一步检查模型的复杂度是否合适,是否需要调整超参数等。
Train_loss和valid_loss都在上升:这通常是欠拟合的表现,可能是模型过于简单或训练集数据不足导致的。需要增加模型复杂度或增加数据量等。
Train_loss下降,valid_loss在变化的过程中出现了震荡:这可能是因为模型过拟合了,需要采取措施进行正则化等。
与此同时还要经常听一下Audio面板的音频,前面的是原始音频,后面的是用模型推理出来的结果。
第六步:推理
运行 “ 4.推理.bat ”,输入模型文件路径并使用webui进行推理
模型文件位于.\logs\DiffSVC\version_n\checkpoints\