
Bert-VITS2 · 带多语言 BERT 语义增强的 VITS2 语音合成模型 · 中文部署与使用全指南
项目仓库: https://github.com/fishaudio/Bert-VITS2
开源协议:详见仓库 LICENSE(仅供学习研究) · 模型框架:VITS2 + 多语言 BERT · 语言:Python · 预处理界面:Gradio · 语音合成与训练二合一 · 仓库分支:master
项目状态提醒(官方口径):官方在 README 顶部明确推介——FishAudio 下的全新自回归 TTS Fish-Speech 现已可用,效果为目前开源 SOTA 水准且在持续维护,官方推荐使用该项目作为 Bert-VITS2 / GPT-SoVITS 的替代;Bert-VITS2 本项目短期内不再进行维护。本文仍按官方仓库给出完整的部署与使用路径。
1 项目简介
Bert-VITS2(仓库名 Bert-VITS2,组织
fishaudio)是一个 VITS2 骨干网络 + 多语言
BERT 的端到端语音合成(TTS)开源模型。它在 VITS2
的声学模型基础上引入 BERT
文本语义特征,让模型在合成时感知句子的语义与韵律边界,从而改善中文、日文等语言的自然度与韵律表现。项目核心思路来源于
anyvoiceai/MassTTS,并参考了
VITS、vits2_pytorch、so-vits-svc 等多个开源实现。
项目定位是面向本地训练与本地推理的语音合成工具链:自带一套基于
Gradio 的预处理 WebUI(webui_preprocess.py)与推理
WebUI(webui.py),从原始音频、重采样、标注生成、配置生成到训练、推理形成完整闭环。
1.1 核心信息一览
| 项目项 | 内容 |
|---|---|
| 项目名称 | Bert-VITS2 |
| 仓库地址 | github.com/fishaudio/Bert-VITS2 |
| 项目定位 | VITS2 骨干 + 多语言 BERT 的语音合成模型,含预处理/训练/推理全套脚本 |
| 开源协议 | 以仓库 LICENSE 为准,仅供学习研究 |
| 主要语言 | Python |
| 模型框架 | VITS2 + BERT(PyTorch) |
| 预处理界面 | webui_preprocess.py(Gradio) |
| 推理界面 | webui.py(Gradio,端口取自 config.yml 的
webui_config.port) |
| 采样率 | 重采样目标 44100 Hz |
| 官方推荐替代 | Fish-Speech(持续维护) |
| 仓库分支 | master |
1.2 适用场景
- 想在本地训练一个中文(或日文、混合语种)的语音合成音色模型,做有声书、配音、虚拟角色语音等实验。
- 需要一条完整的本地数据处理流水线:原始音频 → 重采样 → 标注列表 → 配置生成 → 训练 → Gradio 推理试听。
- 研究者希望在 VITS2 骨干上验证 BERT 语义特征对韵律的增益效果。
1.3 能力边界(官方口径)
- 官方 README 明确:本项目核心思路来源于 MassTTS,成熟使用者应参阅代码自行学习如何训练,官方不提供保姆式教程。
- 官方已停止积极维护,推荐迁移到 Fish-Speech 作为替代。
- 官方明令:严禁将本项目用于一切违反《中华人民共和国宪法》《刑法》《治安管理处罚法》《民法典》之用途,严禁用于任何政治相关用途。
2 功能特性
- VITS2 骨干 + 多语言 BERT:在声学模型中融合 BERT 文本语义特征,改善韵律与自然度。
- 预处理 WebUI:
webui_preprocess.py提供 Gradio 界面,覆盖重采样、标注生成、配置文件生成等步骤,避免手动写脚本。 - 推理 WebUI:
webui.py提供 Gradio 推理页面,支持选说话人、文本格式化、上传音频提示等操作,自动打开http://127.0.0.1:<port>。 - 完整目录结构约定:数据放在
data/<数据集名>/下,包含raw/、wavs/、esd.list、train.list、val.list、configs/config.json、models/。 - 多语言 G2P 工具链:依赖 jieba、pypinyin、cn2an、pypinyin、pyopenjtalk、fugashi、cmudict、g2p_en 等,支持中、日、英文本正则化与音素转换。
3 官方界面预览
本仓库未在 README 中提供界面截图,官方仅提供项目标识(见文首)与 B
站演示视频链接;推理界面以运行 webui.py 后本地打开的 Gradio
页面为准。
4 官方跳转链接汇总
| 类别 | 链接 | 说明 |
|---|---|---|
| 仓库主页 | https://github.com/fishaudio/Bert-VITS2 | 源码、README、预处理与推理脚本 |
| 官方推荐替代 | https://github.com/fishaudio/fish-speech | 官方自回归 TTS,持续维护 |
| 核心思路来源 | https://github.com/anyvoiceai/MassTTS | 本项目核心思路参考项目 |
| Demo 视频 | B 站 BV18E421371Q | 官方 Demo 演示 |
| 技术幻灯片 | B 站 BV1zJ4m1K7cj | 官方技术 slides |
| 预处理脚本 | webui_preprocess.py | 官方简易教程入口 |
| 推理脚本 | webui.py | Gradio 推理界面 |
| 依赖清单 | requirements.txt | Python 依赖锁定版本 |
5 前置要求与服务器配置
5.1 软件前提
- Python 3.8–3.10:项目依赖 PyTorch 与多个音素转换库,建议使用 3.10 环境,避免过新的 3.12 与部分预编译轮子不兼容。
- PyTorch:需自行安装与本机 CUDA 版本匹配的 PyTorch(训练建议 GPU)。
- Git:用于克隆仓库。
- 独立虚拟环境:强烈建议用 conda 或 venv 隔离,避免污染系统 Python。
5.2 硬件建议
| 项目 | 建议 |
|---|---|
| GPU | 训练建议 NVIDIA 显卡(CUDA),推理可用 CPU 但较慢 |
| 内存 | 16 GB 以上,数据集较大时建议 32 GB |
| 存储 | 按音频数据集大小预留,模型权重另需数 GB |
| 操作系统 | Windows / Linux / macOS 均可(部分依赖如 WeTextProcessing 在 Windows 上不强制) |
5.3 依赖清单(来自 requirements.txt)
librosa==0.9.2、matplotlib、numpy、numba、phonemizer、scipy、tensorboard、Unidecode、jieba、transformers、pypinyin、cn2an、gradio==3.50.2、av、mecab-python3、loguru、unidic-lite、cmudict、fugashi、num2words、PyYAML、requests、pyopenjtalk-prebuilt、jaconv、psutil、GPUtil、g2p_en、sentencepiece、pykakasi、langid
等。
6 方式一:本地克隆与预处理(推荐起步路径)
6.1 克隆仓库并安装依赖
# 1. 克隆仓库
git clone https://github.com/fishaudio/Bert-VITS2.git
cd Bert-VITS2
# 2. 创建并激活虚拟环境(示例 conda)
conda create -n bertvits2 python=3.10 -y
conda activate bertvits2
# 3. 先按官方方式安装与本机匹配的 PyTorch(此处以 CUDA 版为例,请按本机选择)
# pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu121
# 4. 安装项目依赖
pip install -r requirements.txt6.2 启动预处理 WebUI
官方 README 指明:简易教程请参见
webui_preprocess.py。在仓库根目录运行:
python webui_preprocess.py该界面基于 Gradio,提供数据集目录、重采样、标注生成、配置生成等操作。
7 方式二:数据预处理与训练流程
7.1 目录约定
按照 webui_preprocess.py 中 get_path
的逻辑,一个数据集目录结构为:
data/<数据集名>/
├── raw/ # 原始音频
├── wavs/ # 重采样后的音频(44100 Hz)
├── esd.list # 标注列表
├── train.list # 训练集列表
├── val.list # 验证集列表
└── configs/
└── config.json # 该数据集的训练配置7.2 重采样(官方脚本参数)
官方预处理脚本中调用的重采样命令为:
python resample_legacy.py --sr 44100 --in_dir ./data/<数据集名>/raw --out_dir ./data/<数据集名>/wavs7.3 生成配置
generate_config 会读取 configs/config.json
模板,写入:
data.training_files→train.listdata.validation_files→val.listtrain.batch_size→ 界面传入的 batch_size
并在不存在时复制 default_config.yml 为
config.yml。
8 配置项说明
| 配置 | 位置 | 说明 |
|---|---|---|
webui_config.port |
config.yml |
推理 WebUI 端口,webui.py 启动时读取并打开
http://127.0.0.1:<port> |
webui_config.share |
config.yml |
是否启动 Gradio 公网分享链接 |
data.training_files |
data/<数据集名>/configs/config.json |
训练集列表文件路径 |
data.validation_files |
同上 | 验证集列表文件路径 |
train.batch_size |
同上 | 训练批大小,按显存调整 |
9 常用运维命令
# 启动预处理 WebUI
python webui_preprocess.py
# 启动推理 WebUI(端口取自 config.yml 的 webui_config.port)
python webui.py
# 查看已安装依赖版本
pip list
# 训练日志(tensorboard,按官方脚本实际日志目录为准)
tensorboard --logdir ./data/<数据集名>/10 常见故障排查
- gradio 版本冲突:项目锁定
gradio==3.50.2,若误装其他版本会导致界面报错,重新pip install gradio==3.50.2。 - pyopenjtalk / mecab 安装失败:日文相关依赖在部分系统需要预装 mecab;可先只做中文实验,再按需补齐。
- 显存不足:减小
config.json中的train.batch_size。 - 采样率不一致:务必用
resample_legacy.py --sr 44100统一到 44100 Hz,否则训练报错或音质异常。 - 模型权重缺失:预训练底模与 BERT 模型需自行按官方说明下载,放在对应目录;仓库本身不附带大模型权重。
11 风险与合规说明
- 项目已停更:官方明确本项目短期内不再维护,新生产环境建议直接采用官方推荐的 Fish-Speech。
- 使用红线:官方明令严禁用于任何违反中国法律的用途,严禁用于政治相关用途;合成音色须获得本人授权,不得用于伪造他人声音、诈骗、侵权等场景。
- 许可证:以仓库 LICENSE 为准,二次分发与商用前请自行核对。
- 非官方声明:本文为基于官方仓库 README 与脚本整理的部署指南,不代表官方维护,命令与参数以仓库最新代码为准。