
模型概览:轻量级离线语音识别
今日,面向移动端、可穿戴设备、机器人及微控制器的语音识别模型 Whistle 正式发布。该模型文件大小仅 16.9 MB,无需外部依赖即可在 CPU 上运行,并与 Needle 共享同一 C++ 引擎、容器及量化格式。
Whistle 主要在设备端执行三项核心任务:
- 转录(Transcription):支持 16 kHz 单声道音频,单次处理上限为 30 秒。涵盖英、德、法、西、意、荷、波兰七种语言,支持自动语种检测。
- 词级时间戳(Word timestamps):基于解码器注意力机制对齐,提供每个词的起止时间及概率。
- 语音嵌入(Speech embedding):无需生成文本,直接输出编码器结果,频率为每 80 毫秒一帧。
技术架构与解码策略
前端处理:音频以 25 毫秒窗口、10 毫秒步长分帧,转换为 80 个对数梅尔频谱 bin,频带限制在 250-3500 Hz 并归一化。30 秒音频经卷积茎层处理后,帧数由 3,000 减至 375 帧(即每 80 毫秒一帧),后续阶段均以此速率运行。
编码器与解码器:编码器由八个 Simple Attention 模块组成,采用非因果注意力机制,允许跨时间段关注。解码器包含八层 Laddered Simple Attention 模块,引入门控交叉注意力读取编码器状态。关键优化在于投影仅在音频片段到达时计算一次,波束搜索只需维护简短的转录缓存,大幅降低计算开销。
解码优化:采用长度归一化的对数概率评分,并通过 Aho-Corasick 自动机实现关键词偏置,提升特定短语的识别概率。词汇表包含 8,192 个文本单元及七个语言 token,语种检测结果直接作为 token 输出。
静音处理:引擎在解码前测量音频响度,若低于阈值则直接返回空结果,跳过波束搜索以节省资源。
基准测试表现
在 LibriSpeech test-clean/test-other、SPGISpeech、Earnings-22 及 FLEURS 平均指标上,Whistle 表现领先。而在 TED-LIUM、AMI 和 MLS 平均指标上,体积更大的 Whisper base(145.3 MB)仍占优势。
测试显示,Whistle 的首 token 时间与片段长度相关:5 秒片段耗时 5.9 ms,10 秒为 11.1 ms,30 秒为 36.3 ms。相比之下,Whisper 因强制填充至 30 秒,首 token 时间不随片段长度变化。所有测试均经严格校验,确认无训练数据泄露。
部署与集成
统一引擎架构:通过 needle_load 读取 .cact 文件,同一二进制文件可同时支持语音和文本处理。needle_complete 可直接接收音频并返回包含转录内容和调用记录的 JSON 对象,简化开发流程。
多平台支持:引擎预编译支持 macOS、Linux、Android、iOS、Windows on ARM、RISC-V 等十七种目标平台。每个平台文件夹均包含二进制文件、静态库及头文件,不依赖环境变量,行为由编译默认值或显式标志决定。
快速开始:开发者可通过 GitHub 获取源代码,权重文件托管于 Hugging Face。使用 needle whistle playground 可进行终端麦克风转录测试,或通过 needle whistle compare 对比 Whistle、Whisper 和 Moonshine 的处理耗时。