12MB端侧TTS新选择:SteerTTS-edge支持200音色与50种风格

SteerTTS-edge以11.84MB实现端侧TTS,int4量化后保住可懂度与95%控制力。
SteerTTS-edge是一个约12MB的端侧语音合成方案,通过将声学模型(925万参数)和声码器(620万参数)经量化感知训练压缩至int4,并用纯numpy实现文本前端,把模型权重、音色数据、前端和Python运行时全部塞进11.84MB。评测显示WER保持0.96%不变,UTMOS仅降0.1,12项数值控制和50种风格标签在量化后至少保留fp32版本95%的效果。CPU 4线程下RTF为0.053(约19倍实时),首包约120ms,支持句子级流式。其限制明确:仅英语、200音色、不支持克隆与自由文本提示,且int4收益是体积而非速度。作者正征集声码器音质改进与ONNX/移动端/WASM等边缘部署反馈。
端侧语音合成(TTS)长期面临两难:要么模型太大塞不进应用,要么压缩太狠导致音质崩坏。Hugging Face上出现的SteerTTS-edge试图在12MB的体积内保留完整的可控制性,这不是一件容易的事。
体积压缩的三步拆解
SteerTTS-edge的总体积为11.84MB,包含了应用需要随包分发的一切:模型权重、音色数据、文本前端以及Python运行时。作者将压缩拆解为三个环节:
- 声学模型:925万参数的attention + 双向Mamba-3结构,经过量化感知训练(QAT)压缩至int4精度
- 声码器:620万参数的Vocos风格模型,从charactr/vocos-mel-24khz蒸馏而来,同样采用int4 QAT
- 文本前端:纯numpy实现,运行时完全不需要NLTK、g2p_en、torchaudio或num2words
前端的处理方式尤其值得注意。很多TTS方案将大量依赖打包进生产环境,导致最终产物远超模型本身。SteerTTS-edge在文本规范化环节改用numpy,实际上是把「依赖链」当作优化对象,而不是只盯着模型权重。
量化感知训练(QAT, Quantization-Aware Training) 是一种在训练阶段就模拟低精度(如int4)数值误差的技术。与训练后直接截断权重的PTQ(训练后量化)不同,QAT会在前向传播中插入伪量化节点,让模型在训练时“感知”到量化带来的精度损失,并通过反向传播调整权重来补偿。对于TTS这类对波形细节敏感的生成任务,QAT能显著缓解int4带来的音质劣化,这也是SteerTTS-edge敢于在12MB内保留可控性的关键。
双向Mamba-3 中的Mamba属于状态空间模型(SSM)家族,以线性复杂度处理长序列,相比Transformer的注意力机制在长文本建模上更节省内存。双向结构让模型同时利用过去和未来的上下文,适合语音韵律预测这类需要全局视野的任务。
量化后音质与可控性的取舍
作者在Open TTS Leaderboard协议下做了本地评测(非官方提交),数据如下:
| 版本 | Seed-TTS WER / UTMOS | CV3-Eval WER / UTMOS |
|---|---|---|
| v1 fp32(无refiner) | 0.96% / 4.20 | — |
| edge | 0.96% / 4.11 | — |
可懂度几乎无损,WER保持不变。UTMOS下降约0.1,作者承认这部分损失基本来自int4声码器。更关键的是,12项数值控制(语速、响度、音高、音高范围、句尾上扬、停顿、tilt、breathiness等)在量化后至少保留了fp32版本95%的控制效果。这意味着量化不是简单地「扔掉可控性换体积」,而是经过针对性训练来保留控制维度。
风格方面提供了50种标签和行内标记语法,例如:
Well, *that* was fast. [pause 400ms] <slow>Let me think.</slow> <whisper>Don't tell anyone.</whisper>
这种行内标记对开发者比较友好,停顿、语速、耳语等效果可以直接嵌入文本流,不需要额外调用API或调整参数。
UTMOS 是一种基于MOS(平均意见分)预测的客观音质评价指标,通常用神经网络在大量主观打分数据上训练,输出1-5分的自然度估计。它与WER互补:WER衡量“听不听得懂”,UTMOS衡量“像不像真人”。文中0.1的UTMOS下降在主观听感上通常较轻微,但接近端侧模型的敏感边界。
Seed-TTS WER / UTMOS 与 CV3-Eval 是Open TTS Leaderboard中常用的评测集与协议。Seed-TTS侧重零样本语音合成的可懂度与自然度,CV3-Eval则覆盖更多口音和场景。作者本地复现这些协议但非官方提交,因此数据应视为参考基线而非权威排名。
性能与部署形态
在仅有CPU的环境中(2018款Threadripper,且处于负载状态),4线程下RTF为0.053,约19倍实时速度,首包音频约120ms,支持句子级流式输出。安装和调用方式简洁:
pip install .
steertts-edge "Hello there, nice to meet you." -o hello.wav
需要指出一个容易被误解的点:权重在加载时会反量化回fp32,所以这次优化的收益是体积而非推理速度。作者也明确提到了这一点——除非针对边缘设备编写新的内核,否则速度不会因为int4而提升。
RTF(Real-Time Factor) 是语音合成中衡量速度的核心指标,定义为生成音频所需时间与音频时长的比值。RTF小于1表示快于实时,0.053即生成1秒音频仅需约0.053秒,约19倍实时。首包音频延迟 指从输入文本到输出第一段可播放音频的时间,对交互式应用(如语音助手)的体验至关重要。
反量化回fp32 意味着int4权重仅用于存储和传输,推理时仍以fp32计算。这解释了为何体积大幅缩小而速度不变:计算图并未针对int4指令集优化,除非针对特定硬件(如移动端NPU)编写低精度内核,否则推理吞吐不会因量化而提升。
限制与适用场景
SteerTTS-edge的边界相当清晰:仅支持英语,提供200种音色(是完整模型2825种音色的子集),不支持音色克隆、自由文本提示和流式refiner。作者表示这些能力保留在完整模型中。此外,情绪标签大多只是风格切换,fast/anger两类效果偏弱。
从工程角度看,这个取舍是合理的。12MB的体积意味着它可以塞进移动应用、浏览器WASM包或嵌入式设备,而200音色和50风格标签足以覆盖大多数朗读、提示音、无障碍播报等场景。真正需要克隆或细腻情绪表达的应用,本来也不该指望端侧小模型。
值得关注的开放问题
作者主动向社区征集两类反馈:声码器音质差距如何弥补,以及希望优先支持哪些边缘目标(ONNX、移动端、WASM)。声码器的0.1 UTMOS损失看似不大,但在int4条件下进一步提升音质,可能需要蒸馏策略或针对性的感知损失调整,而不是单纯增加参数量。
另一个隐性问题是Python运行时的存在。11.84MB包含了Python runtime,这在移动端或WASM场景下未必是最优形态。如果后续转向ONNX或原生移动端部署,体积和启动延迟还有进一步压缩的空间,但文本前端的numpy实现是否能平滑迁移,目前还是未知数。
对于正在寻找轻量TTS方案的开发者,SteerTTS-edge提供了一个值得实测的基线。它的价值不在于跑分最高,而在于证明了量化感知训练可以在12MB内保住数值控制和风格标签这两类「可玩性」,这在小模型TTS里并不常见。
ONNX(Open Neural Network Exchange)是一种跨框架的模型交换格式,支持将PyTorch等训练的模型导出为与运行时无关的计算图,便于在移动端、浏览器WASM或嵌入式设备上部署。WASM(WebAssembly)则是一种可在浏览器中近原生运行的二进制指令格式,适合将TTS模型直接嵌入网页而无需服务器。Python运行时在WASM中体积和启动开销较大,因此转向ONNX或原生移动端部署是端侧TTS的常见演进路径,但文本前端的numpy依赖能否被替换或重写为纯C/WASM兼容代码,是迁移中的实际难点。
相关推荐

OpenAI与Shield合作:Astra智能体如何革新IT故障修复
OpenAI与Shield合作推出Astra智能体,可自动登录电脑和遗留系统,实时修复IT故障,比传统模型快35%到40%,仅在需要人类判断时引入人工。

iPhone Duo续航实测:一天一充跑不掉,大屏是耗电元凶
iPhone Duo续航实测:重度使用一天需至少充电一次,6.5小时亮屏约剩30%电量。大屏展开频率是耗电关键,MagSafe电池背夹可救场,长期衰减同样值得关注。

Kimi K3.1 Pro开源发布:2.8万亿参数逼近Opus
Moonshot发布开源MoE模型Kimi K3.1 Pro,2.8万亿总参数、1040亿激活参数,Terminal Bench 4.0仅落后Opus 5.5不到1分,单任务成本约三分之一,API价格减半,开源权重11月4日开放。