16.9 MB 跑語音識別:Cactus 開源端側模型 Whistle
Cactus Compute 釋出端側語音識別模型 Whistle,單個權重檔案僅 16.9 MB。它無需 GPU 和額外依賴即可在 CPU 上執行,支援 7 種語言轉錄及詞級時間戳,在多項基準測試中超越了 145 MB 的 Whisper base。
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)
- cactuscompute.com(在新分頁開啟)原文cactuscompute.com
- youtube.com(在新分頁開啟)報導youtube.com