@cactuscompute:我们发布 Whistle:一个 16.9MB 文件的语音转文字模型,在与 Needle 相同的引擎中运行于 CPU 上,其准确率大多超过 W…

X AI KOLs Following 模型

摘要

Cactus Compute 发布了 Whistle,这是一个 16.9MB 的语音转文字模型,在与 Needle 相同的引擎中运行于 CPU 上,支持七种语言,声称在文件体积小 9 倍、速度快 6 倍的情况下,准确率大多优于 Whisper base。

我们发布 Whistle:语音转文字,文件仅 16.9MB,在与 Needle 相同的引擎中运行于 CPU 上。它在文件体积小 9 倍、速度快 6 倍的情况下,大部分指标优于 Whisper base。Whistle 支持英语、德语、法语、西班牙语、意大利语、荷兰语和波兰语。 https://t.co/lKCluhDDDm https://t.co/UJWaH6o76w
查看原文
查看缓存全文

缓存时间: 2026/10/03 06:52

我们发布 Whistle:一个 16.9 MB 的语音转文字模型,运行在与 Needle 相同的引擎中,可完全在 CPU 上执行。它在大多数基准上超过了 Whisper base,而文件体积只有其 1/9,速度快 6 倍。Whistle 支持英语、德语、法语、西班牙语、意大利语、荷兰语和波兰语。

https://t.co/lKCluhDDDm https://t.co/UJWaH6o76w


Whistle:16.9 MB 的语音转文字模型

来源:https://cactuscompute.com/blog/whistle 返回博客 (https://cactuscompute/blog)模型研究

一个开源语音识别模型,运行在与 Needle 相同的 CPU 引擎上。它可转录七种语言,11 毫秒内产出首个 token,并且与 Needle 一同加载到同一进程中,一个二进制文件即可将一段音频直接转化为工具调用。

|2026年10月2日|6 分钟阅读

