AI-Video2Text

基于 Whisper 模型。

前言

现在好像没啥时间看网课了……如果把网课转成 Markdown 格式就可以快速领会网课精神,也可方便拿网课文档与 AI 对线!

资源

正文

想法是将网课视频下载到本地,用 Whisper 识别网课中的字幕,再隔一段时间从网课视频中截图,最后将字幕文本与截图合并成 Markdown。

Vibe Coding 一个这样的环境,由于 Whisper 可以本地 GPU 推理,向 AI 强调一下一定要用 GPU;由于 Whisper 可能下载不下来,向 AI 强调一下可以将本地路径作为模型路径。

video2notes
run.py
pyproject.toml
src

环境配置:

shell
uv sync
参数默认值说明
-i, --input-dir输入视频目录,支持 .mp4/.mkv/.avi/.mov;--markdown-only 模式可不填
-o, --output-dir(必填)输出根目录
--modeltinyWhisper 模型名 (tiny/base/small/medium/large) 或 .pt 模型文件路径,如 models/medium.pt
--device自动检测cpucuda
--language自动检测语言代码,如 zh。中文课程自动识别
--interval120截图间隔(秒),可设为任意正整数,如 3060300
--force重新处理所有视频(忽略已存在的输出)
--markdown-only仅从已存在的 SRT + 截图重新生成 Markdown(无需 -i

开跑示例,tiny 模型效果不太行,medium 模型足够用了:

shell
# 自动检测 GPU/CPU,每2分钟截一张图
uv run video2notes -i "D:\Videos\我的课程" -o "D:\Output\我的课程"
 
# 指定模型和 GPU
uv run video2notes -i "D:\Videos\课程" -o "D:\Output\课程" --model medium --device cuda
 
# CPU 模式(适合 8GB 以下显存)
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

一阵计算后,得到相应的字幕、截图和合并后的笔记,有空慢慢看(或是拿去与 AI 对线)吧:

webp

似乎目前的大模型能够识别视频的关键帧并截图,这也许比目前的固定时间截图来说更合理一些,不过看的网课视频的 PPT 是可获取的,截图仅作为文本的协助定位,这个逻辑也说得过去。

還會把台灣老師講的課識別成繁體字,真的很棒棒喔!