2026年10月2日,Cactus Compute 正式开源专为手机、可穿戴设备与微控制器设计的端侧语音识别模型 Whistle。该模型文件体积仅有 16.9 MB,无需外挂依赖即可在 CPU 上独立运行,甚至能与该团队的端侧工具调用引擎 Needle 编入同一个 C++ 二进制文件中,直接实现音频输入到工具调用的流水线输出。

官方给出的基准数据显示,Whistle 在 Apple M4 Pro 上处理 10 秒音频的首字延迟低至 11.1 ms,解码吞吐达到 1,319 tokens/s,并在多个公开测试集上击败了体积极其庞大的行业标杆 OpenAI Whisper base。然而,将一个语音识别模型压缩至不到 17 MB 并宣称全方位超越前代,往往意味着在精度、架构兼容性与评估口径上做出了极其激进的取舍。拨开跑分层面的技术包装,Whistle 更像是一个高度定制的工控与短指令中枢,而非真正通用的语音识别替代者。

关键性能与资源开销横向对照 模型体积 (越小越好) 16.9 MB Whisper base 为 145.3 MB 首字延迟 (越短越好) 11.1 ms Whisper base 为 73.2 ms 解码吞吐 (越高越好) 1,319/s Whisper base 为 266/s

算子复用与 17 MB 的压缩账本

Whistle 能塞进只有 16.9 MB 的单一二进制文件,核心并不在于提出了全新的语音感知机理,而在于对既有推理架构的极简剪裁。它全面复用了 Needle 运行时的 Monarch Hadamard MLP 与 Simple Attention 算子,权重采用 2–4 bit 的 Cactus Quants 格式压缩,并以 Apache-2.0 协议分发。

8 层投影缓存与自动机硬锁,用极致工程剪裁换取微型端侧生存空间(示意图)
8 层投影缓存与自动机硬锁,用极致工程剪裁换取微型端侧生存空间(示意图)

在音频处理管线上,16 kHz 的单声道输入经过卷积前端后,被剧烈下采样为每 80 毫秒仅留 1 帧的特征序列。面对一段 30 秒的音频,系统最终只向编码器输入 375 帧数据。解码器端则设计了门控交叉注意力机制,当音频送达时仅对 8 层网络执行一次投影缓存,后续的 5-beam 束搜索直接读取该缓存展开,避免了多轮解码对整段音频特征的重复计算。为了解决小模型在专有名词上容易失准的通病,Whistle 还内置了 Aho-Corasick 自动机,在搜索过程中动态提升预设关键词的对数概率。

轻量化不是凭空创造精度,而是用精细的工程剪裁换取边缘硬件的生存空间。

官方数据表明,配合这套关键词偏置算法,LibriSpeech clean 评测集的词错率可以从 4.73% 压降至 2.93%。这种针对特定短语的定向纠偏,使模型在词表受限的环境下展现出极高的执行效率。

跑分卸妆:不对等基准与复杂场景短板

纸面数据的优异表现往往掩盖了严苛的测试限制。Cactus Compute 宣称 Whistle 在大部分指标上优于体积为其 8.6 倍 的 Whisper base,但两者的横向对比建立在显著的测试异构之上。Whistle 运行在自身深度优化的 C++ 引擎与 2–4 bit 量化权重下,而作为对照组的 Whisper base 采用的是 74M 参数的 FP32 原始浮点版本,对标的 Moonshine tiny v2(34M 参数,WER 为 12.00%)采用的则是 INT8。

轻量化与重型基准失衡,高噪复杂声学场景下轻量模型的稳定性急剧下滑(示意图)
轻量化与重型基准失衡,高噪复杂声学场景下轻量模型的稳定性急剧下滑(示意图)
模型存储体积格式/精度LibriSpeech CleanTED-LIUM (演讲)AMI (会议噪声)
Whistle16.9 MB2–4 bit4.31%7.61%26.07%
Whisper base145.3 MBFP324.5% 左右5.0%21.5%
Moonshine tiny v241.9 MBINT8未公布多语未公布多语未公布多语

当测试脱离相对干净的朗读样本、进入复杂声学环境时,模型抗噪能力的短板便暴露出来。在长演讲场景的 TED-LIUM 测试中,Whistle 词错率为 7.61%,落后于 Whisper base 的 5.0%;在多人重叠谈话与高环境噪声的 AMI 会议集上,Whistle 的词错率升至 26.07%,同样显著弱于 Whisper base 的 21.5%。即便在涵盖 6 种语言的 MLS 多语平均测试中,Whistle 的词错率(24.9%)依然落后于对手(23.2%)。

开源社区在多语言实测中的反馈也出现分化。尽管模型名义上覆盖英、德、法、西、意、荷、波 7 种语言,并在 FLEURS 均分测试拿到 21.4% 的成绩,但开发者在非英语指令(如法语长句)下的真实识别表现极不稳定,缺乏在远场拾音与重口音场景下的泛化韧性。

  • 提醒.纯净测试集的低词错率不能直接等同于抗噪鲁棒性,严苛工业环境下的听写表现仍需独立三方验证。

语音直通指令链与端侧隐蔽代价格

Whistle 真正的产品野心并非做一个通用听写听筒,而是充当端侧设备的控制核心。通过与 Needle 引擎无缝组装,开发者只需一条命令就能让系统吞入原始音频并直接返回解析后的 JSON 函数调用。这种设计省去了传统方案中“音频转文字、文字进程间跨应用序列化、再喂给大模型提取参数”的臃肿链路。

缺乏中间校验的指令直通,端侧语音误读会直接击穿防线引发外设误操作
缺乏中间校验的指令直通,端侧语音误读会直接击穿防线引发外设误操作
单进程直通管线对比传统链路 原始音频输入 16 kHz 单声道采样 Whistle + Needle 共享算子 零 IPC / 门控交叉注意力投影 结构化 JSON 工具调用 硬件动作直接执行闭环

虽然单二进制设计减少了资源开销,但也将整条控制流推向了更高风险的境地。当下游的 Needle 引擎接收转录结果时,其参数解析稳定性依然存疑。在多工具并发的非英语评测中,Needle 多次暴露出参数幻觉与指令漂移缺陷;且在移动设备如 Android Termux 环境下,载入崩溃的社区报告也尚未清零。一旦超轻量语音端在前序识别中遗漏或误读单个动词,由于缺乏中间校验层,这种误差将直接击穿防线,引发物理外设的误操作。

与此同时,对于追求绝对数据主权的嵌入式开发者,其闭源成分与隐私机制也需要审慎评估。该项目的底层 C++ 引擎目前以预编译二进制形式提供,核心训练代码未完全开源;其配套的 Python 开发包在默认状态下会采集带有版本号与匿名 ID 的遥测日志,必须显式配置系统环境变量 NEEDLE_TELEMETRY=0 或 DO_NOT_TRACK=1 才能彻底切断网络回传。

  • 结论.将 Whistle 用作扫地机、智能开关等固定关键词控制,其极小体积能带来显著优势;但在长语音输入与复杂的容错链条下,它仍难撼动成熟工业方案的防线。