2026 开源 TTS 语音克隆实测:XTTS v2 / OpenVoice / F5-TTS 在 VPS 上自托管部署与成本
2026-08-16 · DevCraft Studio
实测对比 XTTS v2、OpenVoice v2、F5-TTS 三款开源语音克隆方案,讲清许可证、多语言、硬件需求与成本,并给出 VPS GPU 与 FastAPI 部署方法。
延伸阅读
更多相关攻略推荐:Ollama AI系列(2):VPS上的AI推理与API应用、Ollama AI系列(2):VPS上的AI推理与API应用、ARM / Ampere 席卷 VPS:性价比真香还是兼容陷阱?、Ollama AI系列(2):VPS上的AI推理与API应用、做欧洲生意要合规:GDPR 友好型欧盟 VPS 节点与数据落地指南(。
为什么 2026 是自托管语音克隆的拐点
过去一年里,开源语音克隆的质量第一次真正追上了商业 API。社区排行榜上 F5-TTS、OpenVoice v2、XTTS v2 的 MOS 自然度分数已经接近 ElevenLabs 的 4.5,而单位成本只有商业 API 的 1/50 到 1/200。对做配音、播客、无障碍和有声内容的创作者来说,这意味着你可以用一台几十美元一个月的 GPU 服务器,把原来按字符计费的账单直接干掉。
更关键的是数据主权。自托管之后,参考音频和合成文本都留在你自己的机器上,不会上传到第三方。对隐私敏感的场景(比如为家人做语音辅助、企业内部培训配音)这几乎是必选项。本文把三款最常被搜到的开源方案放在一起实测对比,重点讲清楚三个最容易踩坑的地方:许可证能不能商用、多语言到底支持到什么程度、以及到底要买多大显存的 VPS。
三款方案一句话速览
- XTTS v2:Coqui 出品的标杆级开源克隆模型,官方支持 17 种语言,3 到 6 秒样本即可克隆,但 Coqui 公司已于 2024 年 1 月关闭,仓库已归档,现在靠社区分支维护。
- OpenVoice v2:MyShell 出品,MIT 许可证可免费商用,原生支持英、西、法、中、日、韩 6 种语言,最大亮点是音色编码器与语言解耦,能做零样本跨语言克隆,还支持情绪和口音控制。
- F5-TTS:SWivid 团队基于 Flow Matching 加 DiT 架构的后来者,MOS 自然度约 4.3 在三者里最高,基础检查点主要用英文和中文训练,5 到 15 秒样本即可零样本克隆,代码是 MIT,但预训练权重因训练数据受 CC-BY-NC-4.0 限制。
许可证与商用可行性(避坑重点)
这是绝大多数教程不会讲明白、但最容易让产品翻车的地方,务必先看清。
- OpenVoice v2:MIT 许可证,从 2024 年 4 月起 V1 和 V2 都允许免费商用,最省心。只要你不打包重新发布修改版去坑人,基本没有限制。
- F5-TTS:代码 MIT,但预训练权重是 CC-BY-NC-4.0,原因是用了 Emilia 等数据集训练。这意味着个人、研究、非商业用途完全没问题;如果你要做商业语音产品,需要先确认你的用途是否落在非商业限制之外,或者计划用自己的合规音频做微调、训练出你可以自行授权权重的模型。很多新手直接拿官方权重上线收费服务,这里要小心。
- XTTS v2:使用 Coqui Public Model License(CPML),非商业用途免费,商业用途需要 Coqui 的付费授权。网上有时会写成 MPL 2.0,那是对旧版 Coqui TTS 框架的混淆,模型权重本身是 CPML。加上公司已经关闭、官方授权通道不再活跃,商用风险最高,建议只用于个人和研究。
一句话总结:要免费且安心商用,优先 OpenVoice v2;做研究和中文内容,F5-TTS 质量最好但要规避商业限制;XTTS v2 多语言最全但授权最麻烦。
多语言支持对比
- XTTS v2:17 种语言,覆盖英、西、法、德、意、葡、波、土、俄、荷、捷、阿、中、日、匈、韩、印地,广度第一。
- OpenVoice v2:原生 6 种(英、西、法、中、日、韩),但架构上支持零样本跨语言,你用中文样本也能让它说英文、日文,口音也能切换。
- F5-TTS:基础检查点主要覆盖英文和中文,其他语言靠社区微调检查点,质量参差。如果你主要做英中双语,F5-TTS 体验最好。
实测里跨语言最稳的是 OpenVoice v2,因为它把音色(tone color)单独编码,和语种解耦;F5-TTS 跨语言会有些口音串味;XTTS v2 则是语种本身就在训练集里所以切换自然。
硬件与 VRAM 需求
三款模型都不算显存怪物,这是它们能在廉价 VPS 上跑起来的前提。
- F5-TTS:FP16 下约 2 到 3 GB 显存,RTX 4090 上实时因子约 5 倍(即 1 秒音频约 0.2 秒算完)。最低 6 GB 显存即可,8 GB 以上更稳。
- OpenVoice v2:约 2 到 3 GB 显存,是三者里最轻的,RTX 4090 上实时因子约 8 倍,RTX 3060(12GB)约 4 倍,连 Apple M4 Max 的 MPS 都能跑到约 3 倍。
- XTTS v2:约 480M 参数,显存占用略高,在 A10G(24GB)上约 3 到 4 倍实时。社区反馈 8 到 12 GB 显存可用。
也就是说,一张 RTX 3060 12GB 或者云端的 L4、A10 这类入门 GPU 就足以流畅推理。CPU 也能跑但很慢(实时因子 0.3 到 0.5 倍),只适合离线批处理。
成本:自托管 vs 商业 API
成本差异是这篇文章的核心。按每百万字符估算:
- ElevenLabs 高端档约 165 美元,标准档约 110 美元。
- OpenAI TTS-1-HD 约 30 美元,TTS-1 约 15 美元。
- Google Cloud 标准档约 4 美元,Azure 神经档约 16 美元。
- 自托管 F5-TTS 有效成本约 2 美元,XTTS v2 约 2.5 美元,Kokoro 约 0.5 美元(但 Kokoro 不做克隆)。
大头其实是 GPU 服务器租金。以常见配置算,一台带 RTX 4090 或 L40S 的按需 GPU VPS 约 0.4 到 0.8 美元每小时,如果你每月合成几百万字符,平摊下来单位成本轻松压到商业 API 的几十分之一。量越大,自托管越划算。
在 VPS 上部署:以 Vultr 和 Contabo 为例
选 GPU VPS 主要看显存和单价。两家很适合作为例子:
- Vultr:提供 A100、A10、L40S 等按需 GPU 实例,按小时计费,镜像市场有带 CUDA 的 PyTorch 模板,适合跑高并发批处理,网络和中国大陆连通性一般但全球节点多。
- Contabo:GPU VPS 性价比突出,常见机型带 RTX 3090 或 RTX 4090,显存 24GB,月付价格比同类低一截,适合个人创作者长期挂着跑,性价比优先可以选它。
系统建议用 Ubuntu 22.04,先装好 NVIDIA 驱动和 CUDA 12.x,再装 NVIDIA Container Toolkit,这样后面用 Docker 跑模型最省事。下面以 F5-TTS 的 GPU Docker 为例。
docker run --rm -it --gpus all \
--mount type=volume,source=f5-tts,target=/root/.cache/huggingface/hub/ \
-p 7860:7860 \
ghcr.io/swivid/f5-tts:main f5-tts_infer-gradio --host 0.0.0.0
把模型缓存挂到 volume,重启容器就不会每次重新下载几 GB 权重。生产环境建议改成 FastAPI 服务而不是 Gradio UI,后面给示例。
用 FastAPI 把模型封装成服务
无论是 F5-TTS 还是 OpenVoice,真正接入业务都需要一个 REST 接口而不是手动点网页。下面给一个最小的 F5-TTS FastAPI 封装:
from fastapi import FastAPI
from f5_tts import F5TTS
import tempfile
app = FastAPI()
tts = F5TTS(device="cuda")
@app.post("/generate")
def generate_speech(text: str, ref_audio_path: str, ref_text: str):
with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as f:
tts.generate(
text=text,
ref_audio=ref_audio_path,
ref_text=ref_text,
output_path=f.name,
)
return {"audio_path": f.name}
OpenVoice v2 的封装思路类似,只是多一步音色提取(tone color)。它把参考音频先过一次音色编码器拿到 speaker embedding,再和基模型生成的音频做转换:
from openvoice import api
base_speaker_tts = api.BaseSpeakerTTS(
"checkpoints_v2/base_speakers/EN/config.json", device="cuda")
base_speaker_tts.load_ckpt("checkpoints_v2/base_speakers/EN/checkpoint.pth")
tone_color_converter = api.ToneColorConverter(
"checkpoints_v2/converter/config.json", device="cuda")
tone_color_converter.load_ckpt("checkpoints_v2/converter/checkpoint.pth")
target_se, _ = api.se_extractor.get_se("reference.wav", tone_color_converter)
base_speaker_tts.tts(text="你好,这是一段测试。", output_path="base.wav",
speaker="default", language="Chinese", speed=1.0)
tone_color_converter.convert(audio_src_path="base.wav",
src_se=base_speaker_tts.hps.data.spk2id["default"],
tgt_se=target_se, output_path="output.wav")
暴露成接口时,把 reference.wav 的 speaker embedding 缓存起来,同一个声音反复合成就不用每次重新提取,延迟能从几百毫秒降到几十毫秒。
F5-TTS 实战:几秒样本克隆声音
F5-TTS 默认检查点就是零样本克隆,不需要单独开模式。准备一段 5 到 15 秒、干净、单人、少噪声的参考音频,并准备好它的准确文字稿,然后这样调用:
from f5_tts import F5TTS
tts = F5TTS(device="cuda")
tts.generate(
text="这是用克隆音色说出的全新内容。",
ref_audio="reference_voice.wav",
ref_text="这是参考音频里念出的原文。",
output_path="cloned_output.wav",
)
实测要点:参考音频质量比长度更重要,干净的单人短录音比一段长但嘈杂的录音克隆更稳。留空 ref_text 会让它调用 ASR 自动转写,但会多吃显存且可能转错,建议自己给准稿。中文内容建议用中文参考样本,英文用英样本,跨语种会有口音串味。
OpenVoice v2 实战:跨语言加情绪控制
OpenVoice v2 最香的是情绪和口音控制,以及跨语言。下面的例子用中文参考音,生成日文输出但保持同一音色:
base_speaker_tts.tts(
text="こんにちは、これはテストです。",
output_path="base_ja.wav",
speaker="default",
language="Japanese",
)
tone_color_converter.convert(
audio_src_path="base_ja.wav",
src_se=base_speaker_tts.hps.data.spk2id["default"],
tgt_se=target_se,
output_path="output_ja.wav",
)
情绪控制则改 speaker 参数为 cheerful、sad、angry、whispering 等,同一句话八种情绪,非常适合游戏 NPC 和有声书角色配音。注意情绪标签是作用在基模型上的,最后再统一转换到目标音色。
XTTS v2 实战与归档提醒
XTTS v2 在 Hugging Face 上仍是下载量最高的开源克隆模型,社区 fork 很多。跑法上它也是零样本,3 到 6 秒样本即可。但要注意:Coqui 官方仓库已归档,新项目不建议把它作为长期生产依赖,优先选 OpenVoice v2 或 F5-TTS。如果你已经在用,记得锁定社区里还在维护的分支版本,避免依赖突然失效。
实测避坑清单
- 显存不够就降精度到 FP16,并设 PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:32 减少碎片。
- Docker 跑 GPU 必须装 NVIDIA Container Toolkit,否则容器看不到卡会直接初始化失败。
- Python 版本建议 3.10 或 3.11,F5-TTS 在 3.12 上偶有 distutils 弃用报错。
- 参考音频务必单人说、少背景音,转写稿要准,否则克隆会跑偏。
- 对外暴露 FastAPI 一定要加鉴权,别把声音合成接口裸奔到公网。
- 商用前逐字核对许可证:OpenVoice v2 最稳,F5-TTS 权重受限,XTTS v2 需付费授权。