ChatTTS 推理速度实测——RTF、token 速率与硬件对比
关键指标:RTF
RTF(Real-Time Factor)= 生成耗时 / 音频时长:
- RTF < 1.0:生成比播放快(实时)
- RTF = 0.3:生成 10 秒音频只需 3 秒(3 倍实时)
- RTF = 2.0:生成 10 秒音频要 20 秒(半实时以下)
官方实测数据
ChatTTS 作者在 GitHub FAQ 中给出:
- 30 秒音频:RTX 4090 可生成约 7 语义 token / 秒
- RTF 约 0.3
这个数据意味着 ChatTTS 远远快于实时——你可以用它批量生产语音内容,完全不用担心速度瓶颈。
社区实测参考
| 硬件 | 单条推理速度 | 批量推理速度 | 备注 |
|---|---|---|---|
| RTX 4090 | 3~5 秒 / 10 秒音频 | ~2 秒 / 10 秒音频(10 条批量) | compile=True |
| RTX 3090 | 4~6 秒 | ~3 秒 | |
| RTX 3060 12GB | 8~12 秒 | ~5 秒 | |
| CPU(i7-13700K) | 30~60 秒 | 不建议 |
以上数据来自社区测试,仅供参考,实际速度因环境、模型版本、输入长度而异。
首次推理慢的原因
第一次调用 chat.infer() 明显比后续调用慢——原因有两个:
- 模型权重首次加载:从磁盘 / 网络把权重搬到 GPU 显存
- torch.compile 首次编译(如果开了 compile=True)
后续推理直接从显存读取权重、复用编译好的计算图,速度会快很多。
影响速度的因素
| 因素 | 影响 |
|---|---|
| GPU 型号 | 硬件级差异,最显著 |
| compile 开关 | 后续推理快 1.3~2 倍 |
| 批量大小 | 批量越大单位耗时越低 |
| 输入文本长度 | 长文本推理自然慢 |
| 模型加载次数 | 每次加载都慢,加载一次复用最快 |
批量推理效率提升示例
假设单条推理平均 5 秒(含一次模型加载):
- 逐条推理 10 条:50 秒
- 批量推理 10 条:约 15~20 秒(加载一次 + 批量推理)
所以如果场景允许,务必批量输入。