跳到主要内容

语音合成 · TTS

Tortoise TTS 本地部署:4GB 显存起步的 24kHz 音色克隆

五个模型串成一条流水线,权重合计 4.6GB 全落本地,几条参考音频就能钉住一个音色。慢是它的姓,但 v3 的 hifidecoder 把 RTF 压到了 0.25–0.3。

Tortoise 这个名字是作者 James Betker 自嘲取的——第一版在 K80 上生成一句中等长度的句子要两分钟。代价换来的是当年几乎没有对手的韵律:它不是端到端一把梭,而是把任务拆给五个模型接力。一个 GPT-2 结构的自回归解码器(autoregressive.pth,fp32 权重 1.72GB)先吐出几十上百条候选的 mel token 序列,CLVP2(976MB)这个 CLIP 式的文本—语音打分器把最贴合文本的那条挑出来,再交给扩散解码器(1.17GB)细化成梅尔谱,最后 UnivNet 声码器(391MB)出 24kHz 波形。参考音频按 22.05kHz 载入做条件,输出固定 24kHz。

整个项目是 Betker 一个人用自己的机器做出来的:8 张 RTX 3090 跑了几个月,约 5 万小时语音、以有声书为主,训练框架是他自己写的 DLAS。代码在 github.com/neonbjb/tortoise-tts,Apache 2.0,权重在 HuggingFace 的 jbetker/tortoise-tts-v2。要说清楚的是:主线已经很久没有推进了——PyPI 上 tortoise-tts 只有 3.0.0 一个版本,发布于 2023 年 10 月,带来的正是那个改变游戏规则的 hifidecoder(71MB):它一口气替掉扩散解码器和 UnivNet,直接从自回归潜变量出波形,官方 README 给出的数字是「0.25–0.3 RTF on 4GB vram」,配合 tts_stream 分块可以做到 500ms 以内的首包延迟。社区侧同样在收缩,JarodMica/ai-voice-cloning(承接 mrq 的训练分支)已于 2025 年 6 月归档,152334H/tortoise-tts-fast 挂着 maintenance only。

那为什么还要写这一页?因为 Tortoise 有两件事没被完全替代:一是它那条完整扩散路径出来的朗读腔——念书、念诗、长句停顿——至今仍有人专门为此保留它;二是它 Apache 2.0、权重可离线、不联网、不回传,做私有化部署没有任何授权拉扯。这一页讲清它到底吃多少显存、四档预设各差在哪、依赖版本锁死之后在现在的机器上怎么装得起来,以及在 NexGPU 上该点哪张卡——从 $0.193/卡·时 的 RTX 3090 24GB 开始。本页所有显存与体积数字均来自官方权重文件的实际字节数和上游 README,可自行核对。

01 —

五个模型、两条推理路径

Tortoise 只有一套权重发布,真正需要选的是走哪条解码路径、开哪几个可选模块。

