深入解析so-vits-svc项目:基于SoftVC和VITS的歌声转换系统
so-vits-svc 基于vits与softvc的歌声音色转换模型 项目地址: https://gitcode.com/gh_mirrors/sovit/so-vits-svc
项目概述
so-vits-svc是一个基于SoftVC编码器和VITS模型的歌声转换(Singing Voice Conversion)系统。该系统能够将输入的音频通过特征提取和声学模型转换,实现音色的转换效果。最新3.0版本采用了FreeVC的代码架构,在音频质量和推理速度方面都有显著提升。
核心技术创新
1. 模型架构改进
该系统采用SoftVC编码器提取音频特征,结合VITS模型进行声音转换。相比传统方法,这种架构具有以下优势:
- 使用HuBERT-Soft特征提取器,能够更好地保留语音内容信息
- 结合F0(基频)信息,实现更自然的音高转换
- 采用NSF HiFiGAN作为声码器,解决了传统方法中常见的断音问题
2. 性能优化
- 32kHz版本显著降低了显存需求,提高了推理速度
- 相比DiffSVC等方案,在中等质量数据集上表现更优
- 训练过程支持预训练模型,大幅缩短训练时间
使用指南
环境准备
首先需要准备以下预训练模型:
- SoftVC Hubert模型(hubert-soft-0d54a1f4.pt)
- 预训练的G_0.pth和D_0.pth模型
这些模型应分别放置在hubert
和logs/32k
目录下。预训练模型包含了多种常见音色范围,能显著提升训练效率。
数据集准备
数据集需要按照以下结构组织:
dataset_raw
├───speaker0
│ ├───音频文件1.wav
│ └───音频文件2.wav
└───speaker1
├───音频文件1.wav
└───音频文件2.wav
数据处理流程
-
音频重采样: 执行
python resample.py
将音频统一转换为32kHz -
数据集划分与配置生成: 运行
python preprocess_flist_config.py
自动划分训练集、验证集和测试集,并生成配置文件 -
特征提取: 执行
python preprocess_hubert_f0.py
提取HuBERT和F0特征
模型训练
使用以下命令开始训练:
python train.py -c configs/config.json -m 32k
注意事项:
- 配置文件中的n_speakers参数会根据数据集自动设置
- 为预留扩展空间,n_speakers会被设为实际说话人数量的两倍
- 训练开始后不能再修改n_speakers参数
推理转换
使用inference_main.py进行推理:
- 修改model_path指向最新检查点
- 将输入音频放入raw文件夹
- 设置clean_names作为输出文件名
- 使用trans参数调整音高(半音为单位)
- 设置spk_list选择目标说话人
高级功能
ONNX模型导出
- 创建checkpoints目录和项目子目录
- 将模型重命名为model.pth,配置文件为config.json
- 修改onnx_export.py中的路径设置
- 运行导出脚本生成model.onnx
注意事项:
- 导出48kHz模型需要修改相关采样率参数
- ONNX模型移除了训练相关功能,仅保留推理能力
WebUI界面
通过sovits_gradio.py可启动Gradio Web界面:
- 在checkpoints中创建项目目录
- 放入模型和配置文件
- 运行脚本启动服务
最佳实践建议
-
单说话人训练:多说话人训练可能导致音色泄漏问题,建议优先使用单说话人数据集
-
数据质量:虽然系统对中等质量数据表现良好,但高质量训练数据仍能显著提升效果
-
参数调整:可根据需要调整配置文件中的n_speakers参数,为未来数据扩展预留空间
-
版本选择:32kHz版本在大多数场景下已足够,48kHz版本适合对音质有极致要求的场景
通过以上介绍,开发者可以快速上手so-vits-svc项目,实现高质量的歌声转换效果。该系统在保持优秀转换质量的同时,也提供了便捷的使用方式和丰富的扩展功能。
so-vits-svc 基于vits与softvc的歌声音色转换模型 项目地址: https://gitcode.com/gh_mirrors/sovit/so-vits-svc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考