Cactus Compute 推出開源語音辨識模型 Cactus Whistle,檔案體積僅 16.9 MB,專為行動裝置、穿戴設備與微控制器設計。模型支援英、德、法、西、義、荷、波蘭等七種語言轉錄,具備單字時間戳與語音嵌入功能,可於 CPU 環境獨立運作,並與 Needle 引擎整合實現語音直接調用工具。
語音轉文字(STT)技術在邊緣運算與物聯網裝置的落地,長期面臨模型體積過大與運算資源吃緊的限制。多數開源模型往往需要數百 MB 的記憶體空間,或依賴雲端 API 與專用硬體加速。Cactus Compute 團隊於 2026 年 10 月發布的開源語音模型 Cactus Whistle 官方部落格文章 與相關技術架構,嘗試在極小體積與邊緣硬體效能之間取得實用平衡。
該模型採用 Apache 2.0 開源協議,完整權重檔已於 Hugging Face 上的 Cactus-Compute/whistle 儲存庫 開放下載。Whistle 採用單一 16.9 MB 的權重檔案格式,可在無 GPU、無第三方軟體相依套件的純 CPU 環境下完成即時轉錄。
模型核心架構與三項核心功能
Whistle 建立於輕量化特徵提取與解碼架構之上,模型包含前端特徵處理、非因果音訊編碼器以及階梯式解碼器。系統在裝置端主要提供三項處理工作:
- 語音轉錄(Transcription):輸入 16 kHz 單聲道音訊,單次可處理長度達 30 秒的語音片段。模型支援英語、德語、法語、西班牙語、義大利語、荷蘭語與波蘭語,具備自動語言辨識機制,亦可由使用者明確指定語言。在音訊為靜音時,系統會依據響度動態範圍直接回傳空字串,避免產生幻覺文字。
- 單字時間戳(Word Timestamps):解碼過程中直接利用本身的注意力權重對齊音訊,為每個單字輸出起始時間、結束時間與信心機率,方便應用程式進行字幕標註或音訊跳轉定位。
- 語音嵌入(Speech Embedding):直接輸出編碼器運算結果,每 80 毫秒產生一個特徵向量,無需完整解碼文字即可用於語音特徵比對與檢索。
前端處理與編碼器設計
在特徵萃取階段,16 kHz 音訊會經由 25 毫秒視窗與 10 毫秒位移切分,轉換為 80 維度的 Log-mel 頻譜圖,頻率範圍限制在 250 至 3500 Hz,並進行通道標準化。一段 30 秒的音訊共產生 3,000 個音訊訊框。
隨後的卷積主幹(Convolutional stem)包含 128 個通道,卷積核大小為 9,經過三次下採樣後將長度壓縮八倍,剩下 375 個特徵訊框,相當於每 80 毫秒一個訊框。
編碼器由 8 個 Simple Attention 區塊組成,採用 4 條 mHC 殘差通道,並以 Monarch Hadamard MLP 取代傳統的前饋網路(FFN)。編碼器的注意力機制為全域非因果設計,使前段與後段語音特徵能夠互相參考。
解碼器結構與關鍵字偏置機制
解碼器配置 8 個階梯式 Simple Attention 區塊,模型寬度為 512,注意力機制配置為 8 個查詢頭(Query Heads)對應 2 個鍵值頭(KV Heads),鍵值維度分別為 48 與 64,並在查詢、鍵與值上應用 3 抽頭因果卷積。在第 3 層與第 7 層中,解碼器整合了涵蓋 18,432 個位置的 engram 查表機制。
解碼器每一層皆透過門控交叉注意力機制讀取編碼器特徵,門控權重由訓練取得。音訊的鍵與值在音訊輸入時僅計算一次,並由 5 條搜尋分支(Beams)共用快取,降低記憶體重複讀寫開銷。
為了解決專業名詞與人名不易識別的情況,解碼器結合了 Aho-Corasick 自動機進行關鍵字偏置(Keyword Biasing)。系統在 Beam Search 期間會同步搜尋使用者指定的辭彙清單,動態提高匹配辭彙的對數機率。字彙表包含 8,192 個文字標記與 7 個語言標記,單次轉錄上限為 320 個標記。
解碼層數具備彈性調整能力,官方提供從 2 層以上的深度切換選項,使用者可於載入模型時透過參數設定所需的運算層數,而編碼器則固定運行完整的 8 個區塊。
效能測試與基準評測數據
根據官方公開的測試資料,效能測試於 Apple M4 Pro CPU 上進行,以處理 10 秒音訊為基準,比較 Whistle、OpenAI Whisper base 與 Moonshine tiny v2 在各自官方推論引擎預設條件下的表現。
運算速度與模型體積比較
在模型大小方面,採用 2 到 4 bit 量化的 Whistle 檔案為 16.9 MB,Moonshine tiny v2(int8 量化)為 41.9 MB,而 Whisper base(CPU 上以 fp32 運行)為 145.3 MB。
首字標記輸出時間(Time to First Token, TTFT)方面:
- Whistle 依據音訊實際長度動態調整,5 秒音訊耗時 5.9 毫秒,10 秒音訊為 11.1 毫秒,30 秒音訊為 36.3 毫秒。
- Moonshine tiny v2 處理 10 秒音訊的首字延遲為 22.8 毫秒。
- Whisper base 因預設將所有輸入填補至 30 秒,首字輸出時間固定約為 73.2 毫秒。
在解碼吞吐量部分,Whistle 於該硬體環境的純解碼速度達每秒 1,319 個標記,Moonshine tiny v2 為每秒 262 個標記,Whisper base 為每秒 266 個標記。
字詞錯誤率(WER)表現
官方採用 Whisper 正規化標準計算字詞錯誤率(Word Error Rate, WER),Whistle 的評測涵蓋 86,174 條語音樣本,並經音訊雜湊與發話者比對排除重疊資料。
在英語資料集測試中:
- LibriSpeech test-clean:Whistle 為 4.31。
- LibriSpeech test-other:Whistle 為 10.49。
- SPGISpeech:Whistle 為 7.65。
- Earnings-22:Whistle 為 19.01。
- TED-LIUM:Whistle 為 7.61,此項目 Whisper base 表現較佳。
- AMI 資料集:Whistle 為 26.07,AMI cleaned 為 22.87。
在多語言評測方面,FLEURS 資料集七國語言平均 WER 為 21.4,Whistle 表現領先另外兩個對比模型。在 MLS 資料集的六國非英語平均評測中,Whistle WER 為 24.9,Whisper base 則在此項目取得較佳成績。
部署方式與多模態整合應用
Whistle 的推論邏輯與 Cactus 團隊的 Needle 語言模型共用底層 C++ 執行引擎,兩者使用相同的容器格式、量化方式與 SIMD 核心。
這種共用引擎架構允許單一二進位執行檔直接同時載入文字模型與語音模型。當需要處理語音控制情境時,音訊輸入至引擎後,系統可在內部完成轉錄並即時交由語言模型解析,直接輸出對應的工具調用(Tool Calls)JSON 資料,中途無需呼叫端程式額外傳遞文字字串。
安裝與 Python 調用範例
開發者可透過套件管理工具安裝基礎執行環境:
pip install cactus-needle
若需支援麥克風即時收音或 16 kHz 以外的取樣率,可安裝包含音訊處理套件的完整版本。基本 Python 呼叫方式如下:
import needle
result = needle.transcribe("clip.wav")
print(result["text"])
函式輸出包含轉錄文字、語言辨識結果、首標記輸出延遲以及解碼速率。若需啟用時間戳或特定關鍵字增強,可在參數中傳入 word_timestamps=True 與 keywords=["特定名詞"]。
跨平台硬體支援
Cactus 官方為該推論引擎編譯了 17 種硬體平台的預建二進位檔與靜態函式庫(libneedle.a),支援系統涵蓋 macOS、Linux、Android、iOS、watchOS、Windows on ARM、RISC-V、MIPS、WebAssembly 與 WASI 元件。C 語言 API 提供 needle_load、needle_transcribe 與 needle_embed 等介面,引擎執行時不依賴環境變數,所有行為皆由編譯預設或呼叫引數決定。
常見問題
Whistle 是否支援離線環境運行?
Whistle 的推論完全於本機 CPU 執行,不需要網路連線或雲端伺服器支援。模型權重與執行檔在首次下載後即可於封閉環境或離線邊緣設備正常運作。
模型支援哪些音訊格式與長度限制?
模型原生輸入規格為 16 kHz 單聲道音訊,單次處理長度上限為 30 秒。若輸入其他取樣率的音訊,需於前端重取樣為 16 kHz 後再送入模型。
為什麼靜音片段不會產生轉錄文字?
推論引擎在解碼器啟動前會先分析音訊片段的動態響度範圍。若音量低於設定閥值,系統會判定為靜音並直接回傳空字串與空語言代碼,避免進入搜尋迴圈而產生無意義的預測文字。
結語
Cactus Whistle 透過 16.9 MB 的緊湊體積、低延遲首字反應以及純 CPU 跨平台支援,為穿戴裝置、智慧家庭與機器人等邊緣運算設備提供了資源消耗較低的本機語音辨識方案。目前模型權重與推論原始碼均已公開,相關部署參數與評測細節可參考官方釋出的技術文件與專案儲存庫。

