16.9MB 的语音识别模型跑在 CPU 上,端侧识别现在能做什么

一个 16.9MB 的语音识别模型能在 CPU 上无依赖运行,支持英语、德语、法语、西班牙语、意大利语、荷兰语和波兰语七种语言,十秒音频的首个 token 只要 11.1 毫秒。它和同系列的小语言模型共用同一个 C++ 推理引擎、同一个容器和同一套量化方式。这篇写给正在选端侧识别方案的嵌入式团队。

十几兆的体积是怎么压出来的

前端把 16kHz 单声道音频切成 25 毫秒窗口、10 毫秒步长,做成 80 维对数梅尔特征,带宽限在 250 到 3500 Hz。三十秒音频 3000 帧。卷积主干 128 通道、卷积核 9,帧数减半三次后剩 375 帧。

编码器是八个注意力块,用四条残差通道和 Monarch Hadamard MLP 替代前馈网络,注意力与因果无关,第 3 秒的帧能看到第 12 秒的帧。解码器是八个宽度 512 的注意力块,8 个查询头对 2 个 KV 头,第 3 层和第 7 层做 18432 个槽位的查表。语音特有的部分只有每层一次门控交叉注意力。

11 毫秒的首 token 意味着什么交互

十秒音频在 Apple M4 Pro 的 CPU 上,首 token 是 11.1 毫秒,解码每秒 1319 个 token。同一份测试里,一个 145.3MB 的对照模型首 token 是 73.2 毫秒,每秒 266 个 token,另一个 41.9MB 的模型是 22.8 毫秒和每秒 262 个。对照模型把输入补齐到 30 秒,首 token 不随音频长短变。这个模型跟着音频走,5 秒 5.9 毫秒,30 秒 36.3 毫秒。

按下麦克风就能看到文字往外走,不用等整段音频传完。实时字幕、语音指令和边说边改的输入法在这个延迟下都可行。

端侧识别和云端各让出什么

音频不出设备是端侧最实在的一条。麦克风采集的原始波形留在本地内存,没有网络请求,也没有服务端的留存策略要读。飞机上、电梯里、工厂车间这些没有稳定网络的地方,识别照样能用。代价是模型容量,七种语言覆盖欧洲主要语种,中文、日语、韩语不在列表里。对比数据里,这个模型在 LibriSpeech、SPGISpeech、Earnings-22 和 FLEURS 平均上领先,对照模型在 TED-LIUM 和 MLS 上更好。

三类功能与部署目标

这个模型做三件事,都在设备上完成。转写按 16kHz 单声道、单次最长 30 秒处理,不指定语言时自动检测,结果作为 token 输出。词级时间戳给出每个词的起点、终点和概率。语音嵌入返回编码器输出,每 80 毫秒一行。

引擎预编译了十七个目标,覆盖 macOS、Linux、Android、iOS、watchOS、Windows on ARM、RISC-V、MIPS 和 WASI。手机、手表、机器人、智能家居、车机和微控制器都在列。

接入时的现实限制

30 秒上限是单次调用的边界,长音频要自己切段,切点位置影响识别质量。音频必须是 16kHz,其他采样率需要重采样。语言检测在短音频或混合语种上给出什么结果,目前没有公开数据。转录上限 320 个 token。

静音处理值得单独说。引擎在解码前先量整段音频的响度范围,低于阈值就返回空文本和空语言,不进束搜索。极轻的说话声可能被判成静音。

什么团队该试,什么团队先别动

值得试的是这几类。做可穿戴或车载语音入口的团队,算力和网络都不宽裕。对隐私敏感的场景,音频不能出设备。需要低延迟交互的产品,11 毫秒的首 token 决定体验上限。

先别动的情况也清楚。目标语言不在七种之内的项目要谨慎,中文用户占比高的产品尤其如此。需要长音频连续转写的场景,30 秒切段会带来额外工程。依赖云端大模型做语义理解的系统,端侧只管转写。

常见问题

这个模型能离线用吗

能。模型是一个 16.9MB 的文件,跑在 CPU 上,音频不离开设备。

识别准确率比云端差多少

词错误率只覆盖部分测试集,都是英文或多语种的公开基准,中文没有数据。

需要什么硬件

引擎预编译了十七个目标,从手机、手表到 RISC-V 和微控制器都有产物,算力看所选解码深度。