字幕提取工具完整上手指南:把视频里的硬字幕一键变成可编辑的srt文件
2026/8/14 9:13:43 网站建设 项目流程

字幕提取工具完整上手指南:把视频里的硬字幕一键变成可编辑的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)就是为解决这个痛点而生的:它是一款完全本地运行的字幕提取工具,无需申请任何第三方 API,就能把视频中的硬字幕识别出来并生成 srt 字幕文件。

先跑起来:三分钟跑通第一个字幕文件

在深入理解原理之前,先让工具在你电脑上转起来。下面是最小可用的安装流程,全程不需要写一行业务代码。

第一步:准备 Python 3.12+ 环境

Windows 用户直接去官网下载 Python 3.12 安装包;macOS 用户可以用brew install python@3.12;Ubuntu/Debian 用户执行sudo apt update && sudo apt install python3.12 python3.12-venv

第二步:克隆代码并创建虚拟环境

git clone https://gitcode.com/gh_mirrors/vi/video-subtitle-extractor cd video-subtitle-extractor python -m venv videoEnv source videoEnv/bin/activate # Windows 用 videoEnv\Scripts\activate

第三步:按你的硬件装依赖

没有独显的电脑直接装 CPU 版即可:

pip install paddlepaddle==3.3.1 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/ pip install -r requirements.txt

NVIDIA 显卡用户改成装 GPU 版(CUDA 11.8):pip install paddlepaddle-gpu==3.3.1 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/;AMD/Intel 显卡走 DirectML,追加执行pip install -r requirements_directml.txt

第四步:运行

python gui.py # 图形界面版 # 或 python ./backend/main.py # 命令行版

打开 GUI 后,点击【打开】选择一个视频,用鼠标框出字幕出现的区域,点【运行】。视频不长的话,一两分钟内就能在输出目录里拿到xxx.srt文件。先把流程跑通,具体原理我们往下看。

能力全景图:这个工具到底能做什么

VSE 不是只能"识别字幕"这么简单,它把整个链路都做成了开箱可用的功能,先看一张全景表快速判断它适不适合你:

能力具体表现适合谁
本地 OCR 识别全程不联网、不调 API,隐私安全介意素材泄露的创作者、研究者
多语言支持覆盖中英日韩、阿拉伯语、西里尔等 87 种语言外语学习者、多语言内容团队
批量提取一次选中多个视频,统一处理需要批量转字幕的影视搬运、课程录制
去重与去水印自动去除重复字幕行;配合 typoMap.json 删除台标/水印文本做二创剪辑、压制前处理
多硬件加速CUDA / DirectML / ONNX / CPU 四套后端从核显笔记本到游戏显卡都覆盖

最打动我的一点是它的"识别模式"设计,三种模式对应三种不同需求:快速模式用轻量模型跳帧采样,速度快但可能丢少量字幕;自动模式让程序根据 CPU/GPU 自动选模型,是官方推荐的开箱选择;精准模式逐帧检测,几乎不丢字幕,但速度非常慢,只在字幕轴缺失严重时才建议启用。

原理大白话:给画面里的文字"拍照、定位、念出来"

你不需要懂深度学习也能理解 VSE 的工作方式,它本质上是一套"三步走"流水线。

第一步:挑帧。视频每秒有几十帧画面,但字幕通常好几秒才换一行。VSE 不会傻乎乎地把每一帧都拿去识别,而是按你设置的频率抽帧(backend/config.py里的ExtractFrequency,默认每秒抓 3 帧),把"有字幕变化的瞬间"尽量捕捉到,既省算力又不漏字幕。

第二步:定位。抽出来的帧进入文本检测环节,由backend/tools/subtitle_detect.py里的检测模型找出画面中"哪里像文字"。这一步相当于给文字区域画一个绿色框,你可以在运行界面里亲眼看到这个框选过程。用户手动圈定的字幕区域(backend/bean/subtitle_area.py里的SubtitleArea)会帮它排除掉水印、台标这些干扰。

第三步:认字。框出来的文字区域交给backend/tools/ocr.py里的 PaddleOCR 识别引擎"念"出内容,再经过backend/tools/reformat.py做后处理:把连在一起的英文单词切分开、去掉重复字幕行、按帧号对齐时间轴,最终生成 srt 文件。你可以把这三步理解成:先翻书(挑帧)、再圈重点(检测)、最后抄写(OCR)

说完了原理,接下来看它在一个真实任务里能产出什么。

实战案例:把一部外语剧变成双语学习笔记

目标:把一段日剧视频的字幕提取出来,整理成可用于跟读学习的文本。

