前言
现在好像没啥时间看网课了……如果把网课转成 Markdown 格式就可以快速领会网课精神,也可方便拿网课文档与 AI 对线!
资源
-
从 B 站下载视频:Releases · iuroc/bilidown
正文
想法是将网课视频下载到本地,用 Whisper 识别网课中的字幕,再从网课视频中截图,将字幕文本与截图合并成 Markdown。
Vibe Coding 一个这样的环境,由于 Whisper 可以本地 GPU 推理,向 AI 强调一下一定要用 GPU;由于 Whisper 可能下载不下来,向 AI 强调一下可以将本地路径作为模型路径。
环境配置:
uv sync| 参数 | 默认值 | 说明 |
|---|---|---|
-i, --input-dir | — | 输入视频目录,支持 .mp4/.mkv/.avi/.mov;--markdown-only 模式可不填 |
-o, --output-dir | (必填) | 输出根目录 |
--model | tiny | Whisper 模型名 (tiny/base/small/medium/large) 或 .pt 模型文件路径,如 models/medium.pt |
--device | 自动检测 | cpu 或 cuda |
--language | 自动检测 | 语言代码,如 zh。中文课程自动识别 |
--interval | 120 | 固定间隔模式的截图间隔(秒),如 30、60、300 |
--scene-detect | 关闭 | 启用场景变化检测关键帧模式(替代固定间隔) |
--scene-threshold | 0.1 | 场景变化灵敏度 (0.0–1.0),越低越敏感、帧越多 |
--format | jpg | 截图/关键帧格式:jpg(体积小)或 png(无损) |
--force | — | 重新处理所有视频(忽略已存在的输出) |
--markdown-only | — | 仅从已存在的 SRT + 截图重新生成 Markdown(无需 -i) |
--transcribe-only | — | 仅运行语音识别,生成 subtitle.srt(不截图、不生成笔记) |
--screenshot-only | — | 仅提取截图/关键帧(跳过语音识别) |
开跑示例,tiny 模型效果不太行,medium 模型足够用了:
# 场景变化检测默认阈值 0.1,适合大多数课程视频(medium 模型 + GPU)
uv run video2notes -i "D:\Videos\我的课程" -o "D:\Output\我的课程" --model medium --scene-detect
# 自行设置场景变化检测阈值
uv run video2notes -i "D:\Videos\课程" -o "D:\Output\课程" --model medium --scene-detect --scene-threshold 0.2
# 使用 PNG 无损格式
uv run video2notes -i "D:\Videos\课程" -o "D:\Output\课程" --scene-detect --format png
# 自动检测 GPU/CPU,每 2 分钟截一张图(默认)
uv run video2notes -i "D:\Videos\我的课程" -o "D:\Output\我的课程" --model medium
# CPU 模式
uv run video2notes -i "D:\Videos\课程" -o "D:\Output\课程" --model tiny --device cpu
# 自定义截图间隔(每 30 秒一张图)
uv run video2notes -i "D:\Videos\课程" -o "D:\Output\课程" --interval 30
# 仅语音识别(只生成 subtitle.srt)
uv run video2notes -i "D:\Videos\课程" -o "D:\Output\课程" --transcribe-only --model medium
# 仅截图(只生成 screenshots/,跳过转录)
uv run video2notes -i "D:\Videos\课程" -o "D:\Output\课程" --screenshot-only --scene-detect
# 仅重新生成 Markdown(从已有的 .srt + 截图生成 notes.md,无需 -i)
uv run video2notes -o "D:\Output\课程" --markdown-only一阵计算后,得到相应的字幕、截图和合并后的笔记,有空慢慢看(或是拿去与 AI 对线)吧:
還會把台灣老師講的課識別成繁體字,真的很棒棒喔!