四十八個德瑞克

Whistle:16.9MB 語音辨識模型,能跟 Needle 塞進同一個引擎

深色背景上發光晶片與聲波紋的扁平插畫

Cactus 發表 Whistle,一個給手機、穿戴裝置、機器人、智慧家庭、車用與微控制器用的語音辨識模型。單一 16.9MB 檔案,在 CPU 上跑、零依賴,載入跟 Needle 共用的同一個 C++ 引擎。原文見官方發表,HN 討論串(item 50008427)有 115 則留言。

重點速覽

模型架構

前端把 16kHz 單聲道音訊切成 80 維 log-mel,30 秒共 3,000 個 frame,卷積 stem 降取樣三次剩 375 個 frame。Encoder 是八個 Simple Attention 區塊(跟 Needle 相同),attention 非因果。Decoder 是八個 Laddered Simple Attention 區塊,寬度 512,每層多一個 gated cross attention 讀 encoder,投影只在音訊送達時跑一次,五條 beam 只需五份短快取。

解碼用五條 beam,以長度正規化 log 機率計分,支援關鍵字加權,逐字稿上限 320 個 token。–audio-depth 可在載入時選 decoder 層數,encoder 永遠跑滿八層。響度低於閾值直接回空逐字稿,不進 beam search。

Benchmark

單詞錯誤率在 LibriSpeech test-clean、test-other、SPGISpeech、Earnings-22 與 FLEURS 平均領先 Whisper base;Whisper base 在 TED-LIUM、AMI 與 MLS 平均領先。官方強調測試音訊經 checksum 與 speaker ID 比對,未出現在訓練與驗證資料中。

上手與部署


pip install cactus-needle

import needle
print(needle.transcribe("clip.wav")["text"])

每次呼叫回傳文字、語言、首 token 毫秒數與解碼速度,另支援 word_timestamps、keywords 關鍵字加權、language 強制語言。引擎預建支援十七個 target,從 macOS、Linux 到 Android、iOS、watchOS、ARM 版 Windows、RISC-V、MIPS、瀏覽器與 WASI。權重在 Hugging Face,原始碼在 GitHub。

HN 網友反應

整體是體積叫好,非英文與串流挨批,詳細視覺整理見文末內嵌頁,這裡先列結論。

叫好的:英文實測普遍說準,有人故意考它也全對;16.9MB 能塞進 CPU 快取、直接出貨在 webapp 裡,是最大賣點;印度口音、技術名詞都有人回報一次就過。

批評的:西班牙文、波蘭文多人回報不穩;不支援的語言會被硬轉成西班牙文;電視雜音下會幻覺出 Thank you;demo 沒有邊講邊出的串流轉寫;30 秒上限超過直接報錯。

競品對照:Parakeet 是會議聽寫主力但準度不如 Whisper Large;開放權重領先的 Qwen STT 是重口音首選;Handy 加 LLM 清稿是日常生產工具流;FUTO 鍵盤被糾正只是 source-available,不是開源。

落地兩條路:一是範本指令,例如 Echo Show 全本地改造加接 Home Assistant 的實例;二是聽寫長文先錄再轉、丟 LLM 清稿。Cactus 的 Roman 也在串裡開口收問題與回饋。

視覺整理頁

手機版若內嵌頁顯示異常,可直接開獨立頁面。

Exit mobile version