今天我们发布 Whistle——一个面向手机、可穿戴设备、机器人、智能家居、汽车和微控制器的语音识别模型。它是一个 16.9 MB 的单文件,无需任何依赖即可在 CPU 上运行,并加载进与 Needle (https://cactuscompute.com/needle) 相同的 C++ 引擎中,共用同一个容器和同一套量化方案。

Whistle 沙盒

开口说话,Whistle 在你的设备上完成转录

16.9 MB · 可直接在本页运行

语言

关键词

按住麦克风,说点什么。

最多 30 秒,支持英语、德语、法语、西班牙语、意大利语、荷兰语或波兰语。首次按下时会下载 16.9 MB 的模型,音频不会离开你的设备。Whistle 负责三项工作,全部在设备端完成:

  • **转录。**16 kHz 单声道音频,单次处理最多 30 秒,支持英语、德语、法语、西班牙语、意大利语、荷兰语和波兰语。除非你显式指定,否则会自动检测语言。
  • **词级时间戳。**每个词的起始、结束时间和概率,从解码器的注意力中对齐而来。
  • **语音嵌入。**编码器输出,每 80 ms 一帧一行,无需解码转录文本。

编码器波形16 kHz 单声道,最长 30 秒 = 480,000 个采样点Log-Mel80 个频带,25 ms 窗口,10 ms 帧移,250–3500 Hz,逐声道归一化 → 3,000 帧卷积主干128 通道,卷积核 9,三次下采样 → 375 帧,每 80 ms 一帧Simple Attention 块 × 8与 Needle 共享一次性对所有帧做自注意力,4 条 mHC 残差通道,用 Monarch Hadamard MLP 替代前馈网络解码器跨层记忆K 和 V 每段音频只投影一次,375 帧 × 8 层,由所有 beam 共享阶梯式 Simple Attention 块 × 8与 Needle 共享GQA 8q : 2kv,48 维查询和键,64 维值,3 抽头因果卷积,第 3 层和第 7 层的 engram 检索,宽度 512门控交叉注意力每个解码层都读取编码器:x ← x + σ(g) · softmax(q̂ K̂ᵀ/√d) VBeam 搜索 × 5长度归一化的对数概率,由 Aho-Corasick 自动机实现关键词偏置转录文本8,192 个文本片段 + 7 个语言 token,最多 320 个,词级时间戳来自解码器自身的注意力

标记为共享的模块运行的是 Needle 的代码,而非其拷贝。--audio-depth 可选择解码器层数;编码器始终运行全部八层。**前端。**16 kHz 单声道音频按 25 ms 窗口、10 ms 帧移切分为 80 维 Log-Mel 频带,频带限制在 250–3500 Hz,并逐声道归一化。30 秒对应 3,000 帧。一个 128 通道、卷积核为 9 的卷积主干将帧数三次减半,最终得到 375 帧,每帧 80 ms。此后所有阶段都以这个速率运行,embed 会为每一帧返回一行。

**编码器。**八个 Simple Attention (https://cactuscompute.com/blog/simple-attention-networks) 块:四条 mHC 残差通道,用 Monarch Hadamard MLP 替代前馈网络,与 Needle 使用相同的块。注意力不具有因果性——位于 3 秒处的帧可以注意到 12 秒处的帧。

**解码器。**八个阶梯式 Simple Attention 块,宽度 512,8 个查询头对应 2 个 KV 头,查询和键为 48 维,值为 64 维,Q、K、V 上均施加 3 抽头因果卷积,在第 3 层和第 7 层对 18,432 个槽位做 engram 检索。这就是 Needle 的块列表,只是层数不同。

语音专属的部分只是每层多了一次加法。每个解码层通过门控交叉注意力读取编码器,x ← x + σ(g) · softmax(q̂ K̂ᵀ/√d) V,其中门控参数逐层学习,K 和 V 取自当前音频片段。这些投影在片段输入时只运行一次——375 帧、8 层——之后在整段解码过程中保持不变。因此五条 beam 的代价只是五份简短的转录缓存,而不是对音频的五次完整处理。

**解码。**五条 beam,按长度归一化对数概率评分。关键词偏置会在你传入的短语上与 beam 并行地遍历 Aho-Corasick 自动机,随着自动机推进而提升对应的对数概率。转录文本上限为 320 个 token。词表包含 8,192 个文本片段加 7 个语言 token(每种语言一个),因此检测到的语言会作为一个 token 输出,而不是通过带外方式返回。

**阶梯在解码器上。**从 2 层开始的每种深度都被训练成独立的模型,加载时可通过 --audio-depth 选择其中一种。编码器从不被裁剪:无论选择哪个深度,八个块全部运行。

**静音。**引擎会在解码器启动前测量音频片段的响度范围。低于阈值时返回空转录和空语言,且不会进入 beam 搜索。

WhistleWhisper baseMoonshine tiny v2

词错误率,越低越好。缺失的柱状图表示该模型的作者从未公布过这项基准:Moonshine 仅支持英语,而 Whisper 未报告 SPGISpeech、Earnings-22 或清理后的 AMI。Whisper 的 AMI 数据是 AMI-IHM,与其他两个模型报告的 AMI 并非同一子集。Whistle 在 LibriSpeech test-clean 和 test-other、SPGISpeech、Earnings-22 以及 FLEURS 平均值上领先。Whisper base 在 TED-LIUM、AMI 以及 MLS 平均值上领先,尽管体积是 145.3 MB 对 16.9 MB。

体积

MB,越小越好

Whistle16.9 MB

Whisper base145.3 MB

Moonshine tiny v241.9 MB

首 token 时间

毫秒,越小越好

Whistle11.1 ms

Whisper base73.2 ms

Moonshine tiny v222.8 ms

解码速度

tokens/秒,越大越好

Whistle1,319/s

Whisper base266/s

Moonshine tiny v2262/s

Apple M4 Pro CPU 上 10 秒音频的测试结果。柱状图在每个面板内独立缩放。每个模型都在其官方运行时下使用默认配置运行:Whistle 的 C++ 引擎使用 5 条 beam,openai-whisper,moonshine-voice 则以非流式方式处理整段音频。首 token 时间为从音频输入到第一个 token 产出的耗时;解码速度是首 token 之后产出的 token 数除以对应墙钟时间,因此编码器不会被重复计算。Whisper 会把每个输入填充到 30 秒,所以其首 token 时间不随音频长度变化。Whistle 的首 token 时间随片段长度变化:5 秒为 5.9 ms,10 秒为 11.1 ms,30 秒为 36.3 ms。

词错误率使用 Whisper 的文本归一化器评分。Whistle 的结果基于 86,174 条语音测得。Whisper 和 Moonshine 的数字来自其作者的公布结果,使用的是多语种检查点而非纯英语检查点。任何测试音频都不出现在 Whistle 的训练或验证数据中——通过比对每个已报告测试集的音频校验和和说话人 ID 进行了验证。

needle_load 可以读取任意 .cact 文件中存储的模型,因此同一个二进制文件即可处理语音、文本,或两者兼而有之:

needle --model whistle.cact --audio clip.wav

needle --model needle3.cact --tools tools.json --prompt "turn off the kitchen lights"

needle --model needle3.cact --model whistle.cact --tools tools.json --audio clip.wav

在第三行中,needle_complete 直接接收音频片段。引擎会先转录它,再根据转录文本回答你的工具,最后返回一个包含函数调用和语音字段的 JSON 对象,语音字段以 audio_ 为前缀。调用方无需处理任何转录文本。

{"function_calls":[{"name":"set_lights","arguments":{"room":"kitchen","on":false}}],
 "confidence":0.94,
 "audio_text":"turn off the kitchen lights",
 "audio_language":"en"}
pip install cactus-needle
import needle

print(needle.transcribe("clip.wav")["text"])
# turn off the kitchen lights

16 kHz WAV 或原始采样数据只需基础安装即可使用。其他采样率和麦克风采集需要 [mic] 附加包,它会引入 soxr 和 sounddevice。

每次调用都会返回文本、语言、首 token 耗时(毫秒)以及其后解码器的 tokens/秒。word_timestamps=True 会为每个词添加时间戳和概率。keywords=["Siobhan", "Krzysztof"] 会在搜索过程中提升这些短语的对数概率。language="de" 会强制指定语言而不做自动检测。needle.Whistle() 则是同一模型的对象形式,可用于 embed(audio) 或持有某个调校好的 .cact。

needle whistle playground 可在终端中通过麦克风转录,needle whistle compare 可将同一段音频并排送入 Whistle、Whisper 和 Moonshine,并输出各自的耗时。

引擎为 17 个目标平台提供预编译版本,覆盖 macOS、Linux、Android、iOS、watchOS、Windows on ARM、RISC-V、MIPS、浏览器和 WASI 组件。每个目录都包含一个 needle 二进制文件、libneedle.a 和 needle.h,可以加载任意 .cact 文件。

needle download macos-arm64
needle download whistle
./macos-arm64/needle --model whistle.cact --audio clip.wav --audio-word-timestamps

needle_load、needle_transcribe 和 needle_embed 就是全部的语音 C API。引擎不读取任何环境变量。所有行为都由编译期默认值或显式标志决定。

模型权重托管在 Hugging Face (https://huggingface.co/Cactus-Compute/whistle),引擎及其平台目录位于 Cactus-Compute/needle3 (https://huggingface.co/Cactus-Compute/needle3),源代码发布在 GitHub (https://github.com/cactus-compute/needle)。

相似文章

Whistle:16.9 MB 的语音转文字模型(6 分钟阅读)

TLDR AI

Cactus Compute 发布 Whistle,一款 16.9 MB 的开源语音识别模型,可在 CPU 上无依赖运行,覆盖手机、可穿戴设备、机器人、汽车和微控制器等场景。它支持七种语言的转写,提供词级时间戳和语音嵌入,首个 token 生成延迟为 11 毫秒,并与 Needle 共享 C++ 引擎和量化技术。

Cactus-Compute/whistle

Hugging Face Models Trending

Cactus-Compute 发布 Whistle,一个仅 16.9 MB 的端侧语音转文字模型,支持转录、词级时间戳和语音嵌入,可在手机、可穿戴设备、机器人及微控制器上无 GPU 运行,并在多项基准上与 Whisper 和 Moonshine 竞争。

@yibie: https://x.com/yibie/status/2109079699104399623

X AI KOLs Timeline

Cactus Compute 发布 Whistle:一个 16.9 MB、纯 CPU 运行的语音识别模型,支持七种欧洲语言,实测首 token 5-8 毫秒、解码约 1300 token/秒,但对不支持的语言(如中文、日文)不会报错,而是静默输出假词,存在生产环境静默污染风险。

Apple 新 SpeechAnalyzer API 与 Whisper 及前代产品的基准测试对比

Hacker News Top

Apple 的新 SpeechAnalyzer API 在英语设备端转录的准确性和速度上,显著优于其前代 SFSpeechRecognizer 和 OpenAI 的 Whisper 模型,该基准测试在 M2 Pro 机器上进行。新 API 在清晰语音上的词错误率为 2.12%,而 Whisper Small 为 3.74%,且运行速度快三倍。

openai/whisper-large-v3

Hugging Face Models Trending

OpenAI 发布了 Whisper large-v3,这是一个更新后的自动语音识别模型,使用 128 个梅尔频带和一个新的粤语词元,在 500 万小时的数据上训练,错误率较 large-v2 降低 10-20%。