版本参数量显存上下文说明
api_fast.py + hifidecoder(v3.0.0 快速路径)autoregressive 1.72GB + hifidecoder 71MBfp32 权重约 1.8GB;half=True 约 0.9GB;上游标称 4GB 显存可跑max_mel_tokens 500(约一句话)/输出 24kHz跳过扩散解码器和 UnivNet,直接从 AR 潜变量出波形。唯一支持 tts_stream 流式分块的路径(stream_chunk_size 默认 40,overlap_wav_len 1024),也是 0.25–0.3 RTF 这个数字的来源。要低延迟就只能走这条。
api.py 完整扩散路径(经典 v2 管线)AR 1.72GB + diffusion 1.17GB + CLVP2 976MB + UnivNet 391MBfp32 权重常驻约 4.3GB,half=True 约 2.2GB;峰值由 AR 候选批量决定tts() 默认 num_autoregressive_samples=512、diffusion_iterations=100Tortoise 之所以是 Tortoise 的那条路。四档预设的差别全在这两个数上:ultra_fast 是 16 路候选/30 步扩散,fast 是 96/80,standard 是 256/200,high_quality 是 256/400。想省时间先砍候选数,想省质量再砍扩散步数。
CVVP 音色重排(默认关闭)cvvp.pth 151MB额外约 0.15GBcvvp_amount 默认 0.0第二个打分器。CLVP2 判断「像不像这段文本」,CVVP 判断「像不像这个人」。音色跑偏、候选选出来内容对但声音不对时,把 cvvp_amount 调到 0.1–0.3,代价是多加载一个模型并拖慢重排。
RLG 随机音色(rlg_auto + rlg_diffuser)25MB + 101MB额外约 0.13GBvoice='random'不提供参考音频时用来直接采样一个并不存在的说话人。做匿名旁白、做占位配音、或者你压根不想碰任何真人声纹的合规场景,这是原生解法。
tortoise-detect 检测分类器classifier.pth 61MB约 0.1GB独立调用,不参与合成作者当年一并放出的溯源工具,判断一段音频是否由 Tortoise 生成。私有化部署里拿它做输出留痕和内部审计很省事,不用另找第三方检测服务。
tortoise-tts-fast(152334H 社区分支)复用官方权重,不额外下载与完整路径同,可开 CPU offload 换显存DDIM/DPM-Solver 采样器在官方加入 hifidecoder 之前的社区加速方案,宣称 5–10 倍、极限约 20 倍,靠的是 kv_cache、fp16 和换掉扩散采样器。仓库已标注 maintenance only,但如果你要的是「保留扩散音质同时提速」,它仍是唯一现成选项。

02 —

在 NexGPU 上该点哪张卡

上游给的门槛是 4GB,所以 Tortoise 的选卡逻辑不是「够不够装得下」,而是「AR 采样跑多快」。

  • 试音、ultra_fast 预设、hifidecoder 流式接口

    RTX 3090 24GB$0.193/卡·时

    上游标称 4GB 就能跑,24GB 是彻底的过剩——但它同时是我们价目表上最便宜的一张 24GB 卡,fp16 加 kv_cache 全开也用不满,没有理由为了省显存去选更贵的卡。

  • standard/high_quality 预设,256 路候选加 200–400 步扩散

    RTX 4090 24GB$0.540/卡·时

    这一档是纯算力活:候选批量和扩散步数都翻了十几倍,AR 采样成为绝对瓶颈,4090 的 fp16 吞吐把挂机时间压下来之后,总账往往比在 3090 上熬更划算。

  • 长文有声书批量离线合成,逐句重采样重挑

    RTX 5090 32GB$0.723/卡·时

    多出来的 8GB 正好用来抬 autoregressive_batch_size,一次多押几条候选让 CLVP2 一轮筛完,比反复调 read.py 的 --regenerate 省心得多。

  • 用 DLAS 微调自回归主干,训练专属音色

    RTX A6000 48GB$0.817/卡·时

    微调要同时装下权重、梯度和优化器状态,48GB 是不用改代码就能跑起来的最低档;顺带一提,A100 PCIE 80GB 是 $0.824,只贵 $0.007 就把显存翻倍,值得先比一眼再下单。

03 —

从空机器到出第一段音频

