一个易于理解的 TTS / SVS / SVC 训练框架。
查看我们的 Wiki 以开始使用!
Fish Diffusion 使用条款
-
获取授权和知识产权侵权:用户对其训练过程中使用的任何数据集获取必要授权全权负责,并对因使用输入源而产生的任何侵权问题承担全部责任。Fish Diffusion 及其开发者对因使用未经授权的数据集而可能产生的任何问题概不负责。
-
适当归属:任何基于 Fish Diffusion 的衍生作品必须明确承认该项目及其许可。在分发 Fish Diffusion 的代码或传播由该项目生成的结果时,用户有义务引用原作者和源代码(Fish Diffusion)。
-
音视频内容和人工智能生成披露:使用 Fish Diffusion 创建的所有衍生作品,包括音频或视频材料,必须明确承认使用了 Fish Diffusion 项目,并声明内容是由人工智能生成的。如果包含第三方发布的视频或音频,必须提供原始链接。
-
同意条款:继续使用 Fish Diffusion,用户明确同意本文件中列出的条款和条件。Fish Diffusion 及其开发者对可能发生的任何后续困难不承担责任。
概述
使用扩散模型解决不同的语音生成任务。与原始的 diffsvc 仓库相比,本仓库的优势和劣势如下:
- 支持多说话人
- 本仓库的代码结构更简单易懂,所有模块都是解耦的
- 支持 44.1kHz Diff Singer 社区声码器
- 支持多机多设备训练,支持半精度训练,提高训练速度并节省内存
准备环境
以下命令需要在 Python 3.10 的 conda 环境中执行
# 安装 PyTorch 相关核心依赖,如已安装可跳过
# 参考:https://pytorch.org/get-started/locally/
conda install "pytorch>=2.0.0" "torchvision>=0.15.0" "torchaudio>=2.0.0" pytorch-cuda=11.8 -c pytorch -c nvidia
# 安装 PDM 依赖管理工具,如已安装可跳过
# 参考:https://pdm.fming.dev/latest/
curl -sSL https://raw.githubusercontent.com/pdm-project/pdm/main/install-pdm.py | python3 -
# 安装项目依赖
pdm sync
声码器准备
Fish Diffusion 需要 FishAudio NSF-HiFiGAN 声码器来生成音频。
自动下载
python tools/download_nsf_hifigan.py
如果您使用脚本下载模型,可以使用 --agree-license
参数同意 CC BY-NC-SA 4.0 许可。
python tools/download_nsf_hifigan.py --agree-license
手动下载
从 Fish Diffusion Release 下载并解压 nsf_hifigan-stable-v1.zip
将 nsf_hifigan
文件夹复制到 checkpoints
目录(如果不存在则创建)
如果你想手动下载 ContentVec,可以从这里下载,并将其放在 checkpoints
目录中。
数据集准备
你只需要将数据集按照以下文件结构放入 dataset
目录中
dataset
├───train
│ ├───xxx1-xxx1.wav
│ ├───...
│ ├───Lxx-0xx8.wav
│ └───speaker0 (也支持子目录)
│ └───xxx1-xxx1.wav
└───valid
├───xx2-0xxx2.wav
├───...
└───xxx7-xxx007.wav
# 提取所有数据特征,如音高、文本特征、梅尔特征等
python tools/preprocessing/extract_features.py --config configs/svc_hubert_soft.py --path dataset --clean
基线训练
项目正在积极开发中,请备份你的配置文件
项目正在积极开发中,请备份你的配置文件
项目正在积极开发中,请备份你的配置文件
# 单机单卡/多卡训练
python tools/diffusion/train.py --config configs/svc_hubert_soft.py
# 多节点训练
python tools/diffusion/train.py --config configs/svc_content_vec_multi_node.py
# 需要在每个节点上定义环境变量,更多信息请参见 https://pytorch-lightning.readthedocs.io/en/1.6.5/clouds/cluster.html
# 恢复训练
python tools/diffusion/train.py --config configs/svc_hubert_soft.py --resume [检查点文件]
# 微调预训练模型
# 注意:你应该在配置文件中将学习率调度器调整为 warmup_cosine_finetune
python tools/diffusion/train.py --config configs/svc_cn_hubert_soft_finetune.py --pretrained [检查点文件]
推理
# 使用命令行推理,你可以使用 --help 查看更多参数
python tools/diffusion/inference.py --config [配置文件] \
--checkpoint [检查点文件] \
--input [输入音频] \
--output [输出音频]
# Gradio Web 推理,其他参数将作为 gradio 的默认参数
python tools/diffusion/inference.py --config [配置文件] \
--checkpoint [检查点文件] \
--gradio
将 DiffSVC 模型转换为 Fish Diffusion
python tools/diffusion/diff_svc_converter.py --config configs/svc_hubert_soft_diff_svc.py \
--input-path [DiffSVC 检查点] \
--output-path [Fish Diffusion 检查点]
贡献
如果你有任何问题,请提交 issue 或 pull request。
在提交 pull request 之前,你应该运行 pdm run lint
。
可以通过以下命令生成实时文档
pdm run docs
致谢
- diff-svc 原版
- diff-svc 优化版
- DiffSinger 论文
- so-vits-svc
- iSTFTNet 论文
- CookieTTS
- HiFi-GAN 论文
- Retrieval-based-Voice-Conversion