Cactus Compute 發布了 Whistle,這是一個專為手機、穿戴裝置、機器人、智慧家居、汽車及微控制器設計的語音辨識模型。該模型僅佔 16.9 MB,可在 CPU 上運行且無外部依賴,並載入與 Needle 模型相同的 C++ 引擎、容器及量化技術。Whistle 提供三種裝置端功能:1. 轉錄:支援 16 kHz 單聲道音訊,單次處理最多 30 秒,涵蓋英語、德語、法語、西班牙語、義大利語、荷蘭語和波蘭語,並自動偵測語言;2. 詞級時間戳:提供每個詞的開始、結束時間及機率;3. 語音嵌入:輸出編碼器結果,每 80 毫秒一幀,無需解碼轉錄文本。

技術架構方面,Whistle 的前端將音訊轉換為 80 個 log-mel 頻段,經卷積幹(Convolutional stem)處理後生成 375 幀。編碼器由 8 個與 Needle 共享的 Simple Attention 區塊組成,包含 4 個 mHC 殘差通道及 Monarch Hadamard MLP。解碼器同樣由 8 個與 Needle 共享的 Laddered Simple Attention 區塊組成,寬度為 512,採用 8 個查詢頭對 2 個 KV 頭的 GQA 架構,並在第 3 和第 7 層使用 engram 查找。每個解碼層透過門控交叉注意力(Gated cross attention)讀取編碼器輸出。解碼過程採用 5 束搜尋(Beam search),並透過 Aho-Corasick 自動機進行關鍵字偏置。詞彙表包含 8,192 個文本片段及 7 個語言標記。模型支援動態深度選擇(--audio-depth),但編碼器始終運行全部 8 個區塊。若音訊音量低於閾值,引擎將返回空轉錄結果。

基準測試顯示,在 Apple M4 Pro CPU 上處理 10 秒音訊時,Whistle 的首字延遲為 11.1 毫秒,解碼速度為每秒 1,319 個 token,遠優於 Whisper base(73.2 ms, 266/s)和 Moonshine tiny v2(22.8 ms, 262/s)。在詞錯誤率(WER)方面,Whistle 在 LibriSpeech test-clean/test-other、SPGISpeech、Earnings-22 及 FLEURS 平均值上領先;而 Whisper base 在 TED-LIUM、AMI 及 MLS 平均值上表現較佳,但其模型大小為 145.3 MB,遠大於 Whistle 的 16.9 MB。Whistle 的 WER 數據基於 86,174 個語句測量,並經過驗證確保測試音訊未出現在訓練或驗證數據中。

部署方面,Whistle 支援 macOS、Linux、Android、iOS、watchOS、Windows on ARM、RISC-V、MIPS、瀏覽器及 WASI 等 17 個目標平台。開發者可透過 pip 安裝 cactus-needle 套件,使用 Python API 進行轉錄、嵌入或關鍵字偏置。引擎亦提供 C API,支援將語音轉錄與工具調用結合,直接返回包含函數調用及語音欄位的 JSON 物件。

事件背景

Whistle 與 Cactus Compute 先前發布的 Needle 模型共享底層架構區塊,包括 Simple Attention 區塊、量化技術及 C++ 推理引擎。這種設計允許同一個二進位檔案載入不同的 .cact 模型檔案,從而同時處理語音和文本任務。

社群觀察

社群對 Whistle 的反應呈現兩極。部分用戶對其極小的佔用空間和高準確率表示讚賞,認為其在處理複雜語句時表現出色,並對未來基於此技術的應用充滿期待。然而,也有用戶指出實際應用中的挑戰,例如一位用戶提到其患有中風的 84 歲父親在使用 Windows 語音轉文字時,雖然能大幅提高輸入速度,但系統會將所有口語聲音都轉錄到頁面上,顯示出對非標準語音或語音障礙處理的不足。此外,有用戶因超過 30 秒的音訊限制而遇到 RuntimeError,並有人開玩笑說誤以為是「口哨轉文字」。