SoVITS 声音克隆安装使用指南(Windows 版)

本指南基于实际操作场景优化,补充 GPU 配置、数据处理等关键细节,确保从环境搭建到模型训练全程可落地。适用于 SoVITS 4.0+ 版本,新手可按步骤逐步执行。

一、前期准备(避坑核心前提)

1. 安装 Miniconda(轻量替代 Anaconda)

Miniconda 用于创建独立虚拟环境,避免 Python 版本/依赖冲突,推荐优先使用提供的安装包:

⚠️ 若忘记勾选“Add to PATH”:需手动添加环境变量(右键「此电脑」→「属性」→「高级系统设置」→「环境变量」→ 在「系统变量-PATH」中添加 C:\ProgramData\miniconda3C:\ProgramData\miniconda3\Scripts),添加后需重启电脑生效。

2. 准备 SoVITS 项目文件

3. 启动 Anaconda Prompt(命令行环境)

选择以下任一方式启动,确保命令行前缀显示 (base)(表示默认环境已激活):

二、虚拟环境搭建(版本兼容关键)

1. 切换到 SoVITS 源码目录

在 Anaconda Prompt 中,先切换到 so-vits-svc 根目录(需替换为你的实际路径):

# 1. 切换到项目所在磁盘(例如 D 盘,若在 E 盘则输入 E:)
D:

# 2. 进入源码目录(替换为你的实际路径,注意路径分隔符为 \)
cd D:\python\Plugin\SoVITS\so-vits-svc

执行后,命令行前缀应显示 (base) D:\python\Plugin\SoVITS\so-vits-svc>,表示已进入目标目录。

2. 创建并激活虚拟环境

⚠️ 若激活失败(提示“conda: 无法将‘conda’项识别为 cmdlet...”):检查 Miniconda 是否添加到 PATH 环境变量,或重启电脑后重试。

3. 安装核心依赖(国内镜像加速)