Tortoise 的安装难点不在模型,在依赖锁死的 requirements.txt——先把环境隔离干净,后面全是顺的。

  1. 01

    开一台带 PyTorch 镜像的实例,拉代码

    在 console.nexgpu.net 选 RTX 3090 24GB,镜像挑现成的 PyTorch 那一档(2000+ 预置镜像里有),SSH 进去直接拉仓库。不用自己装 CUDA,也不用申请配额。

    git clone https://github.com/neonbjb/tortoise-tts.git && cd tortoise-tts
  2. 02

    建独立 conda 环境,避开依赖地雷

    这是唯一会卡住人的一步。官方 requirements.txt 里锁了 transformers==4.31.0、deepspeed==0.8.3、pydantic==1.9.1、librosa==0.9.1、tornado==4.2 这一串老版本,直接装进系统环境几乎必然和你机器上别的东西打架。Python 3.9 独立环境是最省事的走法——别图省事复用 base。

    conda create -n tortoise python=3.9 -y && conda activate tortoise && pip install "transformers==4.31.0" && pip install -e .
  3. 03

    跑通第一句,权重会自动下载

    首次运行会从 HuggingFace 拉全套权重,八个文件合计约 4.6GB,落在 ~/.cache 下。--voice 可以填 tortoise/voices/ 里内置的三十个音色之一(tom、emma、freeman、geralt、applejack 等),或者填 random 让 RLG 现场采样一个不存在的说话人。要克隆自己的音色,就在 voices/ 下新建一个目录,扔进去几条几秒钟的干净 wav 即可,不需要训练。

    python tortoise/do_tts.py --text "The quick brown fox jumps over the lazy dog." --voice tom --preset fast
  4. 04

    切到流式接口,把优化开关全打开

    确认能出声之后就该换 api_fast 了:kv_cache 让 AR 采样不重复算前缀,half 走 fp16,use_deepspeed 上 DeepSpeed 推理内核。这三个开关是 0.25–0.3 RTF 和 500ms 首包的前提。要对外提供服务的话,仓库自带 tortoise/socket_server.py,起来就监听 5000 端口。

    python -c "from tortoise.api_fast import TextToSpeech; tts = TextToSpeech(use_deepspeed=True, kv_cache=True, half=True)"

一本有声书要花多少钱

先用上游唯一给死的那个数字算:hifidecoder 路径 0.25–0.3 RTF。取上限 0.3,意思是生成 1 小时成品语音要占 0.3 个 GPU 小时。挂 RTX 3090 24GB,$0.193/卡·时 —— 1 小时音频就是 0.3 × 0.193 = $0.058。一本 9 小时的有声书是 2.7 GPU 小时,2.7 × 0.193 = $0.52。把首次拉 4.6GB 权重、建 conda 环境、跑通 do_tts.py 的调试时间算 2 小时,2 × 0.193 = $0.386,合计约 $0.91,一杯咖啡不到。 如果你要的是 Tortoise 真正出名的那种朗读质感,就得走完整扩散路径。standard 预设是 256 路候选加 200 步扩散,比 hifidecoder 慢一个数量级以上,具体倍数取决于句长和批量,强烈建议先拿自己的文本测三十秒再外推——这里按慢 10 倍(RTF 3)粗算:同样 9 小时有声书要 27 GPU 小时,换 RTX 4090 24GB $0.540/卡·时 = $14.58,睡一觉的事。 存储另算:4.6GB 权重按 $0.414/GB·月 的中位价是 $1.90/月。注意计费边界——实例一停,计算立刻停止计费;存储要等到你把盘销毁才停。所以合成完一批就把实例停掉,权重留着下次直接开机接着用,比每次重下 4.6GB 划算。全程按秒计量、按小时计价,没有起租时长,没有开通费,也不需要提配额工单。

04 —

常见问题

Tortoise TTS 本地部署到底需要多大显存?

官方 README 给出的门槛是「0.25–0.3 RTF on 4GB vram」,指的是 v3 的 hifidecoder 路径:只需常驻 autoregressive.pth(1.72GB)和 hifidecoder.pth(71MB),开 half=True 后权重不到 1GB。走完整扩散路径的话,AR 1.72GB + diffusion 1.17GB + CLVP2 976MB + UnivNet 391MB 相加约 4.3GB 常驻,fp16 折半到约 2.2GB;但真正的显存峰值不由权重决定,而由 num_autoregressive_samples 的候选批量决定——standard 预设一次押 256 条,这才是会 OOM 的地方。结论是:8GB 卡够跑,但没必要——在 NexGPU 上 RTX 3090 24GB 只要 $0.193/卡·时,把候选批量拉满都不用担心。

Tortoise TTS 为什么这么慢?有办法加速吗?

