Skip to content

v1.0.0 — 首个正式版(字幕优先 / doctor / 运行溯源)

Choose a tag to compare

@github-actions github-actions released this 01 Sep 11:33
· 193 commits to main since this release

course2md v1.0.0 — 首个正式版

把网课视频变成图文并茂的 Markdown / HTML 笔记。
本版本以「正确性审计 + 架构收敛」为主题:修复全部已知的静默错误结果与数据丢失类缺陷。

✨ 新特性

  • 平台字幕优先 --transcript-source auto|subtitle|asr(默认 auto
    平台人工字幕 > 自动字幕 > 本地 ASR;命中字幕时完全不抽音频、不加载模型。
    本地视频支持同名 .srt/.vtt sidecar 字幕。
    👉 实现 #1 — 感谢 @kernerydel 的建议
  • course2md doctor:环境体检——依赖工具、平台后端(CoreML/NPU)、
    配置文件(含权限告警)、模型缓存状态,一次命令定位大多数环境问题。
  • run.json 运行溯源:每次运行记录版本、转写来源、provider/模型、统计与耗时。
    「这份文稿到底是什么模型跑的」从此可查。
  • structured.json 增加 schema_versiongeneratorSection 增加 end 时间。
  • --resume / --no-resume 互斥参数真正生效。

🐛 修复

  • --no-resume 此前完全无效(声明了但从未被读取)
  • --no-download 不再删除用户已有视频(此前结束时会误删非本次下载的 media.mp4)
  • checkpoint 运行身份:换模型/后端/切分长度后,旧进度自动作废重算,
    不再产出「混用两个模型」的转写文本;空语音 chunk 也计入进度,不再重复识别;
    写盘失败不再标记完成;中间行损坏硬报错而非静默跳过
  • NPU 后端三连修:内嵌 Python worker 语法错误(--provider npu 此前完全无法启动)、
    硬编码 <|zh|> 强制中文(英文课产生中文幻觉转写)、Qwen 失败静默回退 Whisper
  • GGUF 下载尊重 HF_ENDPOINT 镜像(此前硬编码 huggingface.co)
    👉 Fixes #2 — 感谢 @little-q-exist 的详细报告与根因分析
  • 预检校验max_speech=0 panic、--formats 拼错跑到最后才报错、
    provider×模型不兼容被静默忽略、api 缺 key 切完音频才发现——全部提前到毫秒级失败
  • 相似度阈值文案方向修正(实际语义:阈值越高越敏感、截图越多)
  • 配置路径展开 ~;配置未知字段直接报错;~/.config 权限告警

🔧 重构

  • provider / slide_mode / formats 裸字符串 → typed enum(CLI/TOML/运行时同源)
  • ManagedChild 子进程生命周期(kill-on-drop,修复 NPU worker 进程泄漏)
  • 四个 ASR 后端的重复 chunk 循环收敛为统一执行器
  • 跨页文本切点吸附句读,不再词中切断;模型选择器去除不可复现的营销话术

⚠️ 迁移提示

  • 1.0 前的 ASR checkpoint 会在下次运行时自动作废重算(保证转写来源可追溯)
  • --transcript-source auto 成为默认:有平台字幕的视频不再走本地 ASR;
    如需旧行为请传 --transcript-source asr

📦 安装

# macOS (Homebrew)
brew install mizorewww/tap/course2md

# 或直接下载下方对应平台二进制

完整变更见 CHANGELOG.md

🙏 感谢 @kernerydel@little-q-exist —— 本版本的两个用户可见改进均来自你们的 issue。