GPT-SoVITS 模型测试笔记

GPT-SoVITS 模型测试笔记


一、模型概述

GPT-SoVITS 是一个开源(MIT License)的少样本语音克隆与文本转语音(TTS)框架,由 RVC-Boss 团队开发维护。

适用场景

  • 语音克隆(少样本,仅需数秒~1分钟原声)
  • 个性化 TTS 合成
  • 有声书 / 语音助手 / 虚拟主播 音色定制
  • 跨语言语音生成

二、模型架构

GPT-SoVITS 采用双模块架构设计,两阶段流水线工作:

复制代码
文本输入 → [GPT 模块] → 语义 Token → [SoVITS 模块] → 语音输出

2.1 GPT 模块(语义建模)

项目 说明
职责 理解文本内容,生成语音的"语义中间表示"
参数量 约 300M+(基于 Qwen 或类似 LLM 结构)
具体功能 学习语音的节奏、停顿、情绪、语速等韵律特征
输出 语义 Token 序列

通俗理解:GPT 模块 "决定怎么说"------把文字变成带有语气和节奏的"语音草图"。

2.2 SoVITS 模块(语音合成)

项目 说明
职责 根据 GPT 输出的语义 Token,合成目标人物音色的波形
结构 基于 SoVITS(Singer-oriented Variational Inference TTS)改进,含 VITS + 音色编码器
具体功能 声学特征预测 + 声码器生成原始波形
输出 原始 PCM 音频

通俗理解:SoVITS 模块 "决定是谁在说"------把"语音草图"渲染为特定人物的声音。

2.3 工作流程总结

复制代码
                        ┌─────────────────┐
                        │   输入文本        │
                        │   (要说的内容)    │
                        └────────┬────────┘
                                 ▼
┌──────────────────────────────────────────────────────────────┐
│                     GPT 模块(语义建模)                       │
│  理解文本 → 学习节奏/停顿/情绪 → 生成语义 Token              │
│  "决定怎么说"                                                │
└────────────────────────────┬─────────────────────────────────┘
                             ▼
┌──────────────────────────────────────────────────────────────┐
│                   SoVITS 模块(语音合成)                     │
│  语义 Token → 声学特征 → 目标音色 → 波形                     │
│  "决定是谁在说"                                              │
└────────────────────────────┬─────────────────────────────────┘
                             ▼
                        ┌─────────────────┐
                        │   合成语音输出    │
                        └─────────────────┘

三、硬件要求

项目 最低要求 推荐配置
显存 8GB+ 16GB+(微调/训练需更多)
内存 16GB 32GB
存储 10GB 50GB+(含模型权重)
GPU NVIDIA GTX 1080 / T4 A10 / A100 / 天数智芯等

⚠️ 注意 : MR100 加速卡不支持微调和训练(仅可推理)。


四、环境搭建与部署

4.1 代码下载

bash 复制代码
git clone https://github.com/RVC-Boss/GPT-SoVITS.git
cd GPT-SoVITS

4.2 Python 环境

推荐 Python 3.9--3.11,使用 conda 或 venv:

bash 复制代码
conda create -n gptsovits python=3.11
conda activate gptsovits
pip install -r requirements.txt

4.3 启动 WebUI

bash 复制代码
cd /home/GPT-sovits/GPT-SoVITS-main
python3 webui.py

启动后浏览器打开 http://localhost:9872 即可访问操作界面。


五、模型测试流程(详细步骤)

第 1 步:上传音频 & 人声分离(UVR5)

如果输入音频包含背景噪音、伴奏或混响,建议先使用内置的 UVR5(人声伴奏分离)模块提纯人声。

  1. 点击 "开启人声分离 WebUI"
  2. 在 UVR5 界面中:
    • 方式一:输入音频所在文件夹路径
    • 方式二:点击批量上传音频文件
  3. 分离完成后,输出文件位于 output/uvr5_opt/ 目录下:
    • xxx_vocal.wav → 人声(保留)
    • xxx_instrument.wav → 伴奏(可删除)

