Commit Graph

2 Commits

Author SHA1 Message Date
huangjianwu
3841719d5a 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>
2026-06-23 10:50:55 +08:00
huangjianwu
58d992f28f feat(transcriber): 可配置 whisper 模型 + 名称映射(自定义 HF repo / 本地路径)
此前 fast-whisper 把「size → Systran/faster-whisper-{size}」的约定隐式散落在
加载/下载/检测三处,用户想用命名不符该约定的模型(社区微调版、或自己下到本地
的模型)接不上。本功能把映射显式化 + 可配置(对齐已有的 MLX_MODEL_MAP 模式)。

后端:
- 新增 app/transcriber/whisper_models.py 注册表:内置映射 + 用户自定义
  (config/whisper_models.json 持久化,Docker 下随 config 卷保留);resolve
  优先级 自定义 > 内置 > 直通(含 / 的 repo_id / 已存在本地目录)。
- whisper.py / config.py 的加载、下载、完整性检测统一走 resolve;HF cache 目录从
  任意 repo_id 推导(models--{org}--{name})不再写死 Systran;本地路径跳过下载,
  _purge_cache 绝不删用户本地模型。
- 新增 /whisper_models 增删查 API;/transcriber_config 返回内置+自定义列表;
  下载校验放开到「已登记/可解析」的模型。

前端:transcriber.tsx 新增「自定义模型」卡片(增删 + 下载状态),模型下拉自动含自定义。

Docker:自定义 HF 模型下到 /app/backend/models(v2.3.3 models 卷已持久化);本地模型
走挂载目录 + 配置路径,UI 已提示挂载。

测试:tests/test_whisper_models.py 13 个单测全过;并在 v2.3.3 镜像真实后端环境做了
import 链 + resolve + 真实模型检测的集成冒烟,均通过。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 15:09:06 +08:00