操作步骤:

  1. 把视频文件放到纯英文路径下,例如D:/videos/anime_ep01.mp4(原因见下文避坑指南)。
  2. 打开 GUI,选择视频,将字幕框拖到画面下方字幕出现的区域。
  3. 右侧"视频字幕的语言"选"日本語",识别模式选"快速"。
  4. 打开"生成TXT文本字幕"开关,点运行。

前后对比:运行前你只有一段无法复制、无法搜索的视频;运行后你会得到xxx.srt(带时间轴的完整字幕)和xxx.txt(纯文本台词),可以直接导入笔记软件做生词标注。

效果评价:官方演示数据里,一段 3597 帧、帧率约 30 的视频在快速模式下约 40 秒完成处理(demo 截图右上角日志可见),这个速度对日常学习完全够用。如果识别出现个别错别字,别急着换工具——编辑backend/configs/typoMap.json,把常见的识别错误映射进去,例如"l'm": "I'm""威筋": "威胁",之后每次提取都会自动纠正。

避坑指南:新手最容易卡住的 4 个问题

Q1:为什么我运行后没有任何输出?八成是环境问题。先确认你的 CUDA 版本和显卡驱动匹配(NVIDIA 官网可查显卡支持的 CUDA 版本),再确认 PaddlePaddle 装的是 GPU 版而非 CPU 版。命令python -c "import paddle; print(paddle.is_compiled_with_cuda())"可以一键验证。

Q2:视频和代码路径不能有中文和空格,是真的吗?是真的,这是项目文档里明确标注的硬性要求。D:\下载\vse\运行程序.exeE:\study\sanshang youya.mp4这类路径都可能触发编码相关未知错误。先把所有文件挪到纯英文路径下再运行,能省掉 80% 的排查时间。

Q3:为什么快速模式会丢字幕轴?因为快速模式是跳帧采样的,字幕刚好在采样间隙内一闪而过就可能漏掉。解决办法很直接:先试试自动模式(GPU 下会自动换用大模型),仍然缺失严重再上精准模式。

Q4:批量提取时有什么要注意的?批量提取时,确保所有视频的分辨率和字幕区域一致。比如统一是 1080p、字幕都在底部,否则框选区域对不上,提取质量会大打折扣。

进阶调优:不同场景下的推荐配置

VSE 的参数都集中在backend/config.py,调整后立即生效。下面这张对比表帮你理解"参数之间如何取舍":

你的场景推荐配置取舍逻辑
追求最快出稿、预览够用快速模式 +ExtractFrequency=3少抽帧=少识别=快,接受少量漏字
追求准确率、GPU 闲置自动模式 +DropScore=75大模型保识别质量,置信度阈值兜底
显存紧张的小卡RecBatchNumber从 6 调到 2~3每批同时识别的文本框减少,显存占用下降
字幕轴错乱严重精准模式 + 关闭跳帧逐帧检测不丢字幕,代价是速度极慢

核心逻辑就一句话:速度、显存、准确率是三个互斥的旋钮,先明确你的优先级,再动参数。比如DropScore(置信度阈值,默认 75)调高会更严格地过滤低质量识别,但也可能把本来就模糊的字幕整行丢掉。

社区与贡献:怎么求助、怎么参与

  • 报 Bug 与提建议:项目在 Issues 和 Discussion 区长期开放,改进意见直接提即可;如果你在 Linux/macOS 上用了未测试的 ONNX 后端,记得在 Issues 里说明环境,便于维护者复现。
  • 开发者交流:官方维护有 QQ 交流群(295894827),新手遇到环境问题在群里求助通常比独自排查快得多。
  • 上手贡献:代码结构很清晰——backend/tools/下每个模块职责单一,想从subtitle_detect.py的文本检测或hardware_accelerator.py的硬件适配入手都比较友好;backend/interface/下的 ini 文件是各语言界面翻译,想做本地化贡献从这里改起门槛最低。
  • 联动生态:VSE 常与它的姊妹项目 video-subtitle-remover(VSR)配合使用,先用 VSE 提取字幕、再用 VSR 去除原硬字幕,实现"去水印+留外挂字幕"的完整工作流。

结语:你的下一步

一句话总结 VSE 的价值:把"字幕在画面里"变成"字幕在文件里",全程本地完成、隐私可控、零 API 成本。它可能不会比云端服务更聪明,但它足够快、足够透明,并且把选择权——识别模式、语言、硬件、纠错规则——全部交到了你手里。

现在你只需要做一件事:按上面的四步把它跑起来,拿test/目录里现成的测试视频(test_cn.mp4test_en.mp4test_japan.mp4等十几个样本)试一次,亲眼看看字幕从画面变成 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询