一个 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 和微控制器都有产物,算力看所选解码深度。