mirror of
https://github.com/JefferyHcool/BiliNote.git
synced 2026-07-02 05:01:22 +08:00
fix(transcriber): 修复 large-v3-turbo 因仓库 404 无法下载
Systran/faster-whisper-large-v3-turbo 已从 HuggingFace 下架(API 返回 401/404,仓库不存在)。用户点击下载后,后台 snapshot_download 立即抛错 被吞掉,_downloading 置为 failed 但状态接口只回传 downloading/downloaded 两个布尔,于是表现为:无进度转圈、状态一直「未下载」、前端无错误提示。 改用社区维护的 CT2 转换版 deepdml/faster-whisper-large-v3-turbo-ct2: HF 直链可达(200,无重定向,保证缓存目录名与存在性检测一致),含 model.bin 等全部所需文件,与 faster-whisper 的 large-v3-turbo 等价。 附回归测试,断言 large-v3-turbo 解析到存活仓库而非已失效的 Systran 仓库。 Closes #402 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,7 +6,8 @@
|
||||
检测三处,用户想用命名不符合该约定的模型(比如社区微调版、或自己下到本地的模型)就接不上。
|
||||
|
||||
本模块把映射**显式化 + 可配置**(对齐 mlx_whisper_transcriber.MLX_MODEL_MAP 的模式):
|
||||
- 内置:size → Systran/faster-whisper-{size}
|
||||
- 内置:size → faster-whisper 兼容的 CT2 repo_id(多数为 Systran/faster-whisper-{size};
|
||||
turbo 用社区维护版,见 BUILTIN_WHISPER_MODELS)
|
||||
- 自定义:用户在 config/whisper_models.json 登记 {名称: "<repo_id 或本地路径>"}
|
||||
(JSON 持久化;Docker 下随 config 卷持久化)
|
||||
|
||||
@@ -22,7 +23,8 @@ from app.utils.logger import get_logger
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
# 内置模型:size → faster-whisper 兼容的 HF repo_id(CTranslate2 转换版,Systran 官方维护)。
|
||||
# 内置模型:size → faster-whisper 兼容的 HF repo_id(CTranslate2 转换版)。
|
||||
# 多数档位用 Systran 官方维护的转换版;turbo 例外见下。
|
||||
BUILTIN_WHISPER_MODELS: Dict[str, str] = {
|
||||
"tiny": "Systran/faster-whisper-tiny",
|
||||
"base": "Systran/faster-whisper-base",
|
||||
@@ -31,7 +33,10 @@ BUILTIN_WHISPER_MODELS: Dict[str, str] = {
|
||||
"large-v1": "Systran/faster-whisper-large-v1",
|
||||
"large-v2": "Systran/faster-whisper-large-v2",
|
||||
"large-v3": "Systran/faster-whisper-large-v3",
|
||||
"large-v3-turbo": "Systran/faster-whisper-large-v3-turbo",
|
||||
# issue #402:Systran 没有 turbo 的 CT2 转换版(Systran/faster-whisper-large-v3-turbo
|
||||
# 在 HF 上 401/404),点下载会静默失败、状态一直「未下载」。改用社区维护的 CT2 转换版
|
||||
# (deepdml,直链可达、含 model.bin,与 faster-whisper 的 large-v3-turbo 等价)。
|
||||
"large-v3-turbo": "deepdml/faster-whisper-large-v3-turbo-ct2",
|
||||
}
|
||||
|
||||
# 前端下拉默认展示的内置档位(保持与历史 WHISPER_MODEL_SIZES 一致,不把 8 个全列出来)
|
||||
|
||||
@@ -50,7 +50,19 @@ class TestResolve(unittest.TestCase):
|
||||
|
||||
def test_builtin_resolves_to_systran(self):
|
||||
self.assertEqual(self.reg.resolve("tiny"), "Systran/faster-whisper-tiny")
|
||||
self.assertEqual(self.reg.resolve("large-v3-turbo"), "Systran/faster-whisper-large-v3-turbo")
|
||||
|
||||
def test_large_v3_turbo_resolves_to_live_repo(self):
|
||||
# 回归 issue #402:Systran 从未发布 turbo 的 CT2 转换版,
|
||||
# 原映射 Systran/faster-whisper-large-v3-turbo 在 HF 上 401/404,
|
||||
# 导致下载静默失败、状态一直「未下载」。改用社区维护的 CT2 转换版。
|
||||
self.assertEqual(
|
||||
self.reg.resolve("large-v3-turbo"),
|
||||
"deepdml/faster-whisper-large-v3-turbo-ct2",
|
||||
)
|
||||
self.assertNotEqual(
|
||||
self.reg.resolve("large-v3-turbo"),
|
||||
"Systran/faster-whisper-large-v3-turbo",
|
||||
)
|
||||
|
||||
def test_passthrough_repo_id(self):
|
||||
# 用户直接把 HF repo_id 当 model_size 传进来(含 "/")
|
||||
|
||||
Reference in New Issue
Block a user