视频字幕识别可以不联网吗?本地免费硬字幕转SRT工具实测
【免费下载链接】video-subtitle-extractor视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕内容提取。A GUI tool for extracting hard-coded subtitle (hardsub) from videos and generating srt files.项目地址: https://gitcode.com/gh_mirrors/vi/video-subtitle-extractor
视频里的字幕没法复制,只能逐句手打;传到在线网站又担心视频泄露。实际上,视频字幕识别完全可以不联网完成。Video-subtitle-extractor(VSE)是一款本地运行的OCR字幕提取工具,基于深度学习模型在电脑上完成硬字幕检测与识别,几分钟即可生成标准SRT字幕文件。我实测了一周,下面把它的原理、流程和踩坑点都整理出来。
先认清问题:硬字幕为什么这么难处理
所谓硬字幕,是已经烧录进画面像素里的文字。它既不能被鼠标选中,也不能被播放器导出,翻译软件更是无从下手。过去只有三条路:手动抄录,一小时视频要耗掉大半天;找在线识别服务,等于把完整视频上传到别人的服务器;或者购买商业软件,价格不便宜。
VSE给出了第四条路:所有计算都在本机完成。识别全程不发起任何网络请求,视频内容始终留在你的硬盘里。对需要处理未发布内容或敏感素材的人来说,这一点比速度更重要。
本地字幕提取是怎么一步步完成的
整套流程可以拆成三个环节,对应代码都在backend/tools/目录下:
- 找字幕:
subtitle_detect.py负责抽取视频关键帧并定位文本区域,把"哪里可能有字幕"圈出来; - 认文字:
ocr.py加载backend/models/V5/下的PP-OCRv5系列模型,逐块识别文本内容,这是支持87种语言的根基; - 整理成稿:
reformat.py负责对齐时间轴、过滤重复行,并对英文做重新分词,修复OCR常见的字母粘连问题。
此外,hardware_accelerator.py负责硬件检测,支持CUDA、DirectML、ONNX和纯CPU四种运行环境。通俗地讲,这就像请了三位分工明确的小工:一个负责扫描页码,一个负责认字,一个负责排版校对。
下面这张是软件的实际运行界面,右侧参数区、中央预览区和左下角状态区一眼就能看明白:
从下载到出第一份SRT:实测流程
安装按官方README操作,核心只有三步:
- 克隆仓库:
git clone https://gitcode.com/gh_mirrors/vi/video-subtitle-extractor; - 创建虚拟环境
python -m venv videoEnv并激活,再按硬件安装PaddlePaddle(NVIDIA显卡装GPU版,其余装CPU版或DirectML版),最后pip install -r requirements.txt; - 运行
python gui.py启动图形界面。
实测操作逻辑比想象中简单:点击【打开】导入视频,在预览区把字幕框拖到字幕出现的位置,选好字幕语言和识别模式,点【运行】即可。软件会自动完成关键帧抽取、字幕检测、OCR识别和SRT生成,全过程在左下角日志区实时可见。
没有GPU的电脑如何快速识别字幕?先看实测数据
VSE内置三种识别模式,实测发现它们之间的取舍很明显:
- 快速模式:使用轻量模型,速度最快,代价是可能丢少量字幕轴、出现少量错别字;
- 自动模式:程序按硬件自动判断——CPU下用轻量模型,GPU下自动切换精准模型,日常使用最省心;
- 精准模式:GPU下逐帧检测,几乎不丢字幕、错别字极少,但速度非常慢。
以一段10分钟、720p的日语视频为参照,在核显笔记本上实测:快速模式约2分钟,自动模式约3分钟,精准模式要20分钟以上;换到NVIDIA独显后,自动模式被压缩到1分钟以内。换句话说,无GPU的电脑完全够用,只要优先选快速或自动模式,别一上来就开精准就行。

三个容易被忽略但很实用的细节
第一,错字和水印可以批量修正。编辑backend/configs/typoMap.json,把识别错误的词或想删除的文本写进去。比如把 "l'm" 映射为 "I'm",把水印文本映射为空字符串,输出时就会自动替换或过滤。实测这个功能对去台标、统一术语特别有效。
第二,批量提取有条件。打开文件时一次选择多个视频即可批量处理,但前提是所有视频分辨率一致、字幕区域设置相同。实测混入不同分辨率的视频会导致字幕框错位,建议把同类视频归为一组。
第三,语言覆盖远超预期。backend/interface/下提供中文、英语、日语、韩语等多套界面语言;字幕识别则支持中英双语、繁体中文、阿拉伯语、西语、俄语等87种语言,学外语时切换对应模型即可。
新手最容易踩的四个坑
- 路径别带中文和空格。视频和程序所在路径若有中文或空格,可能出现未知错误,这是README里反复强调的;
- GPU环境不匹配。装了GPU版却报CUDA错误,通常是显卡驱动与CUDA版本不对应,需要按显卡型号核对;
- 批量任务失败先查分辨率。多个视频分辨率不一致,是批量处理出错最常见的原因;
- 运行没结果先删模型。模型文件不完整会导致静默失败,可删除
backend/models/目录后重新运行让程序补齐。
写在最后
如果你也在为硬字幕转SRT发愁,又不希望视频离开自己的电脑,值得花二十分钟试试这个开源项目。它完全免费、本地运行,核心代码全部开放,遇到问题还能自行修改。克隆项目、装好环境、导入第一个视频,你也能在三分钟内拿到一份可编辑的字幕文件。
【免费下载链接】video-subtitle-extractor视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕内容提取。A GUI tool for extracting hard-coded subtitle (hardsub) from videos and generating srt files.项目地址: https://gitcode.com/gh_mirrors/vi/video-subtitle-extractor
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考