按顺序执行以下命令,全程使用清华源(-i https://pypi.tuna.tsinghua.edu.cn/simple)避免国外源下载超时,每个命令执行完成后确认无 ERROR 信息。

4. 安装 PyTorch(GPU/CPU 适配)

PyTorch 是训练核心依赖,需根据电脑是否有 NVIDIA 显卡选择对应版本,优先安装 GPU 版本(训练速度提升 10-20 倍)

5. 验证依赖安装

执行以下命令,若无报错则依赖安装成功:

# 验证 PyTorch 是否可用(GPU 环境应输出 True,CPU 输出 False)
python -c "import torch; print(torch.cuda.is_available())"

# 验证 fairseq 是否可用
python -c "import fairseq; print('fairseq installed')"

# 验证 librosa 是否可用
python -c "import librosa; print('librosa installed')"

三、源码配置与数据准备(训练效果关键)

📌 数据质量直接决定克隆效果:无噪音、时长足够的干声是基础,配置文件需与数据严格匹配,否则训练会报错或效果差。

1. 备份并修改配置文件

2. 清理旧数据与训练记录

为避免旧数据干扰新训练,需清理以下目录:

⚠️ 若 dataset_raw/filelists/ 目录不存在,无需手动创建,后续脚本会自动生成(仅清理已存在的目录即可)。

3. 准备训练数据(核心质量要求)

(1)数据格式要求

要求项 具体标准 工具推荐
格式 仅支持 WAV 单声道(立体声需转单声道) Audacity、FFmpeg
采样率 44100Hz(后续会自动重采样,但提前统一可减少错误) Audacity(项目速率 → 44100Hz)
时长 单个音频 3-5 秒,总时长 5-10 分钟(单个说话人至少 3 分钟) Audacity(选择 → 剪辑)
质量 无背景噪音、无伴奏、无混响、无气声(干净干声) Audacity(效果 → 降噪)

(2)数据存放路径

严格按以下结构存放,确保文件夹名与 config.jsonspk 字段一致:

so-vits-svc/                # 源码根目录
└── dataset_raw/             # 原始数据目录(手动创建,若已存在则清空旧内容)
    ├── gaoyuliang/          # 说话人1:高育良(文件夹名=spk字段中的名称)
    │   ├── gaoyuliang_01.wav
    │   ├── gaoyuliang_02.wav
    │   └── ...(至少10个音频,总时长≥3分钟)
    └── zhengzhongji/        # 说话人2:郑中基(同上)
        ├── zhengzhongji_01.wav
        └── ...

四、模型训练(按顺序执行,避免跳过步骤)

确保已激活虚拟环境(命令行前缀 (so-vits-3.9))且处于源码根目录,按以下步骤执行数据预处理和训练。

1. 音频重采样(统一格式)

执行 resample.py 脚本,将 dataset_raw/ 中的音频统一重采样为 44100Hz,并生成 dataset/44k/ 目录:

python resample.py

执行成功后,检查 dataset/44k/ 是否包含与 dataset_raw/ 对应的说话人文件夹(如 gaoyuliang/)。

2. 生成训练列表(关联音频与说话人)

执行脚本生成 filelists/ 目录,包含 train.txt(训练集)和 val.txt(验证集):

python preprocess_flist_config.py

作用:记录每个音频文件的路径和对应说话人序号,训练时模型会通过这两个文件读取数据。

3. 提取音频特征(Hubert + F0)

提取语音特征(决定克隆音色相似度的核心步骤),根据是否有 GPU 选择命令:

参数说明:--num_processes 1 为单进程处理(多进程易报错,新手推荐单进程),执行成功后 dataset/44k/ 会生成 .npy 特征文件。

4. 启动训练(核心步骤)

执行训练命令,模型会自动保存到 logs/44k/ 目录:

python train.py -c configs/config.json -m logs/44k

参数说明:-c 指定配置文件路径,-m 指定模型保存路径。

训练过程监控

📌 推荐训练到 5000-8000 步(视数据质量调整):若 reference_loss 稳定在 1 以下且听感满意,即可停止训练;若损失持续下降但听感差,需优化训练数据(如增加干净音频)。

五、模型推理(测试声音克隆效果)

训练到足够步数后(如 G_5000.pth),可通过以下步骤测试克隆效果。

1. 准备测试音频

将需要克隆的“源音频”(如你的声音)处理为 WAV 单声道 44100Hz,放入 so-vits-svc\raw\ 目录(若 raw 不存在则手动创建)。

2. 执行推理命令

在虚拟环境中执行以下命令,替换参数为你的实际路径和说话人名称:

python inference_main.py 
  -m logs/44k/G_5000.pth  # 训练好的模型文件(选择最新高步模型)
  -c logs/44k/config.json  # 训练时使用的配置文件(自动生成,与模型匹配)
  -n raw/your_test.wav     # 测试音频路径(替换为你的音频文件名)
  -t 0                     # 音色转换强度(0=纯目标声线,0.5=混合源声线)
  -s gaoyuliang            # 目标说话人(与 config.json 中 spk 字段一致)

简化版命令(一行执行):

python inference_main.py -m logs/44k/G_5000.pth -c logs/44k/config.json 
-n raw/your_test.wav -t 0 -s gaoyuliang

3. 查看结果

克隆后的音频会自动保存到 so-vits-svc\results\ 目录,播放后对比效果:

六、常见错误与解决方案(避坑汇总)

错误现象 可能原因 解决方案
执行 conda 命令提示“不是内部命令” Miniconda 未添加到 PATH 环境变量
  1. 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
  2. 在「系统变量-PATH」中添加 C:\ProgramData\miniconda3C:\ProgramData\miniconda3\Scripts
  3. 重启电脑后重试
训练时提示“找不到说话人数据(如 gaoyuliang)” 数据文件夹名与 config.jsonspk 名称不一致
  1. 确认 dataset_raw/ 子文件夹名(如 gaoyuliang)与 spk 字段完全一致(大小写敏感)
  2. 重新执行 preprocess_flist_config.py 生成训练列表
提取 Hubert 特征时提示“CUDA out of memory” GPU 显存不足
  1. 关闭其他占用显存的程序(如浏览器、其他 Python 进程)
  2. 修改 preprocess_hubert_f0.py,减少批量处理大小(搜索 batch_size 改为 2 或 1)
  3. 改用 CPU 提取(添加 --device cpu 参数)
推理时提示“模型文件不存在(如 G_5000.pth)” 模型路径错误或未训练到对应步数
  1. 查看 logs/44k/ 目录,确认存在的模型文件(如 G_4000.pth
  2. 将命令中的 G_5000.pth 替换为实际存在的模型文件名
安装 librosa 时提示“numba 版本冲突” librosa 0.10.0.post2 依赖特定版本 numba
pip install numba==0.56.4 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install librosa==0.10.0.post2 -i https://pypi.tuna.tsinghua.edu.cn/simple

七、附录:常用工具与资源

本指南更新于 2025 年,适配 SoVITS 4.1+ 版本,若遇到新问题可参考官方文档或社区反馈。