Skip to content

ASR router 候選模型池不應只剩 Whisper 家族 — 恢復跨家族多模型競擇(設計願景回歸) #35

Description

@kiki830621

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 只剩 whisperkitwhisper.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(可追溯佐證)

  • cbc373dfeat: 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 …)。
  • c918cadrefactor: 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions