feat: 优化学习视频转写与字幕清洗

This commit is contained in:
2026-09-11 14:26:02 +08:00
parent a8fe133aa4
commit eba9163246
12 changed files with 552 additions and 28 deletions
+14 -5
View File
@@ -89,13 +89,16 @@ whisper 节点按以下顺序解析模型路径,默认避免从远端下载:
1. 请求参数 `model_path`;裸模型名(不含路径分隔符)会在 `model/<名称>` 下解析。
2. 环境变量 `WHISPER_MODEL_PATH`
3. 本地候选目录(存在且含 `model.bin` 即使用):
- 单体根目录 `model/faster-whisper-large-v3`
- `nodes/model/faster-whisper-large-v3`
4. 兜底:`large-v3`(需要联网从 Hugging Face 下载)。
- 单体根目录 `model/faster-whisper-large-v2`
- `nodes/model/faster-whisper-large-v2`
4. 兜底:`large-v2`(需要联网从 Hugging Face 下载)。
把权重放在 `model/` 目录即可完全离线运行。当前已下载模型:
- `model/faster-whisper-large-v3`:通用转写模型(demo 工作流)。
- `model/faster-whisper-large-v2`:通用转写模型(demo/learn-translate 工作流
2026-09 从 large-v3 切换:savr-1054 全片 A/B 实测无VAD 幻觉长段归零、开头漏句
救回,VAD 链路条数与覆盖小幅领先,见 `data/experiments/whisper_v2_vs_v3/`)。
- `model/faster-whisper-large-v3`:旧通用转写模型,已无工作流引用,保留在盘上。
- `model/whisper-large-v2-translate-zh-v0.2-st-ct2`:中文直出模型
`chickenrice0721/whisper-large-v2-translate-zh-v0.2-st-ct2`),配合
`task=translate` 直接生成中文,无需 LLM 翻译(zh-direct 工作流)。
@@ -125,6 +128,12 @@ whisper 节点按以下顺序解析模型路径,默认避免从远端下载:
`nodes/subtitle_cleanup.py``clean_japanese_hallucinations`),不留下 `-` 占位污染
下游(占位会渲染进 ASS 成可见减号);llm-translate 翻译后同样整条删除中文长时寒暄
幻觉(`clean_srt_text`)。短时(≤15s)相同词可能是剧情真实道晚安,保留。
**短呻吟过滤**2026-09):decode_full 救回的弱语音中混有大量**纯语气词碎片**
(あ…/ん?/はぁ…/あ!あ!/んふふ 等 ≤3 假名),影响字幕观感;whisper 转录后按
'全部字符 ∈ 纯呻吟字符集合(`MOAN_CHARS`)且有效假名数 ≤ `short_moan_max_chars`(默认 3,设 0 关闭)'
判据**整条删除**`remove_short_moan_entries`)。集合刻意排除 そ/こ/ね/や/ば/だ
等假名,真实短对话(そこ/やばい/ねえ/やだ/えへへ)天然不命中。仅 decode_full
生效,demo 等 VAD 链路不受影响。
最终产物按 `上传文件名.标识.时间戳` 重命名(如 `test01.zh-CN.20260815123000.srt`),
标识优先取节点的 `target_language` 参数,否则用产物别名。
@@ -138,7 +147,7 @@ whisper 节点按以下顺序解析模型路径,默认避免从远端下载:
### 切换模型不改代码
- 模型是工作流 DAG 中 asr 节点的 `model_path` 参数(**数据**),内置工作流
均已显式声明:demo/learn-translate 用 `faster-whisper-large-v3`zh-direct 用中文直出模型。
均已显式声明:demo/learn-translate 用 `faster-whisper-large-v2`zh-direct 用中文直出模型。
- 切换模型 = 改 `workflows/*.json` 或管理页面 DAG JSON → 保存新版本 → 发布,
全程不涉及代码;新库启动时从 JSON 重新 seed。
- 默认工作流定义存放在 `workflows/*.json`(数据文件),代码只负责加载。