Windows 10/11下用Python 3.10和CUDA 11.7搭建so-vits-svc 3.0全流程指南

对于想要尝试AI歌声合成技术的开发者来说,环境配置往往是第一个拦路虎。本文将手把手带你完成从零开始的环境搭建,直到生成第一个AI歌声模型的全过程。不同于简单的教程罗列,我们会深入每个环节的技术细节和常见陷阱,确保你能一次性成功运行so-vits-svc 3.0。

1. 环境准备:避开版本兼容性陷阱

在开始之前,我们需要确保系统满足基本要求。Windows 10/11 64位系统、NVIDIA显卡(建议GTX 1060 6G以上)是必备条件。最关键的是处理好CUDA、PyTorch和Python版本的兼容性问题。

1.1 显卡驱动与CUDA版本匹配

首先检查你的显卡驱动支持的CUDA版本:

nvidia-smi

输出示例:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 512.95       Driver Version: 512.95       CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+

重要提示 :即使驱动显示支持更高版本CUDA,也建议安装CUDA 11.7,因为PyTorch对其支持最稳定。从 NVIDIA官网 下载CUDA 11.7本地安装包:

  • 操作系统:Windows
  • 架构:x86_64
  • 版本:10/11
  • 安装类型:exe(local)

安装完成后验证:

nvcc -V

应显示类似输出:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Tue_May__3_19:00:59_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.7, V11.7.64

1.2 Python环境配置

推荐使用Python 3.10.6(最新补丁版本),可通过Miniconda创建独立环境:

conda create -n sovits python=3.10.6
conda activate sovits

配置国内镜像加速(可选):

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn

1.3 PyTorch精准安装

避免直接使用官网推荐命令,而是手动下载whl文件安装。前往 PyTorch官方whl仓库 下载:

  • torch-1.13.0+cu117-cp310-cp310-win_amd64.whl
  • torchaudio-0.13.0+cu117-cp310-cp310-win_amd64.whl
  • torchvision-0.14.0+cu117-cp310-cp310-win_amd64.whl

安装命令:

pip install torch-1.13.0+cu117-cp310-cp310-win_amd64.whl
pip install torchaudio-0.13.0+cu117-cp310-cp310-win_amd64.whl
pip install torchvision-0.14.0+cu117-cp310-cp310-win_amd64.whl

验证安装:

import torch
print(torch.__version__)  # 应输出1.13.0+cu117
print(torch.cuda.is_available())  # 必须返回True

2. 项目部署与依赖安装

2.1 获取so-vits-svc源码

推荐从GitHub克隆32k分支:

git clone -b 32k https://github.com/svc-develop-team/so-vits-svc.git
cd so-vits-svc

2.2 安装额外依赖

创建requirements.txt文件:

Flask==2.1.2
Flask_Cors==3.0.10
gradio==3.4.1
numpy==1.23.5
pyworld==0.3.2
scipy==1.10.0
tqdm==4.63.0
praat-parselmouth
librosa==0.9.2

安装依赖:

pip install -r requirements.txt

常见问题解决

  • 如果pyworld安装失败,尝试先安装Microsoft C++ Build Tools
  • librosa可能需要的额外依赖: conda install -c conda-forge ffmpeg

2.3 预训练模型准备

下载必备模型文件:

  1. Hubert模型:

    https://github.com/bshall/hubert/releases/download/v0.1/hubert-soft-0d54a1f4.pt
    

    放置路径: ./hubert/

  2. 预训练G/D模型:

    https://huggingface.co/innnky/sovits_pretrained/resolve/main/G_0.pth
    https://huggingface.co/innnky/sovits_pretrained/resolve/main/D_0.pth  
    

    放置路径: ./logs/32k/

3. 数据准备与预处理

3.1 训练数据规范

  • 音频格式:必须为单声道WAV,采样率不限(会自动重采样)
  • 每条音频时长:4-8秒为佳
  • 数据量:每个说话人建议60-100条
  • 目录结构:
    dataset_raw/
    ├───speaker1
    │   ├───audio1.wav
    │   └───audio2.wav
    └───speaker2
        ├───audio1.wav
        └───audio2.wav
    

3.2 配置文件设置

创建 dataset_raw/config.json

{
  "n_speakers": 2,
  "spk": {
    "speaker1": 0,
    "speaker2": 1
  }
}

3.3 执行预处理流程

  1. 重采样(自动转为32kHz):

    python resample.py
    
  2. 划分训练集/验证集:

    python preprocess_flist_config.py
    
  3. 提取Hubert特征和F0:

    python preprocess_hubert_f0.py
    

关键参数调整

  • 修改 configs/config.json 中的 batch_size
    • 6G显存:设置为2-3
    • 8G显存:设置为4-6
    • 12G+显存:可尝试8-12

4. 模型训练与优化

4.1 启动训练

基础训练命令:

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

训练优化技巧

  1. 修改 train.py 提高稳定性:

    # 修改第60行
    dist.init_process_group(backend='gloo')  # 替代原来的nccl
    
    # 添加环境变量
    os.environ["CUDA_VISIBLE_DEVICES"] = "0"
    os.environ["PYTORCH_CUDA_ALLOC_CONF"] = "max_split_size_mb:32"
    
  2. 监控训练状态:

    • 查看 logs/32k/train.log
    • 关键指标:
      • Epoch:当前迭代轮次
      • Global_step:总训练步数
      • Loss值:应逐渐下降

4.2 训练策略

训练阶段 建议迭代次数 预期效果
初期 1k-5k 声音轮廓形成
中期 5k-15k 音色细节丰富
后期 15k-30k 稳定性提升

中断与恢复

  • 按Ctrl+C停止训练
  • 重新执行相同命令即可继续训练
  • 模型自动保存在 logs/32k/ 目录下

5. 推理与效果优化

5.1 基础推理流程

  1. 准备干声音频(建议使用Ultimate Vocal Remover提取)

  2. 分割为不超过40秒的片段

  3. 修改 inference_main.py

    model_path = "logs/32k/G_30000.pth"  # 替换为你的最新模型
    clean_names = ["vocal_part1", "vocal_part2"]  # 输入音频文件名
    trans = [0]  # 音高调整(半音)
    spk_list = ['speaker1']  # 训练时的说话人名称
    
  4. 执行推理:

    python inference_main.py
    

5.2 高级调参技巧

  1. 音色控制参数:

    • slice_db :切片阈值(-50~-30)
    • noice_scale :噪声比例(0.1-0.3)
  2. 音高修正建议:

    • 男转女:+5到+7半音
    • 女转男:-5到-7半音
  3. 后处理建议:

    • 使用Melodyne微调音高曲线
    • 用EQ平衡频率响应(通常需要削减3kHz附近)

6. 常见问题解决方案

6.1 环境问题排查表

问题现象 可能原因 解决方案
CUDA不可用 驱动不匹配 重装对应版本驱动
显存不足 batch_size过大 减小batch_size
训练中断 内存泄漏 添加PYTORCH_CUDA_ALLOC_CONF
音色异常 数据质量差 检查音频是否干净

6.2 性能优化建议

  1. 开启FP16训练(修改config.json):

    "fp16_run": true
    
  2. 使用更小的 segment_size (如8960)减少显存占用

  3. 冻结编码器部分层(需修改模型代码)

对于想要进一步优化效果的用户,建议关注特征提取质量。在实际项目中,我们发现Hubert特征的质量对最终效果影响极大。可以尝试用更专业的音频编辑软件预处理训练数据,确保没有背景噪音和失真。

更多推荐