跳到主要内容

语音合成模型

XTTS-v2 本地部署:一块 24GB 卡跑通 17 语种声音克隆

6 秒参考音频、1.87GB 权重、4GB 显存峰值。这是开源声音克隆里门槛最低的一档,但要跑对,你得先知道 revision、字符上限和许可证这三件事。

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,输出 24kHz17 种语言,比 v2.0.2 多一门印地语 hi。启用 perceiver resampler,说话人条件建模优于 v1.x。不指定 revision 时 coqui-tts 拉的就是这份。
XTTS-v2 revision v2.0.2架构与权重体积同 v2.0.3同上,约 4GB 峰值文本 402 token / 音频 605 token16 种语言,没有 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 层推理与原版一致;微调另算,见下方硬件表同 v2Hugging 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 直接调用的中文语音克隆端点。

  1. 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
  2. 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")'
  3. 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
  4. 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 —

常见问题

XTTS-v2 本地部署需要多大显存?8GB 的卡够吗?

够跑单路。model.pth 是 1.87GB 的 fp32 权重,加上 211MB 的 DVAE、HiFi-GAN 解码器和最多 605 个音频 token 的 KV cache,单路推理的显存峰值落在 4GB 量级,8GB 卡没问题。真正吃显存的是并发 —— 每多起一个 worker 进程就多一份权重副本,想在一张卡上开四五路就该上 24GB。NexGPU 的 RTX 3090 24GB 是 $0.193/卡·时,先租一小时把你的真实并发量测出来,比在本地纠结划算得多。

XTTS 可以商用吗?CPML 许可证到底限制了什么?

不能。XTTS-v2 的权重走的是 Coqui Public Model License 1.0.0,原文明确只授权非商业用途,而且把「用这个模型去训练另一个用于商业的模型」也划进了禁止范围;模型、修改版乃至它生成的音频往下传的时候都得带着同一份条款。注意代码和权重是两套授权:Idiap 那个 coqui-tts 的代码是 MPL-2.0,可以商用,卡住你的是权重。CPML 里留的商用授权邮箱随原厂停止运营已经形同虚设。真要做商业产品,请换 Apache-2.0 的 Fun-CosyVoice3 或 MIT 的 Chatterbox —— 在 NexGPU 上换个模型名就行,GPU 还是那块 GPU。

XTTS 中文效果怎么样?为什么长句子会被截断?

中文(zh-cn)从 v1 起就在支持列表里,音色相似度不错,但分词器里写死了一条硬限制:中文单段输入上限 82 个字符(对比英文 250、德文 253、日文 71、韩文 95)。超了会打出「might cause truncated audio」的警告并可能真的截断。正确做法是自己按标点切句、逐句合成再拼接 —— coqui-tts 0.27.3 之后会返回句级时间戳,对齐拼接方便很多。另外中文依赖 spacy_pkuseg 和 pypinyin,装的时候别漏掉 [zh] 这个 extra。这些坑在一块按秒计费的 RTX 3090 上试十分钟就能全部踩完。

pip install TTS 之后报 weights_only 或 transformers 相关的错,怎么修?

把包换掉,别去打补丁。PyPI 上的 TTS 是原厂留下的死包:PyTorch 从 2.6 起把 torch.load 的 weights_only 默认改成 True,老包加载 XTTS checkpoint 会直接抛 UnpicklingError;transformers 版本往上走之后 GPT2InferenceModel 那条推理路径也会断。Idiap 的 coqui-tts 一路在补 —— 0.27.3 让流式推理适配 transformers 4.57,0.27.4 跟上 Python 3.14 和 PyTorch 2.10,0.27.5 修好了 transformers 5。卸掉 TTS、装 coqui-tts 就完事。嫌配环境麻烦的话,NexGPU 有 2,000+ 预置镜像,PyTorch 环境开机即用,剩下的就一条 pip 命令。

微调一个自己的音色要多少显存?大概跑多久?

官方 Gradio demo 的默认配置是 batch_size 4、grad_acumm 1、10 个 epoch、单条切片最长 11 秒;社区微调指南给的硬件门槛是 Linux 下最低 16GB 显存、Windows 下建议 12GB 以上,另外要留 18~20GB 临时磁盘。官方 Colab 笔记本的说法是一次微调最多约 40 分钟。换句话说 RTX 3090 24GB($0.193/卡·时)就完全够用;想把 batch_size 提到 8~12 少等一会儿,就上 RTX 5090 32GB($0.723/卡·时)。我们按秒计费,跑完即停,不会为一次四十分钟的训练付一整天的钱。

权重两年多没更新了,XTTS 还值得用吗?和 CosyVoice、Chatterbox 怎么选?

看你要什么。XTTS-v2 的优势是生态成熟、教程满地、一段 6 秒音频就能跨语种克隆,17 个语种一份权重全包,做内部工具或个人项目仍然是最快上手的一档。但权重确实冻结了,CPML 也不让商用。要中文和方言,看 Fun-CosyVoice3-0.5B(Apache-2.0,9 个语种加 18+ 中文方言,官方称最低 150ms 延迟);要宽松许可,看 Resemble AI 的 Chatterbox(MIT,多语种版 500M,覆盖 23+ 语种)。好在这三家的部署形态几乎一样,都是单卡小模型。NexGPU 覆盖 51 个国家和地区、1,175 个已验证可租节点、75 种 GPU 型号,你可以在同一块 RTX 4090 上把三个挨个试一遍,再决定押哪个 —— 支持是 Telegram 上的双语人工,不用排工单。

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。