Problem
原話(設計質疑的起點) :
「我記得我當初設計不該只有 whisper 阿?」
— Source: 使用者,2026-07-05(實際用 bestasr transcribe 轉一段中文會議、發現預設路由只在 Whisper 家族裡挑時觸發)
原話(澄清方向) :
「不是多個 backend,本來就應該有多個模型,從中選最好的」
原話(澄清 mlx-audio 定位) :
「移除之後 …… 這些模型還是應該支援,mlx-audio 是參考有哪些模型用的」
bestASR 的核心設計是 benchmark-driven router :在多個候選模型 上實測 THIS machine 的表現,再選出最好的。這個「多元模型競擇」是工具的靈魂(bestasr --help 自述:"measures how ASR backends and models actually perform on THIS machine, then recommends and runs the best setup")。
但現狀是候選模型池被鎖死在 Whisper 家族 ——list-backends 只剩 whisperkit 與 whisper.cpp,兩者都只能跑 Whisper 系模型。router 的「選最好」因此退化成「在 Whisper 的大小變體之間選」,而非在跨家族 (Whisper / Qwen3-ASR / Parakeet / Nemotron / Voxtral / Canary …)之間選。
關鍵澄清(使用者第三則原話):mlx-audio 作為 backend 移除本身不是重點 ,它現在的角色是「model catalog reference」(知道世界上有哪些 ASR 模型可用)。真正的缺口是——catalog 裡列的那 15+ 家族模型沒有任何實際可跑的路徑 ,所以它們永遠不會進入 benchmark、永遠不會被 router 選中。設計願景(多家族競擇)與現狀(只有 Whisper 能跑)之間存在落差。
Type
feature(設計願景回歸:恢復「跨家族多模型競擇」的 router 候選池)
Expected
router 的候選模型池應跨家族 ,涵蓋 model catalog(原 mlx-audio grid)裡的非 Whisper 模型;benchmark 能實測它們、recommend / transcribe 能在它們與 Whisper 之間依 measured 表現選最好。使用者不指定時,「最好」是跨家族量測的結果,不是「最好的 Whisper 變體」。
Actual
bestasr list-backends 只有:
whisperkit available
whisper.cpp available
兩者都是 Whisper 家族引擎。model catalog(list-models grid)雖仍列 15+ 家族當 reference,但沒有 backend 能實際執行非 Whisper 模型 → 它們無法被 benchmark、無法被 router 選用。實測佐證:對一段 87 分鐘中文會議跑 bestasr recommend,backend 只給 whisperkit、model 給 tiny(依 Whisper-only 的 benchmark 排序),無任何跨家族選項。
Impact
違背核心設計願景 :benchmark-driven router 的價值在於「多元競擇選最好」;候選池限縮在單一家族,router 的價值大打折扣。
特定語言/場景次優 :Whisper 在中文自然對話、code-switching、專有名詞等場景未必最優,但現在沒有 Qwen3-ASR、Parakeet 等其他家族可供比較/選用。
catalog 名實不符 :list-models 展示 15+ 家族,給使用者「支援多元模型」的印象,實際只有 Whisper 能跑。
History / Context(可追溯佐證)
cbc373d — feat: mlx-audio third backend, 15-family model grid, BCNF benchmark store (評估 mlx-audio(MLX)作為第三 backend — benchmark 其 STT 模型池找出本機最佳 #14 ) (v0.3.0):原始設計確實引入 mlx-audio 作為第三 backend,帶來 15 家族模型 grid(含非 Whisper:Qwen3-ASR、Distil-Whisper、Parakeet、Nemotron、Voxtral、Canary、Moonshine、MMS、Granite Speech、Qwen2-Audio、VibeVoice-ASR、Mega-ASR …)。
c918cad — refactor: remove the mlx-audio backend; keep the model catalog as reference (移除 mlx-audio backend — 模型目錄降級為 reference catalog #20 ) (v0.4.0):移除 mlx-audio backend,保留 model catalog 當 reference (正是使用者說的「mlx-audio 是參考有哪些模型用的」)。
淨結果:catalog 保留了「有哪些模型」的知識,但失去了「實際能跑非 Whisper 模型」的能力。
Open Questions(留給 diagnose)
非 Whisper 模型要靠哪條路徑實際執行?(恢復某種 mlx-audio 執行後端 / 原生整合特定家族 / 其他)—— 使用者已明確「重點是模型可競擇,不糾結是不是叫 mlx-audio 的 backend」。
移除 mlx-audio backend — 模型目錄降級為 reference catalog #20 當初「經評估後移除」的理由是什麼?重新評估時需正面回應那些理由(維護成本、相依、supply-chain pinning 等),避免直接推翻。
候選池要全部 15+ 家族,還是先納入幾個對目標語言(如中文)high-value 的家族?
Current Status
Problem
bestASR 的核心設計是 benchmark-driven router:在多個候選模型上實測 THIS machine 的表現,再選出最好的。這個「多元模型競擇」是工具的靈魂(
bestasr --help自述:"measures how ASR backends and models actually perform on THIS machine, then recommends and runs the best setup")。但現狀是候選模型池被鎖死在 Whisper 家族——
list-backends只剩whisperkit與whisper.cpp,兩者都只能跑 Whisper 系模型。router 的「選最好」因此退化成「在 Whisper 的大小變體之間選」,而非在跨家族(Whisper / Qwen3-ASR / Parakeet / Nemotron / Voxtral / Canary …)之間選。關鍵澄清(使用者第三則原話):mlx-audio 作為 backend 移除本身不是重點,它現在的角色是「model catalog reference」(知道世界上有哪些 ASR 模型可用)。真正的缺口是——catalog 裡列的那 15+ 家族模型沒有任何實際可跑的路徑,所以它們永遠不會進入 benchmark、永遠不會被 router 選中。設計願景(多家族競擇)與現狀(只有 Whisper 能跑)之間存在落差。
Type
feature(設計願景回歸:恢復「跨家族多模型競擇」的 router 候選池)
Expected
router 的候選模型池應跨家族,涵蓋 model catalog(原 mlx-audio grid)裡的非 Whisper 模型;
benchmark能實測它們、recommend/transcribe能在它們與 Whisper 之間依 measured 表現選最好。使用者不指定時,「最好」是跨家族量測的結果,不是「最好的 Whisper 變體」。Actual
bestasr list-backends只有:兩者都是 Whisper 家族引擎。model catalog(
list-modelsgrid)雖仍列 15+ 家族當 reference,但沒有 backend 能實際執行非 Whisper 模型 → 它們無法被 benchmark、無法被 router 選用。實測佐證:對一段 87 分鐘中文會議跑bestasr recommend,backend 只給whisperkit、model 給tiny(依 Whisper-only 的 benchmark 排序),無任何跨家族選項。Impact
list-models展示 15+ 家族,給使用者「支援多元模型」的印象,實際只有 Whisper 能跑。History / Context(可追溯佐證)
cbc373d— feat: mlx-audio third backend, 15-family model grid, BCNF benchmark store (評估 mlx-audio(MLX)作為第三 backend — benchmark 其 STT 模型池找出本機最佳 #14)(v0.3.0):原始設計確實引入 mlx-audio 作為第三 backend,帶來 15 家族模型 grid(含非 Whisper:Qwen3-ASR、Distil-Whisper、Parakeet、Nemotron、Voxtral、Canary、Moonshine、MMS、Granite Speech、Qwen2-Audio、VibeVoice-ASR、Mega-ASR …)。c918cad— refactor: remove the mlx-audio backend; keep the model catalog as reference (移除 mlx-audio backend — 模型目錄降級為 reference catalog #20)(v0.4.0):移除 mlx-audio backend,保留 model catalog 當 reference(正是使用者說的「mlx-audio 是參考有哪些模型用的」)。Open Questions(留給 diagnose)
Current Status