跳到正文
IFAI

开源项目

16.9 MB 跑语音识别:Cactus 开源端侧模型 Whistle

首次发布 传播指数 48

Cactus Compute 发布端侧语音识别模型 Whistle,单个权重文件仅 16.9 MB。它无需 GPU 和额外依赖即可在 CPU 上运行,支持 7 种语言转录及词级时间戳,在多项基准测试中超越了 145 MB 的 Whisper base。

图:youtube.com

Whistle 是一个只有 16.9 MB 的端侧语音识别模型,能把音频转录、词级时间戳和语音特征提取全塞进一个文件里。

一般跑语音识别哪怕用轻量级模型,体积也动辄几百兆甚至几吉字节,往往还得配上复杂的 Python 环境和 GPU。Cactus Compute 做的 Whistle 则极端得多,纯靠 CPU 运行,零额外依赖,打包成单个 .cact 文件就能直接跑。

它能做什么

Whistle 主要负责三件事,而且全在本地设备上跑完。

第一是转录。它支持英语、德语、法语、西班牙语、意大利语、荷兰语和波兰语共 7 种语言。16 kHz 的单声道音频,单次最长处理 30 秒,超过 30 秒会自动切窗转录。它会自动检测语种,你也可以手动指定语言。

第二是给每个词打时间戳。基于解码器的注意力机制,它能对齐输出每个词的起始时间、结束时间和置信概率。

第三是提取语音特征。它按每 80 毫秒一帧直接输出编码器向量,不需要走完整解码流程。

模型还内置了关键词偏置功能。借助 Aho-Corasick 自动机,只要把你关心的专有名词传进去,解码搜索时就会拉高这些词的出现概率。如果输入的音频低于音量阈值,它会直接判定为静音并返回空文本,根本不会白费力气去跑束搜索。

速度、规格与效果

根据官方测试,在 LibriSpeech、SPGISpeech、Earnings-22 以及 FLEURS 平均分上,Whistle 的字错率甚至低于 145.3 MB 的 Whisper base。评测视频提到,它的解码速度比 Whisper base 快了大约 6 倍。

首字延迟的表现也格外利落。Whisper 会把所有音频强行补齐到 30 秒,首字延迟基本固定;而 Whistle 是按实际音频长度来的。5 秒音频的首字延迟只要 5.9 毫秒,10 秒音频为 11.1 毫秒,30 秒音频也只要 36.3 毫秒。

这一切依靠的是极度精简的架构设计:前端将音频压缩至每 80 毫秒一帧;编码器用 8 个模块堆叠;解码器同样是 8 模块设计,并带有阶梯结构,载入时可以通过参数挑选运行深度。它与 Cactus 的 Needle 共享同一套 C++ 引擎,跨层交叉注意力投影在音频送入时只算一次,5 束搜索只需维护 5 份短缓存,不用对音频重复编码。

怎么跑起来

部署极其简单。C++ 引擎预编译支持了 17 个目标平台,从 macOS、Linux、Windows on ARM,到 iOS、Android、watchOS,再到 RISC-V、MIPS、浏览器和 WASI 全面覆盖。

如果你习惯用 Python,只需要一个简单的 pip 安装。处理基础的 16 kHz WAV 文件无需额外库,若需要录音或重采样,加上 [mic] 依赖即可。终端里运行 needle whistle playground 可以直接对着麦克风测试,needle whistle compare 还能把它和 Whisper、Moonshine 拉出来现场对比。

目前模型权重已经上传到 Hugging Face,C++ 引擎预编译包与源代码都在 GitHub(Cactus-Compute/needle3)。

为什么重要

我们认为 Whistle 最聪明的地方,在于彻底放下了「堆参数」的包袱,把端侧语音转文字打磨成了一个极低门槛的即插即用组件。对穿戴设备、智能家居、车载甚至微控制器开发者来说,16.9 MB 的体积加上纯 CPU 推理,意味着完全不需要为了加个语音识别功能而去外挂昂贵芯片,也不用把音频传回云端。

它的局限同样清晰:目前仅支持 7 种欧洲语言,320 个 token 的单次输出上限也注定它更偏向指令和短对话,而不是几小时的长会议记录。但如果你正在做边缘设备开发或本地工具,想要一个几乎不占资源、能快速识别命令的听觉入口,Whistle 非常值得立刻上手一试。

来源 (2)

  1. [1]
    cactuscompute.com(在新标签页打开)原文cactuscompute.com
  2. [2]
    youtube.com(在新标签页打开)报道youtube.com

每日 AI 内容精选