Problem
來源(使用者觀察,2026-07-18):
「推薦引擎選了 fluid-parakeet——但這是陷阱。Parakeet 本質是歐語系/英文模型,不支援中文。……需要考量語言。」
recommend(以及共用同一套 backend selection 的 transcribe --backend auto)在 --language auto 下,不會先偵測音訊的實際語言就排序 backend。對一段中文(或任何非英文)內容,auto 直接推薦了 English-only 的 fluid-parakeet(NVIDIA parakeet-tdt-0.6b-v3,只支援英文/歐語系、不支援中文)。若照這個推薦轉錄,會產出羅馬拼音或亂碼、無法使用。
明確傳 --language zh 時,recommend 正確避開 parakeet、改推 whisperkit / large-v3-turbo — 代表 backend-selection 邏輯本身有語言感知能力,缺的是 auto 沒有把「偵測到的內容語言」餵進排序,而是退回英文偏置的排序。
Type
bug
Expected
--language auto 應該先對音訊做語言偵測(例如抽前 ~30 秒判語言,如 Whisper 的做法),再用偵測到的語言去挑 backend;或至少在無法偵測時明確警告 auto 退回了語言無關(English-biased)的排序、可能推薦語言不相容的後端。
Actual
--language auto 略過語言偵測,等同把音訊當英文排序,對非英文內容推薦 English-only 後端(parakeet),且無任何警告。
Evidence
同一段非英文(華語為主、夾英文術語)音訊,bestasr recommend 在不同 --language 下的推薦:
--language |
推薦 backend |
是否適合中文 |
auto |
fluid-parakeet (0.6b-v3) |
❌ 英文專用,中文會崩 |
zh |
whisperkit (large-v3-turbo, CER 12.9%) |
✅ 正確 |
en |
fluid-parakeet |
✅(英文對照組) |
auto 與 en 給出相同結果,佐證 auto 實際上是 English-biased、沒做語言偵測。
Impact
auto 是使用者最可能採用的預設路徑(transcribe 不指定 --backend/--language 時即走此路)。非英文使用者若信任推薦,會拿到語言不相容的後端 → 產出無法使用的逐字稿,且沒有任何提示指出哪裡錯了。Workaround 是永遠明確指定 --language <code>,但這違背 auto 的用意。
觀察環境
bestasr CLI 0.12.0(.build/release);MCP wrapper 為 0.14.0 — 建議對最新 build 覆驗 auto 的偵測路徑。
- 重現:任一非英文(如華語)音訊,比較
bestasr recommend --language auto <audio> 與 --language zh <audio> 輸出 JSON 的 backend 欄。
相關(另立追蹤,非本 issue 範圍)
實測同一段 ~62 分鐘長檔,transcribe --backend fluid-sensevoice 以下列訊息硬失敗:
error: fluid-sensevoice failed to transcribe: <normalized>.wav: Size (59557867) of dimension (1) is not in allowed range (3200..480000)
SenseVoice 的 30 秒固定窗(480000 samples @ 16kHz)未被切段處理。這是 transcribe 長音訊處理的另一個獨立問題(不同 code path),若需要可另開 issue 追蹤。
Problem
recommend(以及共用同一套 backend selection 的transcribe --backend auto)在--language auto下,不會先偵測音訊的實際語言就排序 backend。對一段中文(或任何非英文)內容,auto直接推薦了 English-only 的fluid-parakeet(NVIDIA parakeet-tdt-0.6b-v3,只支援英文/歐語系、不支援中文)。若照這個推薦轉錄,會產出羅馬拼音或亂碼、無法使用。明確傳
--language zh時,recommend 正確避開 parakeet、改推whisperkit / large-v3-turbo— 代表 backend-selection 邏輯本身有語言感知能力,缺的是auto沒有把「偵測到的內容語言」餵進排序,而是退回英文偏置的排序。Type
bug
Expected
--language auto應該先對音訊做語言偵測(例如抽前 ~30 秒判語言,如 Whisper 的做法),再用偵測到的語言去挑 backend;或至少在無法偵測時明確警告 auto 退回了語言無關(English-biased)的排序、可能推薦語言不相容的後端。Actual
--language auto略過語言偵測,等同把音訊當英文排序,對非英文內容推薦 English-only 後端(parakeet),且無任何警告。Evidence
同一段非英文(華語為主、夾英文術語)音訊,
bestasr recommend在不同--language下的推薦:--languageautofluid-parakeet(0.6b-v3)zhwhisperkit(large-v3-turbo, CER 12.9%)enfluid-parakeetauto與en給出相同結果,佐證auto實際上是 English-biased、沒做語言偵測。Impact
auto是使用者最可能採用的預設路徑(transcribe不指定--backend/--language時即走此路)。非英文使用者若信任推薦,會拿到語言不相容的後端 → 產出無法使用的逐字稿,且沒有任何提示指出哪裡錯了。Workaround 是永遠明確指定--language <code>,但這違背auto的用意。觀察環境
bestasrCLI0.12.0(.build/release);MCP wrapper 為0.14.0— 建議對最新 build 覆驗auto的偵測路徑。bestasr recommend --language auto <audio>與--language zh <audio>輸出 JSON 的backend欄。相關(另立追蹤,非本 issue 範圍)
實測同一段 ~62 分鐘長檔,
transcribe --backend fluid-sensevoice以下列訊息硬失敗:SenseVoice 的 30 秒固定窗(480000 samples @ 16kHz)未被切段處理。這是
transcribe長音訊處理的另一個獨立問題(不同 code path),若需要可另開 issue 追蹤。