慢在设计上:它要先自回归采样出几十到几百条候选,再用 CLVP2 逐条打分重排,最后还要跑几百步扩散。四个环节里三个是串行的。加速有三条路——第一,换 hifidecoder 快速路径(api_fast.py),砍掉扩散和声码器,这是官方给的方案,也是 0.25–0.3 RTF 的来源;第二,把 kv_cache=True、half=True、use_deepspeed=True 三个开关全打开;第三,降预设,从 high_quality(256/400)退到 fast(96/80)再退到 ultra_fast(16/30),候选数是最值钱的那个旋钮。社区的 tortoise-tts-fast 用 DDIM/DPM-Solver 换掉采样器,宣称 5–10 倍。最省事的加速其实是换卡:同样的代码在 RTX 4090 $0.540/卡·时 上跑,挂机时间短了,总账反而更便宜。

Tortoise TTS 支持中文吗?

官方权重不支持。训练数据是约 5 万小时以英文有声书为主的语音,tokenizer 和音素覆盖都只按英文设计,喂中文进去要么读成拼音腔要么直接崩。社区分支(mrq 一脉,后由 JarodMica 维护)加过多语言支持,但那个仓库已在 2025 年 6 月归档,维护者自己在 README 里建议改用 XTTS、GPT-SoVITS、F5-TTS、StyleTTS2 或 Zonos。要做中文语音合成,请去看我们站内的 CosyVoice、GPT-SoVITS 相关页面;Tortoise 这一页请当成英文朗读专用方案来读。好在这不影响选卡——在 NexGPU 上换个模型只是换个镜像,实例和计费方式完全一样。

装不上:transformers、pydantic、DeepSpeed 一堆版本冲突怎么办?

这是 2026 年装 Tortoise 最真实的痛点。requirements.txt 锁的是 transformers==4.31.0、deepspeed==0.8.3、pydantic==1.9.1、einops==0.4.1、librosa==0.9.1、tornado==4.2、nbconvert==5.3.1 这批 2023 年的版本,官方 conda 配方更是写着 Python 3.9 + PyTorch cu117。pydantic 1.x 和 transformers 4.31 跟现代栈几乎不可能共存,硬升 transformers 又会因为 GPT2 接口改动直接报错。正解只有一个:完全隔离——独立 conda 环境或者干脆独立实例,别碰系统 Python。另外 DeepSpeed 在 Apple Silicon 上是禁用的,在 Windows 上也经常编不过,Linux 才是省事的地方。NexGPU 的实例本来就是干净的 Linux 环境,装坏了停掉重开一台,按秒计费不心疼。

Tortoise 是不是已经被 XTTS、F5-TTS 这些取代了?还值得部署吗?

在「哪个更快更多语言」这个维度上,是的——Coqui 的 XTTS 本身就脱胎于 Tortoise 的架构思路,后来的 F5-TTS、GPT-SoVITS、StyleTTS2 在速度和多语言上全面领先,主线 Tortoise 的 PyPI 只停在 2023 年 10 月的 3.0.0。但有两个理由让它仍在被部署:一是完整扩散路径出来的英文朗读腔——长句停顿、语气起伏、念书念诗的那种质感,至今仍有人专门为此保留它;二是 Apache 2.0 加全套权重可离线,加上作者附赠的 tortoise-detect 检测器,做完全断网的私有化部署几乎没有授权和合规摩擦。如果这两条戳中你,就在 NexGPU 上开一台 RTX 3090 $0.193/卡·时 跑几段听听,不合适停掉就是,没有起租时长。

想微调出自己的专属音色,要多大卡?

先说清楚:大多数人不需要微调。Tortoise 的零样本克隆已经够用——在 tortoise/voices/ 下新建一个目录,放几条几秒的干净 wav,--voice 指向它即可,不动一次训练。真要微调自回归主干,用的是作者自己的 DLAS 训练框架(社区里那套带 GUI 的封装出自 mrq,后由 JarodMica 接手,仓库已归档,代码仍可用)。训练要同时装权重、梯度和优化器状态,显存需求跳一个量级:NexGPU 的 RTX A6000 48GB $0.817/卡·时 是不用改代码的最低档,而 A100 PCIE 80GB 只要 $0.824,多花 $0.007 显存翻倍,实际更推荐后者。我们全网 1,175 个可租节点、2,498 张 GPU,单节点最多 14 卡、最大整机显存 2,152GB,要横向扩训练也接得住。

开始使用 NexGPU

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

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