智谱AI免费glm-4v-flash模型用来做硬字幕识别

gvs.gif
智谱 AI 的 glm-4v-flash 模型不仅免费(仅限制调用频率,不限制次数),而且具备强大的图像理解能力,可以作为 OCR 工具使用。虽然目前仅支持中英文识别,但对于大多数场景已经足够。

基于此开发了一个硬字幕提取软件

使用步骤:

  1. 下载解压: 下载软件压缩包,解压后双击 app.exe 即可运行。
  2. 选择视频: 点击软件界面上方的按钮,选择需要提取字幕的视频文件,请确保视频中存在硬字幕。
  3. 选择字幕位置: 选择字幕在视频中的位置,默认是“底部”,您也可以选择“顶部”、“中间”或“全部”区域。
  4. 填写 API Key: 填写您在智谱 AI 平台获取的 API Key。您可以免费注册并获取 API Key: 智谱AI开放平台
  5. 选择模型: 目前仅支持 GLM-4V-FLASH 模型(免费),其他模型均为付费使用。
  6. 开始提取: 点击“开始”按钮,软件下方文本框会显示进度和日志信息。提取完成后,会在视频文件所在目录生成同名的 SRT 字幕文件。

下载地址 (590MB)

百度网盘下载: https://pan.baidu.com/s/1of657WTHJ1dnQ4_mZ84e0A?pwd=s6mm

Github下载: https://github.com/jianchang512/stt/releases/download/0.0/GVS-0.1.7z

技术原理

  1. 视频切帧: 首先,使用 FFmpeg 工具将视频按 1 秒间隔切分为图像帧。选择 1 秒间隔而非逐帧提取,一方面可以大幅减少需识别的图像数量,另一方面考虑到字幕通常持续时间不会低于 1 秒,过多的帧数也会增加去重的难度。
  2. OCR 识别: 将切分后的图像帧发送给智谱 AI 的 GLM-4V-FLASH 模型,进行 OCR 识别,提取图像中的文字。
  3. 字幕去重: 由于连续的图像帧可能包含相同的字幕内容,为了避免重复,我们使用 sentence-transformers 模型计算当前识别出的字幕与前一句字幕的相似度。如果相似度超过 60%,则认为两条字幕内容相同,进行去重。
  4. 生成字幕文件: 最后,将去重后的字幕文本按照对应的时间戳进行拼接,并保存为 SRT 格式的字幕文件。

本地识别也搞起来吧,我这3080,1080p png不到2秒,360p只需要0.8秒

与OCR方案有啥优势?还是只能应对单个字幕的情况吧,也不能把样式也复原吧…

我希望能实现简单ass字幕(含屏幕字注释)的生成…

不错不错,以前一直在用video-subtitle-extractor(也是github上的)做硬字幕提取,但时间比较长,
现在有新的工具可以试试看了。

提一个小小的建议,关于字幕的位置,能否弄一个可选择上下左右和大小的框,以便精确定位?

这不带模型咋这么大

有一个模型,用于文字相似度判断的,1s截一张图,肯定有非常多重复但又有细微差别的的字幕,尤其是字幕渐隐渐现时

能支持本地么:joy:

本地的大模型么,例如ollama搭建的?这个后边可以增加,不过本地受限于显卡,效果应该不怎么好。

如果是本地的OCR模型,例如百度飞桨的,这个不打算加,体积庞大、部署困难,也有据此实现的开源项目 video-subtitle-extractor

对呀,开个接口,直接填就行嘛

本地的话你会发现还不如ocr后trans的方案呢,当然也可以用API或者本地提取字幕后大模型trans,这样成本更可控

在测试“我不想活了”!是什么逼得一位少女绝望高呼?(答案请看简介).mp4”时遇到了【字幕画面不同步、字幕缺漏、政治敏感提示等问题】