F5-TTS 出自上海交通大学 X-LANCE 实验室,是一套完全非自回归的零样本 TTS:Flow Matching 加 Diffusion Transformer,把文本用填充符补齐到与语音等长后直接去噪生成,不需要 duration model、不需要 text encoder、不需要音素对齐。相比它复现的 E2 TTS,F5-TTS 用 ConvNeXt V2 先精炼文本表示解决对齐难题,再用推理期的 Sway Sampling 策略(默认系数 -1.0)把质量和速度一起拉起来。当前主线基座是 2025 年 3 月发布的 F5-TTS v1 Base,Python 包 f5-tts 已经迭代到 1.1.22。
它值得自己部署的理由是「小」。F5-TTS Base 只有 335.8M 参数,DiT 22 层、16 头、1024/2048 维,配 4 层 ConvNeXt V2;HuggingFace 上的 model_1250000.safetensors 实测 1,348,435,761 字节,也就是 fp32 状态下 1.35GB。这个体量意味着一张消费级卡就能同时跑推理、微调甚至多路并发,而效果并不打折:Seed-TTS test-zh 上 WER 1.56%、SIM 0.76,中文指标比它自己的英文成绩(WER 1.83%、SIM 0.67)还漂亮,对中文配音、有声书、数字人口播这类场景相当友好。速度方面,论文自报 NFE 16 步时 RTF 0.15,官方 Triton + TensorRT-LLM 方案在单张 L20 上并发 2 时平均延迟 253ms、RTF 0.0394。
但坑也很具体,租卡前必须知道:单次生成有 30 秒硬上限,而且这 30 秒包含参考音频本身,所以参考音频建议控制在 12 秒以内并在结尾补静音;长文本靠 chunk_text 切块(默认 max_chars=135)再用 0.15 秒交叉淡化拼接,块边界的呼吸和语气容易听出来;大写字母会被逐字母朗读(K.F.C. 就是这么来的),正常发音必须写小写;最要命的是授权 —— 代码是 MIT,但因为训练用了 in-the-wild 的 Emilia 数据集,官方权重是 CC-BY-NC,商用需要自己换数据重训或微调。
01 —
F5-TTS 有哪些版本和权重
官方基座、声码器变体与社区多语种微调,参数量和落盘体积一次对齐
| 版本 | 参数量 | 显存 | 上下文 | 说明 |
|---|---|---|---|---|
| F5-TTS v1 Base(model_1250000.safetensors) | 335.8M | fp32 权重 1.35GB/推理 8GB 卡有余 | 24kHz 输出,单次 ≤30s(含参考音频) | 当前默认基座,2025-03-12 发布,Emilia 95K 中英数据,CLI 里 --model 的默认值,pinyin tokenizer,配 Vocos 声码器。新项目直接用它。 |
| F5-TTS Base(model_1200000.safetensors) | 335.8M | fp32 权重 1.35GB | 24kHz 输出,单次 ≤30s | 2024-10 的初代基座。价值在于它是唯一带 BigVGAN 变体的版本(F5TTS_Base_bigvgan/model_1250000.pt),--vocoder_name bigvgan 只对它生效;追求音质上限时才回退到这条线。 |
| E2 TTS Base | 333.2M | fp32 权重约 1.33GB | 24kHz 输出,单次 ≤30s | Flat-UNet Transformer,24 层、16 头、1024/4096 维,是论文里对 E2 TTS 最接近的复现。收敛慢、鲁棒性弱,主要用来做对照实验,不建议上生产。 |
| F5-TTS v1 Small(configs/F5TTS_v1_Small.yaml) | 158M | fp32 权重约 0.63GB | 24kHz 输出,char tokenizer | 官方只给训练配置(dim 768、depth 18、heads 12,LibriTTS_100_360_500,686 epochs),不发权重。想从零训一个轻量单语种模型、或显存吃紧时的起点。 |
| 社区多语种微调权重 | 335.8M(Base 系)/158M(Small 系) | 与对应基座相同 | 各语种 24kHz | infer/SHARED.md 已收录芬兰语、法语、德语、意大利语、日语、拉脱维亚语、俄语、西班牙语(218 小时)、印地语(SPRINGLab/F5-Hindi-24KHz,Small 系)、阿拉伯语(silma-ai,Small 系)等。CLI 支持 hf:// 直链加载。 |
02 —
F5-TTS 该租什么 GPU
按推理、在线服务、微调、预训练四档对号入座,价格是 NexGPU 每卡每小时挂牌价
批量离线合成 / 单机推理验证
RTX 3090 24GB$0.193/卡·时
1.35GB 权重加 Vocos 声码器在 24GB 上几乎不占地方,Ampere 架构支持 fp16/bf16 与 flash attention,是跑通 F5-TTS 最便宜的现代卡。
在线低延迟接口 / Triton + TensorRT-LLM 服务化
RTX 4090 24GB$0.540/卡·时
官方 253ms、RTF 0.0394 的基准跑在 L20 上,4090 是同代 Ada 架构里最接近的租用选择,适合把 NFE 压到 16 步做实时口播。
微调自己的音色或换语种
RTX A6000 48GB$0.817/卡·时
仓库自带公式 batch_size_per_gpu = 38400 × (显存GB − 5) / 75,48GB 可开到约 22016 帧,比 24GB 卡的 9728 帧多一倍多,梯度更稳、收敛更快。
从零预训练 / 大规模多语种重训
A100 SXM4 80GB$1.088/卡·时
论文原样配置就是 8 张 A100 80G、每卡 38400 帧、总 batch 307,200 帧、1.2M 更新,这条线是唯一能一比一复现的路径。
03 —
在 NexGPU 上把 F5-TTS 跑起来
从开机到第一段克隆语音,四步,命令都是官方仓库里的原话
- 01
开一台带 CUDA 的实例并装环境
在控制台选 RTX 3090 24GB 或 RTX 4090 24GB,用 2000+ 预置镜像里的 PyTorch 镜像开机,SSH 进去。F5-TTS 要求 Python ≥3.10(官方在 3.11 上测试),pip 包会带上 torch、torchaudio、vocos、x_transformers、torchdiffeq 等依赖。权重首次运行时自动从 HuggingFace 拉取,1.35GB,几十秒的事。
conda create -n f5-tts python=3.11 -y && conda activate f5-tts && pip install f5-tts - 02
用 CLI 做第一次零样本克隆
准备一段 12 秒以内的参考音频,结尾留一小段静音。ref_text 强烈建议手填 —— 留空会调 ASR 自动转写,转写一错音色就跑偏。把 nfe_step 从默认 32 降到 16,按论文 RTF 从 0.31 降到 0.15,WER 只从 2.42% 涨到 2.53%,几乎是白捡的一倍速度。中文注意不要写大写字母,会被逐字母念出来。
f5-tts_infer-cli --model F5TTS_v1_Base --ref_audio ref.wav --ref_text "这是参考音频对应的文字。" --gen_text "要合成的目标文本。" --nfe_step 16 - 03
起 Gradio 或 Docker 做交互调试
f5-tts_infer-gradio 提供多音色、多风格和语音对话(背后接 Qwen2.5-3B-Instruct)。注意 1.1.21 才修掉 finetune Gradio 处理器里的路径穿越漏洞、并把 gradio 底线抬到 ≥6.15.0,所以务必升到最新版,且不要把微调 UI 直接裸奔在公网上 —— 用 SSH 端口转发到本地更稳妥。官方镜像同样可以一行拉起。
docker run --rm -it --gpus=all -p 7860:7860 --mount 'type=volume,source=f5-tts,target=/root/.cache/huggingface/hub/' ghcr.io/swivid/f5-tts:main - 04
微调成自己的音色,或换成 Triton 服务化
微调走 accelerate,batch_size_per_gpu 按显存算:24GB 卡约 9728 帧,48GB 约 22016 帧(德语社区微调实际用的是 8000 帧 + bf16 混合精度,跑了 4.2M 步)。官方特别提醒:早期微调 checkpoint 上 use_ema=True 反而有害,用 finetune gradio 的选项或 load_model(..., use_ema=False) 关掉。要上线就切 Triton + TensorRT-LLM 那套。
accelerate launch src/f5_tts/train/finetune_cli.py --exp_name F5TTS_v1_Base --dataset_name my_voice --batch_size_per_gpu 9728 --batch_size_type frame --learning_rate 1e-5 --finetune
跑 F5-TTS 到底要花多少钱
按论文自报的 NFE 16 步 RTF 0.15 折算:生成 1 分钟成品音频约占 9 秒 GPU 时间。① 批量配音:1000 条 15 秒短句 = 15000 秒 = 4.17 小时音频,4.17 × 0.15 = 0.63 GPU 小时;挂在 RTX 3090 24GB($0.193/卡·时)上是 0.63 × 0.193 = $0.12,换 RTX 4090($0.540/卡·时)也只要 0.63 × 0.540 = $0.34。② 微调一个中文音色:RTX A6000 48GB $0.817/卡·时 连跑 24 小时 = $19.61;期间存 10 份 checkpoint,每份 1.35GB 共 13.5GB,按 $0.414/GB·月 放 3 天 = 13.5 × 0.414 × 0.1 = $0.56;把最终权重 1.35GB 拉回本地,出网 1.35 × $0.0081 = $0.01 —— 整轮不到 $21。③ 一比一复现论文预训练:8 × A100 SXM4 80GB = 8 × $1.088 = $8.704/时,论文说 1.2M 更新跑了一周多,168 × $8.704 = $1,462,这也是绝大多数团队只做微调的原因。计费按秒计量、按小时计价,没有起租门槛、没有开通费、不用申请配额;实例一停算力费就停,存储费则一直计到你销毁它为止。
04 —