💡 建议: 将不需要的伴奏文件及时删除,避免后续步骤取错文件。

第 2 步:切割音频

将长音频按静音段落切割为短片段,适配模型处理。

  1. 输入原音频文件夹路径(不支持中文路径
  2. 切割输出路径:output/slicer_opt/
  3. 观察日志输出 "语音切分已完成" 即表示完成

参数调整说明

参数 作用 调整建议
min_length 最小片段长度 显存越小,值调小
min_interval 最小间隔时长 音频密集时适当调低
max_sil_kept 最大静音保留时长 影响句子连贯性,新手建议保持默认

第 3 步:语音降噪(可选,谨慎使用)

  • 该功能对音质有较大破坏
  • 不建议在一般场景下使用
  • 如音频底噪严重且无法通过 UVR5 解决,可酌情尝试

第 4 步:语音识别(ASR,自动标注)

为每个切割后的音频片段配上对应的文字标注。

  • 使用 AI 自动识别音频中的文字内容
  • 输出用于后续训练时的文本-音频对齐

第 5 步:语音文本校对(可选,追求极致音质推荐)

此步骤比较耗时,如果追求极致的合成效果,建议执行:

  1. 点击 "开启打标 WebUI"
  2. 输入标注文件的路径(注意:是文件路径,不是文件夹路径)
  3. 逐条校对 ASR 识别结果,修正错误文字
  4. 如果不需要极致完美,可以跳过此步骤

第 6 步:训练/微调

在完成数据准备后,可进行模型微调(Fine-tuning)。

第 7 步:推理合成

训练完成后,通过 WebUI 的推理界面:

  1. 输入或粘贴想要合成的文本
  2. 选择参考音频(目标人物音色参考)
  3. 设置参数后点击合成
  4. 等待模型输出语音文件

六、常见问题与解决方案

6.1 缺少英文词性标注工具

报错现象 : 运行过程中提示 nltk 缺少英文词性标注数据

解决方法

bash 复制代码
python3 -c "import nltk; nltk.download('averaged_perceptron_tagger'); nltk.download('punkt'); nltk.download('wordnet')"

6.2 显存不足

现象:OOM(Out of Memory)报错

  • 降低 min_length 参数值
  • 减小 batch_size
  • 使用更短的参考音频

6.3 音频路径含中文

现象:运行报错,路径识别异常

  • 将所有音频文件路径改为纯英文路径
  • 文件夹命名不要使用中文

6.4 合成语音音色不匹配

可能原因:

  • 参考音频过短(建议 ≥ 10 秒)
  • 参考音频含杂音/背景音
  • 文本校对不准确

七、参考链接


八、附注

  • 本文档基于有道云笔记《GPT-SoVITS 模型测试》整理,补充了架构说明与参数详解
  • 测试日期:2026-06-09
  • 笔记大小:931.7 KB(含参考音频等附件)
相关推荐
GLDbalala2 小时前
GPU PRO 5 - 3.3 Bokeh Effects on the SPU 笔记
笔记
七月稻草人2 小时前
用30秒声音复刻自己的音色:Index-TTS远程部署与公网访问实践
人工智能·语音识别
ouliten2 小时前
[Triton笔记7]融合注意力 (Fused Attention)
人工智能·笔记·算法
世***y2 小时前
有温度的服务,有品质的生活
笔记
逸模2 小时前
从 CAD+SU 到逸模|效果图制作,告别反复手动同步主旨
大数据·笔记·其他·信息可视化·产品经理
Flittly2 小时前
【AgentScope Java新手村系列】(1)框架简介与环境搭建
java·spring boot·笔记·spring·ai
星恒随风3 小时前
C++ 类和对象入门(四):日期类 Date 的运算符重载实现详解
开发语言·c++·笔记·学习
疯狂打码的少年4 小时前
编译程序与解释程序的区别
java·开发语言·笔记
小鹿研究点东西13 小时前
直播带货长视频AI自动剪辑开播:一场直播如何反复利用?
ffmpeg·自动化·音视频·语音识别