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

在技術架構上,Whistle 的前端將 16 kHz 單聲道音訊以 25 毫秒視窗和 10 毫秒步長分幀為 80 個 log-mel 頻段,頻帶限制在 250-3500 Hz 並進行通道正規化。30 秒音訊對應 3,000 幀,經卷積幹(Convolutional stem)處理後降至 375 幀(每 80 毫秒一幀)。編碼器由 8 個 Simple Attention 區塊組成,與 Needle 共用程式碼,採用非因果注意力機制。解碼器同樣由 8 個 Laddered Simple Attention 區塊組成,寬度 512,採用分組查詢注意力(GQA),並在特定層級使用 engram 查找。每個解碼器層通過閘控交叉注意力(gated cross attention)讀取編碼器輸出,K 和 V 投影僅在音訊片段到達時計算一次並保留,使得 5 個波束搜尋(beam search)僅需維護短轉錄快取而非重複處理音訊。解碼過程使用 5 個波束,通過長度正規化的對數機率評分,並支援透過 Aho-Corasick 自動機進行關鍵字偏置。詞彙表包含 8,192 個文本片段及 7 個語言標記,轉錄上限為 320 個標記。引擎在解碼前會測量音訊響度範圍,低於閾值時返回空轉錄且不進入波束搜尋。

基準測試顯示,Whistle 在 LibriSpeech test-clean/test-other、SPGISpeech、Earnings-22 及 FLEURS 平均準確率上領先,但在 TED-LIUM、AMI 及 MLS 平均準確率上落後於 Whisper base(145.3 MB)和 Moonshine tiny v2(41.9 MB)。在 Apple M4 Pro CPU 上,Whistle 的首字元生成時間(TTFT)為 11.1 毫秒(10 秒音訊),解碼速度為 1,319 tokens/s,遠快於 Whisper base(73.2 ms, 266/s)和 Moonshine tiny v2(22.8 ms, 262/s)。Whistle 的 TTFT 隨音訊長度變化,5 秒為 5.9 ms,30 秒為 36.3 ms,而 Whisper 因填充至 30 秒故 TTFT 恆定。Whistle 的錯誤率基於 86,174 個語句測量,並經過驗證確保測試音訊未出現在訓練或驗證數據中。

Whistle 與 Needle 共用載入機制,同一個二進位檔可處理語音、文字或兩者結合。透過 `needle_complete` 函數,引擎可直接從音訊片段進行轉錄並根據工具調用返回包含函數調用、信心分數及語音欄位的 JSON 物件。開發者可透過 `pip install cactus-needle` 安裝 Python 套件,支援單字時間戳、關鍵字偏置及強制語言設定。引擎預編譯支援 17 種目標平台,包括 macOS、Linux、Android、iOS、watchOS、Windows on ARM、RISC-V、MIPS、瀏覽器及 WASI 元件。權重發布於 Hugging Face,引擎與平台資料夾位於 Cactus-Compute/needle3,原始碼位於 GitHub。

事件背景

Whistle 與 Cactus Compute 的 Needle 模型共用底層架構與 C++ 引擎。Whistle 的編碼器區塊與 Needle 完全共用程式碼,解碼器區塊列表也源自 Needle,僅層數不同。這種設計允許單一引擎載入不同類型的模型檔案(.cact),實現語音與文字處理功能的整合。

社群觀察

社群用戶 DarkVoid42 表示,雖然在使用低品質麥克風時偶爾會漏字或出錯,但整體成功率約為 85-90%,沒有重大錯誤,認為這是預期中的表現。用戶 sterby92 分享其在舊款 Pixel 手機上以自製 Android 應用即時運行 Whistle 的經驗,認為對於口述訊息或待辦事項而言品質足夠。用戶 seamonn 提出了關於語音轉文字應用中延遲與品質優先權的討論。用戶 SorosAhaverom 則發表了與技術內容無關的幽默評論。