XTTS-v2 是目前上手最快的开源声音克隆模型之一 —— 给一段 6 秒的参考人声,它就能把任意文本读成那个音色,而且能跨语种:拿中文样本去念英文,音色跟着走。整个模型的核心权重 model.pth 只有 1.87GB,加上 211MB 的 DVAE 也不到 2.1GB,一块 RTX 3090 绰绰有余。这也是它在 Hugging Face 上攒下 3.7k 收藏、月下载量八百多万的原因。
但有个现实必须先摆在前面:XTTS 的权重停在 2023 年底就再没动过,Coqui 公司已经停止运营,原始仓库 coqui-ai/TTS 按其接手方的原话就是「the original, unmaintained repository」。今天真正在动的是 Idiap 研究所维护的 fork,PyPI 包名叫 coqui-tts,一路跟到 Python 3.14、PyTorch 2.10、transformers 5。你要装的是它,不是 pip install TTS —— 后者配 PyTorch 2.6 以上会直接在 torch.load 上崩。
这一页把自建 XTTS 会踩的坑一次说完:v2.0.2 和 v2.0.3 之间差的那门语言、中文单段 82 字符的硬上限、DeepSpeed 的 2~3 倍提速、微调的真实显存门槛,以及 CPML 非商用许可到底卡住了什么。NexGPU 按秒计费、无最低消费,从 1,175 个可租节点里挑一块 24GB 卡,跑通了再决定要不要长期开着。
01 —
XTTS 有哪些版本?revision 选错会少一门语言
coqui-tts 默认从 Hugging Face 的 main 分支拉权重,而 main 和各个 revision 分支的语种列表并不一样。
| 版本 | 参数量 | 显存 | 上下文 | 说明 |
|---|---|---|---|---|
| XTTS-v2(HF main,即 v2.0.3) | GPT-2 式自回归主干 30 层 · 1024 维 · 16 头,model.pth 1.87GB(fp32) | fp32 加载约 2.5GB,单路推理峰值 4GB 量级 | 文本 402 token / 音频 605 token,输出 24kHz | 17 种语言,比 v2.0.2 多一门印地语 hi。启用 perceiver resampler,说话人条件建模优于 v1.x。不指定 revision 时 coqui-tts 拉的就是这份。 |
| XTTS-v2 revision v2.0.2 | 架构与权重体积同 v2.0.3 | 同上,约 4GB 峰值 | 文本 402 token / 音频 605 token | 16 种语言,没有 hi。AllTalk 等一批下游封装 pin 的正是这个 revision,所以复现别人的音效时必须显式指定分支,否则你听到的不是同一份权重。 |
| XTTS-v1.1(revision v1.1.2) | GPT 主干 30 层 · 1024 维,无 perceiver resampler | 与 v2 同一量级 | 文本 402 token / 音频 605 token | 只有 14 种语言,缺匈牙利语、韩语、印地语;音色相似度明显不如 v2。只在维护老工程、需要复刻旧音效时才碰它。 |
| 社区微调 checkpoint | 在 XTTS-v2 基础上继续训 GPT 层 | 推理与原版一致;微调另算,见下方硬件表 | 同 v2 | Hugging Face 上挂着七十多个基于 XTTS-v2 的微调模型,多为单音色或单语种特化。它们同样继承 CPML 非商用条款,别拿来做产品。 |
02 —
XTTS 部署选什么显卡?按场景对号入座
XTTS 是小模型,瓶颈从来不是显存容量,而是自回归解码速度和你要并发几路。
单路推理、起一个常驻的 OpenAI 兼容 TTS 端点
RTX 3090 24GB$0.193/卡·时
1.87GB 权重加上最多 605 个音频 token 的 KV cache 连 4GB 都吃不满,24GB 显存足够把几十个说话人的 conditioning latent 全缓存在卡上,而这是全站最便宜的 24GB 卡。
批量配音、开 DeepSpeed 追吞吐、要稳住 200ms 以内的流式首包
RTX 4090 24GB$0.540/卡·时
自回归解码吃的是单核算力和显存带宽,Ada 架构单卡生成最快,社区实测 DeepSpeed 带来的 2~3 倍提速在这块卡上最明显。
微调自己的音色(batch_size 4、11 秒切片、10 个 epoch)
RTX 5090 32GB$0.723/卡·时
社区微调指南给的门槛是 Linux 下最低 16GB 显存,32GB 让你把 batch_size 从 4 提到 8~12,不必靠梯度累积拿时间换空间。
一节点多卡横向扩,一个人撑起整条有声书/播客产线
RTX A6000 48GB$0.817/卡·时
单节点最多 14 张卡,每张 48GB 可以并排跑多个互不抢显存的 worker 进程,扩容只是多起几个容器,不用改一行推理代码。
03 —
XTTS 私有化部署四步走
从一台空机器,到一个能被 OpenAI SDK 直接调用的中文语音克隆端点。
- 01
装运行时,注意别装错包
PyPI 上那个叫 TTS 的老包已经停更,配 PyTorch 2.6 以上会在 torch.load 的 weights_only 检查上直接抛 UnpicklingError。要装的是 Idiap 维护的 coqui-tts(代码 MPL-2.0,支持 Python 3.10–3.14)。从 0.27.4 起它不再默认捎带 PyTorch,所以 [cuda] 这个 extra 必须显式加;中文分词走 spacy_pkuseg + pypinyin,由 [zh] 带进来。COQUI_TOS_AGREED 是为了跳过 CPML 的交互式确认,非交互环境里不设会卡住下载。
pip install "coqui-tts[cuda,zh,server]" && export COQUI_TOS_AGREED=1 - 02
首次合成,顺手把 2.1GB 权重拉下来
第一次调用会从 Hugging Face 下 model.pth(1.87GB)、dvae.pth(211MB)和 speakers_xtts.pth(7.75MB),落在 get_user_data_dir("tts") 指向的缓存目录里。参考音频给 6 秒以上的干净人声即可,输入会被重采样到 22.05kHz,输出固定 24kHz 单声道。语言码写 zh-cn,不是 zh。
python -c 'from TTS.api import TTS; TTS("tts_models/multilingual/multi-dataset/xtts_v2").to("cuda").tts_to_file(text="欢迎试听声音克隆效果", speaker_wav=["ref.wav"], language="zh-cn", file_path="out.wav")' - 03
起服务,用 OpenAI SDK 直接打
coqui-tts 自带的 tts-server 默认监听 5002 端口,除了原生的 /api/tts,还提供 /v1/audio/speech 这个 OpenAI 兼容端点,支持 wav、mp3、opus、aac、flac、pcm 六种返回格式。已有的 OpenAI TTS 代码只要把 base_url 改成 http://<节点地址>:5002/v1 就能切过来,api_key 随便填。要低延迟流式就绕过 HTTP,直接用 model.inference_stream() 配 use_deepspeed=True。开 GPU 的参数以 tts-server -h 里的当前写法为准。
tts-server --model_name "tts_models/multilingual/multi-dataset/xtts_v2" --use_cuda true - 04
要更像本人,就微调
官方带一个 Gradio 微调 demo,默认 batch_size 4、grad_acumm 1、num_epochs 10、单条切片最长 11 秒,监听 5003 端口。它会自己做转写切分、训 GPT 层、再给你一个试听界面,过程中要占掉 18~20GB 临时磁盘(大部分是中间产物)。官方 Colab 笔记本的说法是一次微调最多约 40 分钟。跑完把 checkpoint 目录换进上一步的服务即可。
python -m TTS.demos.xtts_ft_demo.xtts_demo --port 5003 --batch_size 4 --grad_acumm 1 --num_epochs 10 --max_audio_length 11
克隆一个音色 + 出 10 小时有声书,到底多少钱
按官方 Colab 的说法,一次 XTTS 微调最长约 40 分钟。租一块 RTX 3090 24GB($0.193/卡·时)做数据切分、微调和试听,整个流程给 3 小时:3 × $0.193 = $0.579。音色定下来后换 RTX 4090 24GB($0.540/卡·时)开 DeepSpeed 批量出片,再租 3 小时:3 × $0.540 = $1.62。XTTS 输出是 24kHz 16bit 单声道,也就是 48,000 字节/秒、约 172.8MB 每小时音频,10 小时成品约 1.73GB,按 $0.0081/GB 的出网中位价算是 1.73 × $0.0081 ≈ $0.014。三项相加:$0.579 + $1.62 + $0.014 ≈ $2.21,一整本有声书的算力成本不到两杯咖啡。存储另计 —— 权重加数据集按 10GB 估,$0.414/GB·月 × 10 = $4.14/月,实例一停计算就停止计费,卷删掉存储也跟着停。如果你要的是常驻服务而不是批处理:3090 挂满一个月是 $0.193 × 24 × 30 = $138.96;只在工作日 9:00 到 19:00 开机则是 $0.193 × 10 × 22 = $42.46。按秒计费、按小时定价,没有最低消费,没有开通费,也不用提工单申请配额。
04 —
