今天,我们发布 Whistle,这是一款开源语音识别模型,专为移动设备、可穿戴设备、机器人、智能家居设备、汽车系统和微控制器而打造。它是一个 16.9 MB 的单一文件,可在 CPU 上运行,无需任何依赖。它与 Needle 加载到同一个 C++ 引擎中,共享其容器和量化方式,因此单个二进制文件即可将语音片段直接转换为工具调用。
Whistle 完全在设备端完成三项任务。它可以转录最长 30 秒、16 kHz 单声道音频,支持 英语、德语、法语、西班牙语、意大利语、荷兰语和波兰语,除非指定语言,否则会自动检测语言。它还能为每个单词生成起止时间和概率的词级时间戳,这些时间戳由解码器的注意力机制对齐得出。它也可以输出语音嵌入,即每 80 毫秒一帧的一行数据,而无需解码出转录文本。该模型在 11 毫秒内即可输出第一个词元。
该架构分为两个部分。前端将音频转换为 80 个对数梅尔频带,并使用卷积主干将 30 秒的音频压缩为 375 帧。随后,编码器应用八个与 Needle 共享的 Simple Attention 模块,其注意力机制并非因果式,因此 3 秒处的帧可以关注 12 秒处的帧。解码器使用八个宽度为 512 的 Laddered Simple Attention 模块,每一层都包含读取编码器输出的门控交叉注意力。由于这些投影每段音频只需计算一次,五条束搜索路径只需五份较短的转录缓存,而无需对音频进行五次遍历。
解码采用五束搜索,并以长度归一化的对数概率进行评分。关键词偏置功能会在用户提供的短语上运行 Aho-Corasick 自动机,并在搜索推进过程中提高这些短语的概率。词表包含 8,192 个文本片段以及七个语言词元,转录结果最多为 320 个词元。
该模型也提供浏览器演示版本,音频永远不会离开设备。
来源: Hacker News · 由HeadlinesBriefing整理摘要