Inflect v2:3.96M 和 9.36M 参数的本地文本到波形 TTS
Inflect v2 以两个紧凑模型(3.96M 和 9.36M 参数)提供完整的 24 kHz 英语 TTS,无需外部声码器。探索架构、评估和 CPU 部署。
Inflect v2:3.96M 和 9.36M 参数的本地文本到波形 TTS
文本转语音长期以来一直被云 API 和需要 GPU 集群的重型模型所主导。但如果你能在 CPU 上运行一个完整、自然流畅的 TTS 系统,并且其体积小到可以嵌入任何应用程序,那会怎样?这正是 Inflect v2 所实现的。
Inflect v2 是一个开放权重、端到端的文本到波形模型,可从原始文本合成 24 kHz 单声道英语语音。它有两个变体:Inflect-Micro-v2(9,356,513 个参数,37.53 MB FP32)和 Inflect-Nano-v2(3,966,721 个参数,15.97 MB FP32)。两者共享相同的 Python API 和 CLI,因此你可以在不更改代码的情况下切换它们。
为什么 Inflect v2 很重要
大多数现代 TTS 系统依赖单独的声码器(如 HiFi-GAN)将梅尔频谱图转换为波形。Inflect v2 将波形解码器直接集成到模型中,无需外部声码器或任何托管推理组件。这意味着:
- 真正的本地推理 — 无云调用、无延迟、无隐私问题。
- 最小依赖 — 仅需 PyTorch(或 ONNX Runtime)和几个标准库。
- 确定性输出 — 种子控制生成,使其可重现,便于测试和评估。
对于构建语音助手、无障碍工具或边缘应用的开发者来说,这是一个改变游戏规则的功能。你可以在不到 40 MB 的权重中打包一个完整的 TTS 流水线。
架构:紧凑的 VITS 系列生成器
Inflect v2 遵循 VITS(端到端文本到语音的对抗训练变分推理)系列架构,但注重效率。合成路径包括:
- 英语归一化和音素前端 — 将原始文本转换为音素。
- Transformer 文本编码器 — 对音素序列进行编码。
- 随机时长预测器 — 预测音素时长并控制变化。
- 单调对齐 — 将文本与潜在语音表示对齐。
- 潜在变量语音生成 — 生成潜在语音序列。
- 残差耦合流 — 细化潜在表示。
- 抗混叠 24 kHz 解码器 — 直接生成最终波形。
Micro 为隐藏层和解码器宽度分配了更多容量,而 Nano 以更窄的网络保持相同的部署契约。两个模型都输出固定的英语男声,具有确定性种子、语速和表达变化控制。
评估:质量和占用空间,分别测量
Inflect v2 报告了回答不同问题的指标,而不是将它们合并为一个分数。以下是主要数据:
| 模型 | 社区偏好 ↑ | UTMOS22 ↑ | 双 ASR 语义 WER ↓ | FP32 权重 ↓ |
|---|---|---|---|---|
| Inflect-Micro-v2 | 66.2% | 4.395 | 3.99% | 37.53 MB |
| Inflect-Nano-v2 | 63.9% | 4.386 | 4.21% | 15.97 MB |
- 社区偏好 来自匿名随机成对聆听,按模型出现次数归一化,平局计为半胜。这是描述性证据,而非正式的 MOS。
- UTMOS22 是一个学习质量预测器,在每种声音的 500 个匹配的未见提示上评估。
- 语义 WER 是 Qwen3-ASR 和 Nemotron 3.5 在 400 个匹配的未见提示上的等权语料库级平均值。Whisper large-v3 因在部分比较集上出现插入性失败而被排除在主要指标之外。
CPU 部署概况
在托管 Hugging Face CPU Upgrade 参考环境(8 vCPU,32 GB RAM)上,使用四个框架线程、100 个固定的 Modern400 提示和三次传递(不包括首次缓存构建传递),Inflect 测得:
- Micro:RTF 0.1593(6.28 倍实时)
- Nano:RTF 0.0933(10.72 倍实时)
这意味着 Nano 可以在典型 CPU 上不到一秒内合成一个 10 秒的句子——对于完全本地模型来说令人印象深刻。
入门:本地运行
克隆仓库并运行你的第一次合成很简单:
git clone https://github.com/owenawsong/Inflect.git
cd Inflect
python -m pip install -r requirements.txt
python examples/download_and_speak.py \
--model micro \
--text "一个完整的本地语音几乎可以嵌入任何地方。" \
--output inflect.wav
首次运行会从 Hugging Face 下载并缓存所选模型。将 --model micro 切换为 --model nano 无需更改接口。
你也可以使用相同的提示和种子渲染两个模型以进行比较:
python examples/compare_models.py \
--text "同一个句子,由两个 Inflect 模型渲染。" \
--output-dir comparison
使用 Python API
从模型仓库中,你可以直接使用 InflectTTS 类:
from inference import InflectTTS
tts = InflectTTS(".", device="cpu")
sample_rate, waveform = tts.synthesize(
"模型返回完整的波形。",
speed=1.0,
variation=0.667,
seed=7,
)
tts.save("同一个运行时可以直接写入 WAV。", "sample.wav", seed=7)
长输入在标点感知边界处分割,逐块合成,并以受控停顿连接。这限制了内存使用;它不是全局规划的传递或声学流式传输。
范围和限制
Inflect v2 是一个开放权重发布,但了解它能做什么和不能做什么很重要。
支持:
- 在 CPU 和 CUDA 上进行本地 PyTorch FP32 推理
- 对已发布的 ONNX 包进行 ONNX Runtime 推理
- 每个模型一个固定的英语男声
- 确定性种子、语速和表达变化
- 标点感知的长文本分块
- 通过 Python API 和 CLI 生成完整波形
不声称:
- 语音克隆、可选择的说话人、女声或多语言语音
- 声学流式传输或测量的首次音频时间
- GGUF、Core ML、TFLite、FP16 或整数量化导出
- 用于医疗、法律、紧急或无障碍关键通信
文档和社区
仓库包含全面的文档:部署指南、评估方法、架构细节、技术报告,以及语言和固定语音适应指南(包括数据准备、训练和导出)。
Inflect v2 采用 Apache-2.0 许可证,捆绑的第三方组件保留其各自的声明。它由 Owen Song 独立设计和开发,社区可以通过 Inflect Discord 加入。
最后想法
Inflect v2 证明了高质量 TTS 不需要大规模模型或云基础设施。凭借 3.96M 参数和 10.72 倍实时 CPU 吞吐量,它是希望在不牺牲性能或隐私的情况下将自然语音嵌入应用程序的开发者的绝佳选择。
无论你是在构建语音助手、无障碍工具,还是只是尝试现代 TTS,Inflect v2 都值得一试。克隆仓库,运行示例,亲自听听紧凑模型能做到什么。